3.9 KiB
3.9 KiB
Сводка сессии 2026-08-26 — contracts-flask (тесты + чистка + стресс)
1. Фикс логики сверки (v2.0.15 → v2.0.16)
full_replaceдублировал строки:reset()чистилspec_currentтолько на старте пайплайна, аfull_replace(все ADD) применялся поверх старых строк → дубли.- Фикс:
db/spec_events.py::clear_current()(чистит толькоspec_current, историяspec_eventsсохраняется) + вызов вprocess.pyприmode == "full_replace". - Коммит
021c925, запушено, прод передеплоен →2.0.16. - Детали:
History/2026-08-26-full-replace-fix.md.
2. Документация
- Архитектура:
DOC/architecture-contracts-flask.md(актуальная, VM-буфер, клиентский ZIP). - Корневой
README.md— подробный, со ссылкой на архитектуру.
3. Тесты
Удалены старые (коммит 9a8ae0a)
deploy/tests/(unit/pipeline/integration +test_drhider.py),deploy/conftest.py,deploy/tests.js— ссылались на старуюcompare/-архитектуру.
Новые юнит/интеграционные (коммиты 8f8fabf, 3b259cf)
- 13 файлов в
contracts-flask/tests/+conftest.py(изоляция БД) +README.md. - Покрытие: metrics, grouping, llm_client, llm, classify, parse, connection, spec_events, spec_current, process_pipeline, routes.
- 92 passed (после чистки legacy; было 102).
Нагрузочные (маркер load, коммиты b7d60e1, 08f7e3f, 6fcbbdd)
tests/load/test_load_pipeline.py— 100 контрактов × 20 допников × 10 услуг.tests/load/test_load_apply_ops.py— 5000 ADD/UPDATE/DELETE.tests/load/test_load_concurrency.py— конкурентная запись SQLite.tests/load/stress_http.py— standalone HTTP-стресс.- Полный прогон: not-load 102 passed, load 3 passed (~3 мин).
Находка №1: SQLite database is locked (коммит 08f7e3f)
- 16 конкурентных писателей →
database is locked; 8 — нестабильно; 4 — стабильно (=MAX_WORKERSприложения). Для текущего сценария (один пользователь) некритично. History/2026-08-26-load-sqlite-locked.md.
4. Стресс-тест прода (коммит 08e8e3a)
- Прод:
contractor.pythonk8s.dev.nubes.ru, подpythonk8s(cpu 1, mem 1Gi). - Прямой POST 100KB → 83% таймаутов (шлюз рвёт >64KB) — подтверждён предел платформы, поэтому и существует VM-буфер.
- Реальный файл 30KB → 200/200 ok (rps 10), под CPU 899m / MEM 520Mi, без OOM.
History/2026-08-26-stress-100kb-gateway.md.
5. Чистка мёртвого legacy-кода (коммит aa58522)
- Удалены
POST /upload,POST /unzip-upload,_check_ext,_unzip,ALLOWED, пустой blueprint, константы фронтаUPLOAD_URL/CONVERT_URL/UNZIP_URL. - Загрузка теперь ТОЛЬКО через ВМ (
/api/upload_refs→contracts_upload_sink). History/2026-08-26-cleanup-legacy-upload.md.
Хвосты / открытые вопросы
tests/load/stress_http.pyбьёт по удалённому/upload— переписать на/api/upload_refs.- Прод-риск
database is lockedпри конкурентных сверках — отложен (нет мультитенантности). - E2E с реальным LLM (
gpt-oss-120b) на проде — не проверялся автоматически (тесты на Fake LLM).