Flask-сервис для загрузки mp4-видео, извлечения кадров, генерации Gherkin через Mistral и сохранения jobs/results/artifacts/logs в PostgreSQL. Видео и preview frames сохраняются локально в storage/.
По умолчанию backend слушает 5000, потому что PostgreSQL в этом задании использует localhost:8080.
Локально:
pip install -r requirements.txt
python AnalisesAI.pyDocker:
docker-compose up --buildОбязательная переменная:
MISTRAL_API_KEY
PostgreSQL defaults:
POSTGRES_HOST=localhostPOSTGRES_PORT=8080POSTGRES_DB=test_platformPOSTGRES_USER=postgresPOSTGRES_PASSWORD=postgres
Опционально:
DATABASE_URL=postgresql+psycopg2://postgres:postgres@localhost:8080/test_platformAPP_PORT=5000MAX_FRAMES=3FRAME_WIDTH=640JPEG_QUALITY=80MAX_VIDEO_SIZE_MB=100MISTRAL_TIMEOUT=90
Готовая SQL-схема лежит в schema.sql.
{
"status": "UP",
"service": "video-analysis"
}multipart/form-data, поле строго video.
Ограничения:
- только
video/mp4 - размер ограничен через
MAX_VIDEO_SIZE_MB
Ответ сохранён совместимым:
{
"status": "success",
"frames_extracted": 3,
"gherkin": "Feature: ..."
}Во время обработки сервис:
- создаёт
Job,JobInput,JobResult - сохраняет исходное видео в
storage/videos/ - сохраняет extracted frames в
storage/frames/ - пишет
ArtifactиJobLog
Поддерживает фильтры service_type, status, limit, offset.
Возвращает metadata job из PostgreSQL.
Возвращает gherkin_text, result_json и статус.
Возвращает список сохранённых artifacts.
Оставлен для совместимости со старым клиентом.
Скачивает Gherkin-результат как .feature.
Оставлен для совместимости и берёт последний успешный результат из PostgreSQL.