Files
contracts/History/sessions/session-02-problems.md
T

50 lines
3.3 KiB
Markdown

# Проблемы проекта Contracts App (15.06.2026)
_Дата: 15.06.2026_
_Статус: Анализ и выученные уроки_
---
## 1. Технические ошибки и инструменты
### ⛔ replace_string_in_file портит файлы
Инструмент заменяет подстроку, а не файл целиком. При повторных правках возникали дубликаты кода (например, два блока `if __name__ == "__main__"`) или обрезка функций.
**Решение:** При больших правках использовать `create_file` для перезаписи файла целиком, либо очень внимательно выбирать контекст в `oldString`.
### ⛔ Опечатка в API-ключе (c772c3e5 vs 5fad79ba)
Два часа отладки HTTP/2 и `httpx` из-за опечатки в `LLM_API_KEY` (перепутаны символы `9K` -> `K9`).
**Урок:** Проверять валидность ключей и выводить первые/последние символы хеша в логи при ошибках 401.
### ⛔ Истёкший SSL-сертификат api.aillm.ru
Сертификат протух 14 июня 2026. `httpx` блокировал запросы.
**Временное решение:** `verify=False` в клиенте LLM.
---
## 2. Архитектура и Сеть
### ⛔ ERR_HTTP2_PROTOCOL_ERROR (Таймауты Ingress)
LLM обрабатывает документ 30-40 секунд. Ingress в K8s обрывает соединение на 30-й секунде.
**Решение:** Разделение процессов. Загрузка — мгновенно. Обработка LLM — по отдельному запросу с фронтенда с визуальным таймером, чтобы пользователь понимал, что процесс идет.
### ⛔ AJAX fetch() -> Failed to fetch
Сложная логика на фронте (очереди, JSZip) ломалась.
**Решение:** Упрощение до стандартных форм. Паттерн **PRG (Post-Redirect-Get)** для устранения проблемы «Подтвердите повторную отправку формы» при нажатии F5.
---
## 3. Фронтенд и Контент
### ⛔ Битый логотип
`nubes-logo.svg` содержал текст "Forbidden" (ошибка копирования через `curl`).
**Урок:** Проверять содержимое статических файлов после скачивания.
---
## Текущее состояние (v1.0)
1. **Упрощение:** Форма `<input type="file" multiple>` + стандартный `submit`.
2. **Надежность:** POST на `/` загружает и парсит файлы, затем делает `redirect` на страницу договора.
3. **LLM:** Отдельная кнопка «Обработать (LLM)» внутри договора, чтобы избежать таймаутов при массовой загрузке.
4. **Интерфейс:** Добавлен таймер обработки и версия **v1.0** в шапке.