ci / build-test (push) Canceled after 0s
SaaS-мониторинг Telegram: ядро (модули Cards/Kanban/Pipeline/Tenants/Settings/ Discovery, Api, Infrastructure), сервисы telegram/ai/ml/storage, фронт Vue, контракты и grpc-hosting, деплой-конфиги (dev/prod/observability/CI-раннер), Gitea Actions CI, документация (ТЗ, техдок, api-map, код-стайл, планы, бэклог). Текущее состояние: все этапы роадмапа 0–12 закрыты, сборка 5 sln 0/0, тесты 1340/130/52/38/9 зелёные.
1.7 KiB
1.7 KiB
Task 7: API Discovery
Files:
- Create:
backend/app/routers/discovery_routes.py - Modify:
backend/app/main.py(регистрация роутера)
Interfaces:
- Prefix
/api/discovery, authcurrent_login:GET /tasks,POST /tasks,PATCH /tasks/{id},DELETE /tasks/{id},POST /tasks/{id}/start,POST /tasks/{id}/pausePOST /tasks/{id}/generate-keywords— ИИ: промпт по description → JSON{"keywords": [...]}(8–16 строк RU+EN); ИИ недоступен/выключен →{"keywords": [], "error": "..."}.GET /tasks/{id}/candidates?status=POST /candidates/{dialog_id}/join— ручное вступление (вне квот):tg.discovery_join+add_dialog_monitored+mark_joined(auto=False); 400 при ошибке.POST /candidates/{dialog_id}/reject—mark_rejected(добавляет в чёрный список). Если кандидат ужеjoined— 400.GET /blacklist,DELETE /blacklist/{dialog_id}GET /tasks/{id}/log
Pydantic-модели: TaskCreate (name, description, keywords, minSubscribers, lang, threshold, sampleSize, planJoins, autoJoin), TaskPatch (все optional), GenKeywordsBody не нужен (id в пути).
- Step 1: Реализовать роутер (ValueError → HTTPException 400; KeyError → 404).
- Step 2: Зарегистрировать в main.py.
- Step 3: Проверить API на живом контейнере: логин, создание задачи plan=1, list, delete;
generate-keywordsвернёт error-ветку без настроенного ИИ (не падает).