# Запрос Opus — ревью реализации decoupling Дата: 28.06.2026 ## Что сделано (Ф1-Ф4) Все по твоему плану: | Фаза | Файлы | Суть | |------|-------|------| | Ф1 | `deploy/contracts.py`, `deploy/services/upload.py` | 4 dataclass'а + `parse_multipart` + `store_document` | | Ф2 | `deploy/services/llm_client.py`, `deploy/services/llm.py`, `deploy/services/classify.py` | `LLMClient.complete(prompt)->str` + DI через параметр | | Ф3 | `deploy/repository.py` | `Repository` Protocol + `PgRepository` + `MemRepository` | | Ф4 | `deploy/conftest.py`, `deploy/tests/unit/*.py` | pytest: 22 юнит-теста, **22/22 PASS** | ## Что проверь 1. **Контракты** (`contracts.py`) — правильные ли поля? Не упущено ли что-то важное из `elements_json`, `spec_current`, `ops`? 2. **DI** — `llm_client` параметр с default-значением — корректно? Не сломает ли `convert_server.py` который не передаёт `llm_client`? 3. **Repository** — `PgRepository` оборачивает `db/*.py`. Не дублирует ли логику? Правильно ли выбраны методы для фасада? 4. **Тесты** — 22 теста, все pass. Достаточно ли покрытия для Ф1-Ф3? Что добавить? 5. **Общее** — не упущена ли какая-то важная часть пайплайна? `process.py` / `grouping.py` ещё не затронуты — это ок для Ф1-Ф4 или надо было включить? ## Ответь кратко - Что ок - Что поправить - Что добавить