Files
contracts/History/features/teach-flow-vm-feedback-tests.md
T

94 lines
2.6 KiB
Markdown

# Teach flow VM smoke tests
Дата: 26.06.2026 | Проверка isolated teaching flow на VM после внедрения.
## Что проверяли
Проверялся Flask-слой VM через test client с подменой DB-слоя, чтобы подтвердить поведение новых endpoints без риска для боевой БД.
### Проверенные маршруты
- `GET /teach`
- `GET /teach/api/meta`
- `GET /teach/api/contracts`
- `GET /teach/api/context?supplement_id=...`
- `POST /teach/api/feedback`
- `GET /teach/api/feedback?contract_id=...&supplement_id=...`
## Результат smoke-test
Все маршруты вернули `200 OK` в mocked окружении.
### `/teach`
- Страница отдала HTML с заголовком `Сверка договоров — обучение`.
### `/teach/api/meta`
Вернуло дефолтные метаданные:
```json
{
"ok": true,
"prompt_version": "vm-teach-v1",
"model_name": "gpt-oss-120b"
}
```
### `/teach/api/contracts`
Вернуло список договоров и допников в ожидаемой структуре:
- `contract_id`
- `contract_number`
- `client`
- `date_signed`
- `supplements[]`
### `/teach/api/context`
Вернуло:
- `supplement`
- `current_rows`
- `previous_rows`
### `POST /teach/api/feedback`
Проверена запись feedback со значениями:
- `scope = row`
- `verdict = error`
- `error_type = wrong_price`
- `field = price`
- `llm_value` и `correct_value` как JSON
- `prompt_version = vm-teach-v1`
- `model_name = gpt-oss-120b`
- `doc_mode = amendment`
Запись успешно ушла в mock cursor и commit был вызван.
### `GET /teach/api/feedback`
Возвратил сохранённую запись в читаемом JSON виде.
## Что всплыло по окружению
Во время проверки не хватало runtime-зависимостей в VM-venv:
- `python-dotenv`
- `Flask`
- `psycopg2-binary`
- `httpx`
- `pdfplumber`
- `python-docx`
- `redis`
Эти пакеты были установлены в VM-venv, после чего smoke-test прошёл.
## Вывод
Isolated teaching flow на VM не только компилируется, но и проходит mocked smoke-test по основным endpoint'ам:
- чтение метаданных,
- загрузка списка договоров,
- загрузка контекста допника,
- запись и чтение feedback.
Старый Lucee-frontend и основной compare pipeline при этом не затрагивались.