/
gr.ev.vl
/
ReviewFlow
Обзор
Документация
Войти
/
gr.ev.vl
/
ReviewFlow
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
batch_init_folder.bat
1 041 строка
32 KB
gr.ev.vl
jr
27 май 2026, 23:50
27 май 2026, 23:50
1c14da5
Код
Авторство
О чём код?
@echo off chcp 65001 >nul setlocal EnableDelayedExpansion :: ============================================================ :: ReviewFlow v4.1 — Master Deployer (uv edition) :: Создаёт структуру проекта, все скрипты и запускает развёртывание :: ============================================================ title ReviewFlow Master Deployer (uv) :: ============================================================ :: НАСТРОЙКИ (измените при необходимости) :: ============================================================ set "PROJECT_ROOT=E:\_GEV\_My_project\ReviewFlow\" set "GIT_REPO=https://gitverse.ru/gr.ev.vl/reviewflow.git" set "GIT_BRANCH=main" :: Порты set "API_PORT=8000" set "FRONTEND_PORT=3000" set "POSTGRES_PORT=5432" set "REDIS_PORT=6379" set "OLLAMA_PORT=11434" set "MINIO_PORT=9000" set "MINIO_CONSOLE_PORT=9001" set "FLOWER_PORT=5555" :: Доступы set "DB_USER=reviewflow" set "DB_PASSWORD=reviewflow" set "DB_NAME=reviewflow" set "MINIO_USER=minioadmin" set "MINIO_PASSWORD=minioadmin" :: ============================================================ :: ПРОВЕРКА ПРАВ АДМИНИСТРАТОРА :: ============================================================ net session >nul 2>&1 if %errorlevel% neq 0 ( echo [ПРЕДУПРЕЖДЕНИЕ] Для полной функциональности запустите от имени Администратора. echo. ) :: ============================================================ :: СОЗДАНИЕ ПАПКИ ПРОЕКТА :: ============================================================ if not exist "%PROJECT_ROOT%" mkdir "%PROJECT_ROOT%" if not exist "%PROJECT_ROOT%\scripts" mkdir "%PROJECT_ROOT%\scripts" cd /d "%PROJECT_ROOT%" :: ============================================================ :: ГЛАВНОЕ МЕНЮ :: ============================================================ :main_menu cls echo ================================================================ echo ReviewFlow v4.1 — Master Deployer (uv) echo ================================================================ echo. echo Проект: %PROJECT_ROOT% echo. echo ================================================================ echo ВЫБЕРИТЕ ДЕЙСТВИЕ: echo ================================================================ echo. echo РАЗВЁРТЫВАНИЕ: echo 1. Полное развёртывание (структура + зависимости + git) echo 2. Только создать структуру папок echo 3. Только установить uv и зависимости echo. echo КОМПОНЕНТЫ: echo 4. Установить Ollama и модели echo 5. Настроить базу данных (PostgreSQL + Redis) echo 6. Настроить NPU Intel Core Ultra echo. echo СКРИПТЫ: echo 7. Создать скрипт запуска бэкенда echo 8. Создать скрипт запуска всего проекта echo 9. Создать скрипт тестирования echo 10. Создать скрипт синхронизации с GitVerse echo 11. Создать все скрипты и конфигурационные файлы echo. echo ДОПОЛНИТЕЛЬНО: echo 12. Открыть папку проекта echo 13. Показать справку по uv echo 0. Выход echo. set /p choice="Ваш выбор: " if "%choice%"=="1" goto full_deploy if "%choice%"=="2" goto create_structure if "%choice%"=="3" goto install_deps if "%choice%"=="4" goto setup_ollama if "%choice%"=="5" goto setup_database if "%choice%"=="6" goto setup_npu if "%choice%"=="7" goto create_backend_script if "%choice%"=="8" goto create_start_all_script if "%choice%"=="9" goto create_test_script if "%choice%"=="10" goto create_sync_script if "%choice%"=="11" goto create_all_scripts if "%choice%"=="12" goto open_folder if "%choice%"=="13" goto show_uv_help if "%choice%"=="0" goto end echo Неверный выбор. Попробуйте снова. timeout /t 2 >nul goto main_menu :: ============================================================ :: 1. ПОЛНОЕ РАЗВЁРТЫВАНИЕ :: ============================================================ :full_deploy echo. echo ================================================================ echo ПОЛНОЕ РАЗВЁРТЫВАНИЕ echo ================================================================ echo. echo [Шаг 1/6] Создание структуры папок... call :create_structure_silent echo [OK] echo [Шаг 2/6] Создание конфигурационных файлов... call :create_all_configs_silent echo [OK] echo [Шаг 3/6] Установка uv... call :install_uv echo [OK] echo [Шаг 4/6] Установка Python-зависимостей... call :install_python_deps echo [OK] echo [Шаг 5/6] Установка spacy-модели... uv run python -m spacy download ru_core_news_lg 2>nul echo [OK] echo [Шаг 6/6] Инициализация Git... call :init_git echo [OK] echo. echo ================================================================ echo РАЗВЁРТЫВАНИЕ ЗАВЕРШЕНО! echo ================================================================ echo. echo Доступные команды: echo uv run uvicorn reviewflow.main:app --reload — запуск бэкенда echo uv run pytest tests/ -v — запуск тестов echo scripts\start_all.cmd — полный запуск echo. pause goto main_menu :: ============================================================ :: 2. СТРУКТУРА ПАПОК :: ============================================================ :create_structure echo. echo ================================================================ echo СОЗДАНИЕ СТРУКТУРЫ ПАПОК echo ================================================================ call :create_structure_silent echo [OK] Структура папок создана echo. pause goto main_menu :create_structure_silent for %%d in ( "src\reviewflow" "src\reviewflow\api\documents" "src\reviewflow\api\checks" "src\reviewflow\api\operator" "src\reviewflow\api\settings" "src\reviewflow\api\export" "src\reviewflow\api\monitoring" "src\reviewflow\api\admin" "src\reviewflow\services\document" "src\reviewflow\services\pipeline" "src\reviewflow\services\aggregation" "src\reviewflow\services\export" "src\reviewflow\services\settings" "src\reviewflow\services\monitoring" "src\reviewflow\domain\document" "src\reviewflow\domain\error_card" "src\reviewflow\domain\models\providers" "src\reviewflow\domain\checks\parser" "src\reviewflow\domain\checks\structure" "src\reviewflow\domain\checks\language" "src\reviewflow\domain\checks\logic" "src\reviewflow\domain\checks\figures" "src\reviewflow\domain\checks\equations" "src\reviewflow\domain\checks\bibliography" "src\reviewflow\infrastructure\database\migrations\versions" "src\reviewflow\infrastructure\database\models" "src\reviewflow\infrastructure\database\repositories" "src\reviewflow\infrastructure\storage" "src\reviewflow\infrastructure\cache" "src\reviewflow\infrastructure\celery_app\tasks" "src\reviewflow\infrastructure\websocket" "src\reviewflow\infrastructure\logging" "src\reviewflow\infrastructure\npu" "tests\fixtures\documents\expected" "tests\fixtures\images" "tests\unit\domain\parser" "tests\unit\domain\structure" "tests\unit\domain\language" "tests\unit\domain\logic" "tests\unit\domain\figures" "tests\unit\domain\equations" "tests\unit\domain\bibliography" "tests\unit\domain\models" "tests\unit\services" "tests\unit\infrastructure" "tests\integration" "tests\e2e" "tests\performance" "frontend\src\pages" "frontend\src\components\Dashboard" "frontend\src\components\Review" "frontend\src\components\Settings" "frontend\src\components\Monitoring" "frontend\src\components\Common" "frontend\src\hooks" "frontend\src\services" "frontend\src\store" "frontend\src\types" "frontend\public" "scripts" "data" "docs" "deployments" ".github\workflows" ) do ( if not exist "%%~d" mkdir "%%~d" 2>nul ) pause :: Создание пустых __init__.py for /r "%PROJECT_ROOT%\src\reviewflow" %%f in (.) do ( if exist "%%f" if not exist "%%f\__init__.py" ( type nul > "%%f\__init__.py" ::2>nul echo %errorlevel% ) echo %errorlevel% ) pause for /r "%PROJECT_ROOT%\tests" %%f in (.) do ( if exist "%%f" if not exist "%%f\__init__.py" ( type nul > "%%f\__init__.py" ::2>nul echo %errorlevel% ) echo %errorlevel% ) pause exit /b :: ============================================================ :: 3. УСТАНОВКА UV И ЗАВИСИМОСТЕЙ :: ============================================================ :install_deps echo. echo ================================================================ echo УСТАНОВКА UV И ЗАВИСИМОСТЕЙ echo ================================================================ echo. call :install_uv echo. call :install_python_deps echo. echo Установка spacy-модели... uv run python -m spacy download ru_core_news_lg 2>nul echo [OK] Зависимости установлены echo. pause goto main_menu :install_uv where uv >nul 2>&1 if %errorlevel% equ 0 ( echo [OK] uv уже установлен uv --version pause exit /b ) echo Установка uv... powershell -Command "& {Invoke-WebRequest -Uri 'https://github.com/astral-sh/uv/releases/latest/download/uv-x86_64-pc-windows-msvc.zip' -OutFile '$env:TEMP\uv.zip'; Expand-Archive '$env:TEMP\uv.zip' -DestinationPath '$env:TEMP\uv'; $dest = [Environment]::GetFolderPath('LocalApplicationData') + '\Programs\uv'; if (!(Test-Path $dest)) { New-Item -ItemType Directory -Path $dest -Force }; Copy-Item '$env:TEMP\uv\uv.exe' -Destination $dest -Force}" :: Добавление в PATH текущей сессии set "PATH=%LOCALAPPDATA%\Programs\uv;%PATH%" :: Постоянное добавление в PATH setx PATH "%LOCALAPPDATA%\Programs\uv;%PATH%" >nul 2>&1 echo [OK] uv установлен uv --version pause exit /b :install_python_deps cd /d "%PROJECT_ROOT%" :: Проверка наличия pyproject.toml if not exist "pyproject.toml" ( echo [ПРЕДУПРЕЖДЕНИЕ] pyproject.toml не найден. Создайте сначала конфигурационные файлы. pause exit /b ) echo Синхронизация зависимостей... uv sync --dev if %errorlevel% equ 0 ( echo [OK] Зависимости установлены ) else ( echo [ОШИБКА] Не удалось установить зависимости ) pause exit /b :: ============================================================ :: 4. OLLAMA :: ============================================================ :setup_ollama echo. echo ================================================================ echo НАСТРОЙКА OLLAMA echo ================================================================ echo. where ollama >nul 2>&1 if %errorlevel% neq 0 ( echo [ИНФО] Ollama не найден echo Скачайте с https://ollama.com и запустите скрипт снова. pause goto main_menu ) :: Проверка запуска curl -s http://localhost:11434/api/tags >nul 2>&1 if %errorlevel% neq 0 ( start "" "ollama" serve timeout /t 5 /nobreak >nul ) echo Доступные модели: ollama list echo. echo Установить рекомендуемые модели? echo vikhr:7b (~4.5 GB) — Русский язык echo qwen2.5:14b (~8.5 GB) — Логика echo deepseek-r1:14b (~9.0 GB) — Рассуждения echo cogvlm:17b (~10 GB) — Рисунки echo saiga:7b (~4.1 GB) — Русский (резерв) echo gemma2:9b (~5.5 GB) — Универсальная echo llava:13b (~7.5 GB) — Рисунки (резерв) echo. echo 1. Все модели (~50 GB) echo 2. Основные (vikhr + qwen + deepseek) (~22 GB) echo 3. Лёгкие (vikhr + saiga) (~9 GB) echo 0. Пропустить echo. set /p ollama_choice="Ваш выбор: " if "%ollama_choice%"=="1" ( call :pull_model vikhr:7b call :pull_model qwen2.5:14b call :pull_model deepseek-r1:14b call :pull_model cogvlm:17b call :pull_model saiga:7b call :pull_model gemma2:9b call :pull_model llava:13b ) if "%ollama_choice%"=="2" ( call :pull_model vikhr:7b call :pull_model qwen2.5:14b call :pull_model deepseek-r1:14b ) if "%ollama_choice%"=="3" ( call :pull_model vikhr:7b call :pull_model saiga:7b ) echo. pause goto main_menu :pull_model echo Установка %~1... ollama pull %~1 if %errorlevel% equ 0 (echo [OK] %~1) else (echo [ОШИБКА] %~1) pause exit /b :: ============================================================ :: 5. БАЗА ДАННЫХ :: ============================================================ :setup_database echo. echo ================================================================ echo НАСТРОЙКА БАЗЫ ДАННЫХ echo ================================================================ echo. echo 1. Установить PostgreSQL echo 2. Установить Redis echo 3. Создать базу данных и пользователя echo 4. Применить миграции echo 5. Проверить подключение echo 0. Назад echo. set /p db_choice="Ваш выбор: " if "%db_choice%"=="1" ( echo Открытие страницы загрузки PostgreSQL... start https://www.enterprisedb.com/downloads/postgres-postgresql-downloads echo После установки создайте пользователя и базу данных. ) if "%db_choice%"=="2" ( echo Открытие страницы загрузки Memurai (Redis для Windows)... start https://www.memurai.com/get-memurai ) if "%db_choice%"=="3" ( call :create_database ) if "%db_choice%"=="4" ( cd /d "%PROJECT_ROOT%" uv run alembic upgrade head if %errorlevel% equ 0 (echo [OK] Миграции применены) else (echo [ОШИБКА]) ) if "%db_choice%"=="5" ( call :test_db_connection ) if "%db_choice%"=="0" goto main_menu echo. pause goto setup_database :create_database set "PSQL=" where psql >nul 2>&1 if %errorlevel% equ 0 ( for /f "delims=" %%i in ('where psql') do set "PSQL=%%i" ) if "%PSQL%"=="" ( echo [ОШИБКА] PostgreSQL не найден. Установите сначала. pause exit /b ) echo Создание пользователя %DB_USER%... echo CREATE USER %DB_USER% WITH PASSWORD '%DB_PASSWORD%'; | "%PSQL%" -U postgres -p %POSTGRES_PORT% 2>nul echo Создание базы данных %DB_NAME%... echo CREATE DATABASE %DB_NAME% OWNER %DB_USER%; | "%PSQL%" -U postgres -p %POSTGRES_PORT% 2>nul echo GRANT ALL PRIVILEGES ON DATABASE %DB_NAME% TO %DB_USER%; | "%PSQL%" -U postgres -p %POSTGRES_PORT% 2>nul echo [OK] База данных создана pause exit /b :test_db_connection echo Проверка PostgreSQL... set "PGPASSWORD=%DB_PASSWORD%" echo SELECT 'PostgreSQL OK', version(); | psql -U %DB_USER% -d %DB_NAME% -h localhost -p %POSTGRES_PORT% 2>nul set "PGPASSWORD=" if %errorlevel% equ 0 (echo [OK] PostgreSQL доступен) else (echo [ОШИБКА] PostgreSQL недоступен) echo. echo Проверка Redis... echo PING | redis-cli 2>nul | findstr "PONG" >nul if %errorlevel% equ 0 (echo [OK] Redis доступен) else (echo [ОШИБКА] Redis недоступен) pause exit /b :: ============================================================ :: 6. NPU INTEL CORE ULTRA :: ============================================================ :setup_npu echo. echo ================================================================ echo НАСТРОЙКА NPU INTEL CORE ULTRA echo ================================================================ echo. echo Проверка NPU... uv run python -c "from reviewflow.infrastructure.npu.detector import NPUDetector; print(f'NPU доступен: {NPUDetector.is_npu_available()}'); print(f'Ускорители: {NPUDetector.get_available_accelerators()}')" 2>nul if %errorlevel% neq 0 ( echo. echo [ИНФО] OpenVINO не установлен. Установите зависимости: echo uv sync --extra npu echo. echo Или установите вручную: echo pip install openvino optimum[openvino] ) echo. echo 1. Установить OpenVINO для NPU echo 2. Скачать драйвер NPU (Intel сайт) echo 3. Применить настройки окружения NPU echo 0. Назад echo. set /p npu_choice="Ваш выбор: " if "%npu_choice%"=="1" ( cd /d "%PROJECT_ROOT%" uv sync --extra npu echo [OK] OpenVINO установлен ) if "%npu_choice%"=="2" ( start https://www.intel.com/content/www/us/en/download/794734/intel-npu-driver-windows.html ) if "%npu_choice%"=="3" ( setx OLLAMA_DEVICE "npu" >nul setx OLLAMA_NPU_ENABLED "1" >nul setx OLLAMA_GPU_LAYERS "20" >nul setx OPENVINO_DEVICE "NPU" >nul echo [OK] Настройки применены ) if "%npu_choice%"=="0" goto main_menu echo. pause goto setup_npu :: ============================================================ :: 7. СОЗДАНИЕ СКРИПТА ЗАПУСКА БЭКЕНДА :: ============================================================ :create_backend_script call :create_backend_script_silent echo [OK] Скрипт создан: scripts\start_backend.cmd echo. pause goto main_menu :create_backend_script_silent ( echo @echo off echo chcp 65001 ^>nul echo cd /d "%PROJECT_ROOT%" echo echo Запуск бэкенда ReviewFlow... echo uv run uvicorn reviewflow.main:app --reload --host 0.0.0.0 --port %API_PORT% echo pause ) > "%PROJECT_ROOT%\scripts\start_backend.cmd" pause exit /b :: ============================================================ :: 8. СОЗДАНИЕ СКРИПТА ПОЛНОГО ЗАПУСКА :: ============================================================ :create_start_all_script call :create_start_all_script_silent echo [OK] Скрипт создан: scripts\start_all.cmd echo. pause goto main_menu :create_start_all_script_silent ( echo @echo off echo chcp 65001 ^>nul echo. echo echo ================================================================ echo echo Запуск ReviewFlow echo echo ================================================================ echo echo. echo. echo :: Проверка Ollama echo curl -s http://localhost:11434/api/tags ^>nul 2^>^&1 echo if %%errorlevel%% neq 0 ^( echo echo Запуск Ollama... echo start "" "ollama" serve echo timeout /t 5 /nobreak ^>nul echo ^) echo. echo :: Бэкенд echo echo Запуск бэкенда... echo start "ReviewFlow Backend" cmd /c "cd /d %PROJECT_ROOT% ^&^& uv run uvicorn reviewflow.main:app --reload --host 0.0.0.0 --port %API_PORT%" echo. echo :: Celery worker echo echo Запуск Celery worker... echo start "ReviewFlow Worker" cmd /c "cd /d %PROJECT_ROOT% ^&^& uv run celery -A reviewflow.infrastructure.celery_app.app worker -l info -c 4" echo. echo :: Ожидание и открытие браузера echo timeout /t 5 /nobreak ^>nul echo start http://localhost:%API_PORT%/docs echo. echo echo ================================================================ echo echo ReviewFlow запущен! echo echo API: http://localhost:%API_PORT% echo echo Docs: http://localhost:%API_PORT%/docs echo echo ================================================================ echo pause ) > "%PROJECT_ROOT%\scripts\start_all.cmd" pause exit /b :: ============================================================ :: 9. СОЗДАНИЕ СКРИПТА ТЕСТИРОВАНИЯ :: ============================================================ :create_test_script call :create_test_script_silent echo [OK] Скрипт создан: scripts\run_tests.cmd echo. pause goto main_menu :create_test_script_silent ( echo @echo off echo chcp 65001 ^>nul echo cd /d "%PROJECT_ROOT%" echo. echo :menu echo ======================================== echo Тесты ReviewFlow echo ======================================== echo 1. Все тесты echo 2. Unit-тесты echo 3. Интеграционные тесты echo 4. С отчётом о покрытии echo 5. Конкретный модуль echo 0. Выход echo. echo set /p choice="Ваш выбор: " echo. echo if "%%choice%%"=="1" uv run pytest tests/ -v echo if "%%choice%%"=="2" uv run pytest tests/unit/ -v echo if "%%choice%%"=="3" uv run pytest tests/integration/ -v echo if "%%choice%%"=="4" uv run pytest tests/ -v --cov --cov-report=html ^&^& echo Отчёт: htmlcov/index.html echo if "%%choice%%"=="5" ^( echo set /p module="Путь к модулю: " echo uv run pytest %%module%% -v echo ^) echo if "%%choice%%"=="0" exit /b echo. echo pause echo goto menu ) > "%PROJECT_ROOT%\scripts\run_tests.cmd" pause exit /b :: ============================================================ :: 10. СОЗДАНИЕ СКРИПТА СИНХРОНИЗАЦИИ :: ============================================================ :create_sync_script call :create_sync_script_silent echo [OK] Скрипт создан: scripts\push_to_gitverse.cmd echo. pause goto main_menu :create_sync_script_silent ( echo @echo off echo chcp 65001 ^>nul echo cd /d "%PROJECT_ROOT%" echo. echo echo ================================================================ echo echo Синхронизация с GitVerse echo echo ================================================================ echo echo. echo. echo git status echo echo. echo set /p msg="Сообщение коммита (Enter для авто): " echo if "%%msg%%"=="" set "msg=Update: %%date%% %%time%%" echo. echo git add . echo git commit -m "%%msg%%" echo git push origin %GIT_BRANCH% echo. echo if %%errorlevel%% equ 0 ^( echo echo [OK] Изменения отправлены echo ^) else ^( echo echo [ОШИБКА] Не удалось отправить echo ^) echo pause ) > "%PROJECT_ROOT%\scripts\push_to_gitverse.cmd" pause exit /b :: ============================================================ :: 11. СОЗДАНИЕ ВСЕХ КОНФИГУРАЦИОННЫХ ФАЙЛОВ :: ============================================================ :create_all_scripts echo. echo ================================================================ echo СОЗДАНИЕ ВСЕХ КОНФИГУРАЦИОННЫХ ФАЙЛОВ echo ================================================================ call :create_all_configs_silent echo [OK] Все файлы созданы echo. pause goto main_menu :create_all_configs_silent call :create_pyproject call :create_env_file call :create_gitignore_file call :create_docker_compose call :create_makefile call :create_readme call :create_backend_script_silent call :create_start_all_script_silent call :create_test_script_silent call :create_sync_script_silent pause exit /b :: ============================================================ :: ГЕНЕРАТОРЫ ФАЙЛОВ :: ============================================================ :create_pyproject ( echo [project] echo name = "reviewflow" echo version = "4.1.0" echo description = "Semi-automatic scientific report review system" echo readme = "README.md" echo license = {text = "MIT"} echo requires-python = ">=3.11" echo authors = [{name = "ReviewFlow Team"}] echo. echo dependencies = [ echo "fastapi>=0.115.0,<0.120.0", echo "uvicorn[standard]>=0.30.0,<0.35.0", echo "python-multipart>=0.0.9", echo "websockets>=12.0", echo "sqlalchemy[asyncio]>=2.0.30,<3.0.0", echo "asyncpg>=0.29.0", echo "alembic>=1.13.0", echo "celery[redis]>=5.4.0", echo "redis>=5.0.0,<6.0.0", echo "python-docx>=1.1.2", echo "PyMuPDF>=1.24.0", echo "Pillow>=10.3.0", echo "spacy>=3.7.0,<4.0.0", echo "pymorphy3>=1.2.0", echo "language-tool-python>=2.8.0", echo "natasha>=1.6.0", echo "sentence-transformers>=3.0.0", echo "openai>=1.30.0", echo "aiohttp>=3.9.0", echo "opencv-python-headless>=4.9.0", echo "cairosvg>=2.7.0", echo "pygments>=2.18.0", echo "flake8>=7.1.0", echo "pydantic-settings>=2.3.0", echo "pyyaml>=6.0", echo "python-dateutil>=2.9.0", echo "orjson>=3.10.0", echo "tenacity>=8.5.0", echo "httpx>=0.27.0", echo "minio>=7.2.0", echo "python-jose[cryptography]>=3.3.0", echo "passlib[bcrypt]>=1.7.4", echo "prometheus-client>=0.20.0", echo ] echo. echo [project.optional-dependencies] echo npu = ["openvino>=2025.0.0", "optimum[openvino]>=1.20.0", "nncf>=2.14.0"] echo gpu = ["torch>=2.4.0", "intel-extension-for-pytorch>=2.4.0", "openvino>=2025.0.0"] echo intel = ["reviewflow[npu,gpu]", "onnxruntime-openvino>=1.19.0"] echo dev = ["pytest>=8.3.0", "pytest-asyncio>=0.23.0", "pytest-cov>=5.0.0", "pytest-mock>=3.14.0", "black>=24.0.0", "isort>=5.13.0", "ruff>=0.5.0", "mypy>=1.11.0"] echo test = ["httpx>=0.27.0", "locust>=2.31.0", "coverage>=7.6.0"] echo docs = ["mkdocs>=1.6.0", "mkdocs-material>=9.5.0", "mkdocstrings[python]>=0.25.0"] echo. echo [build-system] echo requires = ["hatchling"] echo build-backend = "hatchling.build" ) > "%PROJECT_ROOT%\pyproject.toml" pause exit /b :create_env_file ( echo APP_NAME=ReviewFlow echo APP_VERSION=4.1.0 echo DEBUG=true echo HOST=0.0.0.0 echo PORT=%API_PORT% echo DATABASE_URL=postgresql+asyncpg://%DB_USER%:%DB_PASSWORD%@localhost:%POSTGRES_PORT%/%DB_NAME% echo REDIS_URL=redis://localhost:%REDIS_PORT%/0 echo CELERY_BROKER_URL=redis://localhost:%REDIS_PORT%/1 echo CELERY_RESULT_BACKEND=redis://localhost:%REDIS_PORT%/2 echo OLLAMA_BASE_URL=http://localhost:%OLLAMA_PORT% echo MINIO_ENDPOINT=localhost:%MINIO_PORT% echo MINIO_ACCESS_KEY=%MINIO_USER% echo MINIO_SECRET_KEY=%MINIO_PASSWORD% echo MINIO_BUCKET=reviewflow echo DEFAULT_GRAMMAR_MODEL=vikhr:7b echo DEFAULT_LOGIC_MODEL=qwen2.5:14b echo DEFAULT_FIGURE_MODEL=cogvlm:17b echo MAX_UPLOAD_SIZE_MB=100 echo OPENVINO_DEVICE=NPU echo OLLAMA_DEVICE=npu echo OLLAMA_NPU_ENABLED=1 ) > "%PROJECT_ROOT%\.env" pause exit /b :create_gitignore_file ( echo __pycache__/ echo *.py[cod] echo .venv/ echo .env echo .idea/ echo .vscode/ echo .pytest_cache/ echo .coverage echo htmlcov/ echo dist/ echo build/ echo *.egg-info/ echo node_modules/ echo .DS_Store echo Thumbs.db echo logs/ echo *.log echo uv.lock echo data/uploads/* echo !data/uploads/.gitkeep ) > "%PROJECT_ROOT%\.gitignore" pause exit /b :create_docker_compose ( echo version: '3.8' echo. echo services: echo api: echo build: . echo ports: echo - "%API_PORT%:8000" echo environment: echo - DATABASE_URL=postgresql+asyncpg://${DB_USER:-%DB_USER%}:${DB_PASSWORD}@postgres:5432/${DB_NAME:-%DB_NAME%} echo - REDIS_URL=redis://redis:6379/0 echo - CELERY_BROKER_URL=redis://redis:6379/1 echo - OLLAMA_BASE_URL=http://ollama:11434 echo - OPENVINO_DEVICE=NPU echo - OLLAMA_DEVICE=npu echo depends_on: echo - postgres echo - redis echo. echo ollama: echo image: ollama/ollama:latest echo ports: echo - "%OLLAMA_PORT%:11434" echo environment: echo - OLLAMA_DEVICE=npu echo - OLLAMA_NPU_ENABLED=1 echo volumes: echo - ollama_data:/root/.ollama echo. echo postgres: echo image: postgres:16-alpine echo environment: echo POSTGRES_USER: ${DB_USER:-%DB_USER%} echo POSTGRES_PASSWORD: ${DB_PASSWORD} echo POSTGRES_DB: ${DB_NAME:-%DB_NAME%} echo ports: echo - "%POSTGRES_PORT%:5432" echo volumes: echo - postgres_data:/var/lib/postgresql/data echo. echo redis: echo image: redis:7-alpine echo ports: echo - "%REDIS_PORT%:6379" echo. echo volumes: echo postgres_data: echo ollama_data: ) > "%PROJECT_ROOT%\docker-compose.yml" exit /b :create_makefile ( echo .PHONY: install install-npu dev test lint clean echo. echo install: echo uv sync echo. echo install-npu: echo uv sync --extra npu echo. echo dev: echo uv run uvicorn reviewflow.main:app --reload --host 0.0.0.0 --port %API_PORT% echo. echo test: echo uv run pytest tests/ -v --cov --cov-report=html echo. echo lint: echo uv run ruff check . echo uv run black --check . echo. echo clean: echo find . -type d -name __pycache__ -exec rm -rf {} + echo rm -rf .coverage htmlcov/ ) > "%PROJECT_ROOT%\Makefile" exit /b :create_readme ( echo # ReviewFlow v4.1 echo. echo ## Быстрый старт echo. echo ```bash echo # Установка uv echo curl -LsSf https://astral.sh/uv/install.sh ^| sh echo. echo # Клонирование echo git clone %GIT_REPO% echo cd reviewflow echo. echo # Установка echo uv sync --dev echo uv run python -m spacy download ru_core_news_lg echo. echo # Запуск echo uv run uvicorn reviewflow.main:app --reload echo ``` echo. echo ## Структура проекта echo ```^ echo src/reviewflow/ echo ├── api/ # FastAPI роутеры echo ├── services/ # Сервисы echo ├── domain/ # Бизнес-логика echo │ ├── checks/ # 6 модулей проверки echo │ └── models/ # LLM-провайдеры echo └── infrastructure/ # БД, кэш, NPU echo ```^ echo. echo ## Поддержка NPU echo ```bash echo uv sync --extra npu echo uv run python -c "from reviewflow.infrastructure.npu.detector import NPUDetector; print(NPUDetector.is_npu_available())" echo ``` ) > "%PROJECT_ROOT%\README.md" exit /b :: ============================================================ :: 12. ОТКРЫТЬ ПАПКУ :: ============================================================ :open_folder explorer "%PROJECT_ROOT%" goto main_menu :: ============================================================ :: 13. СПРАВКА UV :: ============================================================ :show_uv_help echo. echo ================================================================ echo СПРАВКА ПО UV echo ================================================================ echo. echo Основные команды: echo uv sync — установить зависимости echo uv sync --dev — установить с dev-зависимостями echo uv sync --extra npu — установить с NPU-поддержкой echo uv add ПАКЕТ — добавить зависимость echo uv add --dev ПАКЕТ — добавить dev-зависимость echo uv remove ПАКЕТ — удалить зависимость echo uv run КОМАНДА — запустить в виртуальном окружении echo uv lock --upgrade — обновить uv.lock echo uv python list — список установленных Python echo uv python install 3.12 — установить Python 3.12 echo. echo Аналог Poetry: echo poetry install → uv sync echo poetry add x → uv add x echo poetry run x → uv run x echo poetry shell → source .venv/bin/activate echo. pause goto main_menu :: ============================================================ :: ИНИЦИАЛИЗАЦИЯ GIT :: ============================================================ :init_git cd /d "%PROJECT_ROOT%" if exist ".git" ( echo [OK] Git уже инициализирован pause exit /b ) git init git checkout -b %GIT_BRANCH% git remote add origin "%GIT_REPO%" 2>nul :: .gitkeep для пустых папок for /r "%PROJECT_ROOT%\data" %%f in (.) do ( if exist "%%f" ( dir /b "%%f" 2>nul | findstr /r "." >nul if %errorlevel% neq 0 type nul > "%%f\.gitkeep" 2>nul ) ) git add . git commit -m "Initial commit: ReviewFlow v4.1 (uv edition)" 2>nul pause exit /b :: ============================================================ :: ЗАВЕРШЕНИЕ :: ============================================================ :end echo. echo ================================================================ echo ГОТОВО! echo Проект: %PROJECT_ROOT% echo ================================================================ echo. endlocal pause exit /b 0