Document Opus validation findings
This commit is contained in:
@@ -182,3 +182,38 @@ crop лекарственной строки
|
||||
- начать с SQLite и перейти на отдельный PostgreSQL только при появлении требований к параллельной записи, админке или нескольким экземплярам сервиса.
|
||||
|
||||
Перед фиксацией порогов и коэффициентов scoring провести эксперимент на 50–200 обезличенных рецептах.
|
||||
|
||||
## 12. Критический план по результатам валидации Opus (2026-08-31)
|
||||
|
||||
### Подтвержденные проблемы и приоритет
|
||||
|
||||
1. `recipe_service/metrics.py`: убрать `initialize()` из `record()`; инициализация должна быть только на старте сервиса.
|
||||
2. `recipe_service/app.py`: устранить дублирование `record(...)` через единый финализатор/обертку завершения запроса.
|
||||
3. `recipe_service/app.py`: считать `duration_ms` во всех ветках, а не только при `401`.
|
||||
4. `recipe_service/app.py`: заменить сравнение токена на constant-time (`hmac.compare_digest`).
|
||||
5. `recipe_service/app.py`: минимизировать детализацию `502` для клиента, подробности оставлять в логах.
|
||||
6. `recipe_service/app.py`: добавить учет заголовков прокси (`ProxyFix`) для корректного client IP.
|
||||
7. Тесты: добавить `recipe_service/test_app.py` с кейсами `401/400/415/413/200`.
|
||||
8. `requirements.txt`: выровнять root и `recipe_service/requirements.txt` по version bounds.
|
||||
|
||||
### Android-блок (после подтверждения модели безопасности)
|
||||
|
||||
1. Убрать долговременный статический секрет из APK или перейти на схему краткоживущих токенов.
|
||||
2. Оптимизировать pipeline камеры: снизить частоту тяжелой конвертации или заменить способ получения bitmap.
|
||||
3. Убрать двойной вывод результата (`Column` и `ResultOverlay`) и оставить один источник отображения.
|
||||
4. Пересмотреть `containsPatientData` в `MedicationZoneDetector`: дата сама по себе не должна блокировать распознавание.
|
||||
|
||||
### Вопросы к Opus (требуют уточнения до правок)
|
||||
|
||||
1. `api_key_override` в `gemini_proxy/app.py`: удалять полностью или оставить только для локального debug-режима за флагом окружения?
|
||||
2. По `502`: какой клиентский формат ошибки нужен — единое сообщение или кодизированные причины без деталей провайдера?
|
||||
3. Для `ProxyFix`: доверяем ровно одному прокси (`x_for=1`) или нужен более строгий trust chain?
|
||||
4. Для Android: подтверждаем перенос от статического API-токена к короткоживущему серверному token exchange?
|
||||
5. По privacy-гейту: дата рецепта в medication-зоне допустима или должна только понижать confidence без блокировки?
|
||||
|
||||
### План выполнения после подтверждения
|
||||
|
||||
1. Backend фаза A: `metrics.py` + `app.py` (инициализация, duration, record-finalizer, compare_digest, ProxyFix).
|
||||
2. Backend фаза B: тесты `recipe_service/test_app.py` + проверка pytest.
|
||||
3. Backend фаза C: harmonize requirements.
|
||||
4. Android фаза D: безопасность токена + оптимизация камеры + privacy-gate.
|
||||
|
||||
Reference in New Issue
Block a user