diff --git a/start-aivideo.bat b/start-aivideo.bat index 4a29a00..ff5173a 100644 --- a/start-aivideo.bat +++ b/start-aivideo.bat @@ -2,37 +2,12 @@ setlocal set "ROOT=%~dp0" +set "BACKEND_DIR=%ROOT%backend" +set "VENV_PYTHON=%BACKEND_DIR%\.venv\Scripts\python.exe" +set "SOURCE_BACKEND_ENV=set DATABASE_URL=sqlite:///./aivideo.sqlite3 && set CELERY_TASK_ALWAYS_EAGER=true && set STORAGE_PROVIDER=local && set LOCAL_STORAGE_PATH=storage_data && set STORAGE_PUBLIC_BASE_URL=http://127.0.0.1:8000/storage" cd /d "%ROOT%" -echo [1/6] Checking Docker... -set "DOCKER_EXE=" -set "DOCKER_DESKTOP_EXE=" -call :resolve_docker - -if not defined DOCKER_EXE ( - echo Docker CLI was not found. - echo Install Docker Desktop, or add docker.exe to PATH, then rerun this script. - pause - exit /b 1 -) - -call :ensure_docker_ready -if errorlevel 1 exit /b 1 - -echo [2/6] Starting mysql, redis and minio... -call "%DOCKER_EXE%" compose up -d mysql redis minio -if errorlevel 1 ( - echo Failed to start docker services. - pause - exit /b 1 -) - -if not exist "%ROOT%backend\.env" ( - echo Missing backend\.env - pause - exit /b 1 -) - +echo [1/6] Checking Python... set "PYTHON_CMD=" where py >nul 2>nul if not errorlevel 1 set "PYTHON_CMD=py -3" @@ -48,24 +23,42 @@ if not defined PYTHON_CMD ( exit /b 1 ) -if not exist "%ROOT%backend\.venv\Scripts\python.exe" ( - echo [3/6] Creating backend virtual environment... - call %PYTHON_CMD% -m venv "%ROOT%backend\.venv" +echo [2/6] Checking npm... +where npm >nul 2>nul +if errorlevel 1 ( + echo npm was not found in PATH. + echo Install Node.js, then rerun this script. + pause + exit /b 1 +) + +echo [3/6] Checking backend environment... +if exist "%BACKEND_DIR%\.env" ( + echo Found backend\.env. + echo Source mode will still prefer local SQLite and local storage for one-click startup. +) else ( + echo backend\.env was not found. + echo The backend will start with built-in defaults ^(SQLite, local storage, mock task flow^). +) + +if not exist "%VENV_PYTHON%" ( + echo [4/6] Creating backend virtual environment... + call %PYTHON_CMD% -m venv "%BACKEND_DIR%\.venv" if errorlevel 1 ( echo Failed to create backend virtual environment. pause exit /b 1 ) - echo [4/6] Installing backend dependencies... - call "%ROOT%backend\.venv\Scripts\python.exe" -m pip install --disable-pip-version-check -r "%ROOT%backend\requirements.txt" + echo Installing backend dependencies... + call "%VENV_PYTHON%" -m pip install --disable-pip-version-check -r "%BACKEND_DIR%\requirements.txt" if errorlevel 1 ( echo Failed to install backend dependencies. pause exit /b 1 ) ) else ( - echo [3/6] Backend virtual environment already exists. + echo [4/6] Backend virtual environment already exists. ) if not exist "%ROOT%node_modules" ( @@ -81,7 +74,7 @@ if not exist "%ROOT%node_modules" ( ) echo [6/6] Starting backend and unified frontend... -start "AIVideo Backend" cmd /k "cd /d ""%ROOT%backend"" && ""%ROOT%backend\.venv\Scripts\python.exe"" -m uvicorn app.main:app --reload --host 0.0.0.0 --port 8000" +start "AIVideo Backend" cmd /k "cd /d ""%BACKEND_DIR%"" && %SOURCE_BACKEND_ENV% && ""%VENV_PYTHON%"" -m uvicorn app.main:app --reload --host 0.0.0.0 --port 8000" start "AIVideo Frontend" cmd /k "cd /d ""%ROOT%"" && npm run dev" echo. @@ -91,73 +84,3 @@ echo API: http://localhost:8000 echo. echo Two windows have been opened for backend and frontend. pause -goto :eof - -:resolve_docker -for /f "delims=" %%I in ('where docker 2^>nul') do ( - if not defined DOCKER_EXE set "DOCKER_EXE=%%~fI" -) - -if defined DOCKER_EXE goto resolve_desktop - -for %%I in ( - "%ProgramFiles%\Docker\Docker\resources\bin\docker.exe" - "%ProgramFiles%\Docker\Docker\resources\bin\com.docker.cli.exe" - "%ProgramW6432%\Docker\Docker\resources\bin\docker.exe" - "%ProgramW6432%\Docker\Docker\resources\bin\com.docker.cli.exe" - "%LocalAppData%\Programs\Docker\Docker\resources\bin\docker.exe" - "%LocalAppData%\Programs\Docker\Docker\resources\bin\com.docker.cli.exe" -) do ( - if exist "%%~fI" ( - set "DOCKER_EXE=%%~fI" - goto resolve_desktop - ) -) - -:resolve_desktop -for %%I in ( - "%ProgramFiles%\Docker\Docker\Docker Desktop.exe" - "%ProgramW6432%\Docker\Docker\Docker Desktop.exe" - "%LocalAppData%\Programs\Docker\Docker\Docker Desktop.exe" -) do ( - if exist "%%~fI" ( - set "DOCKER_DESKTOP_EXE=%%~fI" - goto :eof - ) -) - -goto :eof - -:ensure_docker_ready -call "%DOCKER_EXE%" info >nul 2>nul -if not errorlevel 1 exit /b 0 - -if defined DOCKER_DESKTOP_EXE ( - echo Docker Desktop is installed but not ready. Starting it now... - start "" "%DOCKER_DESKTOP_EXE%" - call :wait_for_docker 60 - if not errorlevel 1 exit /b 0 - - echo Docker Desktop did not become ready in time. - echo Wait for Docker Desktop to finish starting, then rerun this script. - pause - exit /b 1 -) - -echo Docker CLI was found, but the Docker engine is not ready. -echo Start Docker Desktop or Docker Engine, then rerun this script. -pause -exit /b 1 - -:wait_for_docker -set "DOCKER_WAIT_REMAINING=%~1" -if not defined DOCKER_WAIT_REMAINING set "DOCKER_WAIT_REMAINING=60" - -:wait_for_docker_loop -call "%DOCKER_EXE%" info >nul 2>nul -if not errorlevel 1 exit /b 0 -if %DOCKER_WAIT_REMAINING% LEQ 0 exit /b 1 - -timeout /t 2 /nobreak >nul -set /a DOCKER_WAIT_REMAINING-=2 -goto wait_for_docker_loop