50 lines
3.3 KiB
Markdown
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** в шапке.
|