Commit Graph
124 Commits
Author SHA1 Message Date
naeel c97f26d04d fix: h2 явно в requirements (httpx без h2 молча падает на HTTP/1.1) 2026-06-14 07:36:11 +04:00
naeel 0d0ba18a10 fix(test): debug показывает длину ключа (len=...) 2026-06-14 07:34:05 +04:00
naeel cc3203a1fc feat(test): action 'debug' — показать переменные окружения (маскированно)
POST /test {"action":"debug"} → LLM_API_KEY, DB_*, etc.
2026-06-14 07:29:53 +04:00
naeel 59048308e4 fix(llm): httpx с HTTP/2 вместо requests
api.aillm.ru за ddos-guard — требует HTTP/2. requests (HTTP/1.1) не работал.
httpx[http2] — поддержка HTTP/2, работает с ddos-guard.
2026-06-14 07:27:16 +04:00
naeel c580c935ac fix(llm): модель gpt-oss-120b, max_tokens 8000
Доступные модели на api.aillm.ru: whisper, qwen3.6-27b, gpt-oss-120b.
gpt-oss-120b — та самая 120B модель.
max_tokens поднят до 8000 (reasoning съедает часть токенов).
2026-06-14 07:22:10 +04:00
naeel fe8a5563bf feat(test): action 'llm' — тест LLM через /test
POST /test {"action":"llm", "prompt":"...", "model":"...", "max_tokens":500}
→ вызывает llm_client.ask() → возвращает {text, model, usage}
2026-06-14 07:00:50 +04:00
naeel 44e53edc72 feat(llm): llm_client.py — HTTP-клиент к aillm.ru
ask(prompt, model, max_tokens) → {text, model, usage} | {error}
OpenAI-совместимый формат, temperature=0.1 для стабильности.
Переменные: LLM_API_URL, LLM_API_KEY.
2026-06-14 07:00:04 +04:00
naeel db2f6cc6f1 fix(upload): MIME по расширению, а не content_type
curl/браузеры шлют application/octet-stream — _guess_mime() не вызывался.
Теперь приоритет: расширение файла > content_type
2026-06-14 06:52:37 +04:00
naeel 4635ed4c57 feat(test): action 'exec' — INSERT/UPDATE/DDL через db.execute()
/test sql → db.query() → fetchall() → ломается на CREATE TABLE
/test exec → db.execute() → commit без fetch → для DDL/INSERT/UPDATE
2026-06-14 06:44:39 +04:00
naeel 9d01dbae00 fix(schema): db.query → db.execute для DDL
DDL (CREATE TABLE) не возвращает строк — db.query() делал fetchall() и ломался.
db.execute() делает commit без fetch — правильно для DDL.
2026-06-14 06:44:01 +04:00
naeel 8db35e3b9d feat(upload): слой загрузки документов + регистрация в app.py
POST /upload (multipart/form-data: file):
  1. Сохраняет original_bytes в documents (status='uploaded')
  2. parser.parse() → elements
  3. textify.to_text() → parsed_text
  4. UPDATE documents SET parsed_text, status='parsed'
  5. Возвращает {document_id, filename, status, elements_count}

При ошибке парсинга: status='error', error_message, 422
2026-06-14 06:11:23 +04:00
naeel ba2e8552e7 feat(db): execute() + query_one() — INSERT/UPDATE/DELETE и единичный SELECT
- execute(sql, params) → (rowcount, error) — для INSERT/UPDATE/DELETE
- query_one(sql, params) → (dict, error) — первая строка как словарь
- авто-commit и rollback при ошибке
2026-06-14 06:11:02 +04:00
naeel cbfba0bc54 feat: schema.py (DDL 5 таблиц), db.py без DDL, app.py минимальный, test_routes с комментариями
По рекомендации Sonnet:
- schema.py — все DDL (documents, contracts, supplements, spec_rows, spec_history)
- db.py — только транспорт (connect/query), DDL убран
- app.py — минимальный: ensure_schema() + register_blueprint()
- test_routes.py — подробные комментарии, исправлен импорт psysql
2026-06-13 17:14:48 +04:00
naeel 308be45ce8 feat: parser.py — слой парсера docx/pdf/doc/zip (без фильтрации) 2026-06-13 13:05:35 +04:00
naeel 6b5a6f79aa feat: /test createdb — создание БД через API 2026-06-13 12:48:33 +04:00
naeel b5c007044f feat: ensure_db() — автосоздание БД при старте 2026-06-13 12:46:18 +04:00
naeel c7fbc4dc07 fix: db.connect() возвращает ошибку, /test показывает детали 2026-06-13 12:34:55 +04:00
naeel 23cec8686e fix: абсолютные импорты вместо относительных (ImportError) 2026-06-13 12:17:57 +04:00
naeel dbbc8ea5fe feat: слои db.py + test_routes (Blueprint /test) 2026-06-13 12:02:46 +04:00
naeel 684b4cc9c0 feat: PostgreSQL подключение, переменные в .env.example 2026-06-13 11:57:31 +04:00
naeel 9b6f5b9c5e fix: убрал debug=True, смягчил версии в requirements, health возвращает plain text 2026-06-13 11:45:39 +04:00
naeel 96d85189c1 align: классовый app.py, static/, Dockerfile как в шаблоне 2026-06-13 11:45:04 +04:00
naeel bbf65527b1 restructure: код в site/, согласно платформе Flask 2026-06-13 11:37:13 +04:00
naeel 77dff4d3d4 init: minimal Flask app 2026-06-13 11:29:47 +04:00