Commit Graph
16 Commits
Author SHA1 Message Date
naeel 4e714f5680 fix: форма без AJAX — обычный POST, сервер всё делает
Убран JS fetch. Форма отправляется напрямую на сервер.
Сервер обрабатывает файлы и возвращает страницу с результатами.
Нет Failed to fetch.
2026-06-15 07:00:44 +04:00
naeel 8fc4d6a15a clean(app): убран дубликат if __name__, мёртвый _index(), неиспользуемые импорты 2026-06-15 06:43:38 +04:00
naeel cb92f9072e fix(ui): корень /, лого Nubes + favicon, убраны поля номера/клиента/даты
- Страница перенесена с /upload на / (корень)
- Верхняя панель с логотипом Nubes (nubes-logo.svg)
- favicon.png из ipwhitelist-app
- Поля номера/клиента/даты убраны — договор создаётся авто
- Исправлен JS (относительные URL)
2026-06-15 06:35:02 +04:00
naeel 54d9924c04 feat(ui): страница загрузки договора /upload
Дизайн: Nubes Design System (карточки, форма, таблица).
Lucide Icons. drag&drop файла docx/pdf/zip.
Пайплайн: создание договора → загрузка допника → таблица строк.
2026-06-15 06:15:12 +04:00
naeel cb7a729df7 feat(api): api.py Blueprint — договоры, допники, история
POST /api/contracts          — создать договор
GET  /api/contracts          — список
GET  /api/contracts/<id>     — договор + допники
POST /api/contracts/<id>/supplements  — загрузить допник (полный пайплайн)
GET  /api/contracts/<id>/history      — история изменений

Пайплайн допника: upload→parse→textify→extract→diff→spec_rows→spec_history
2026-06-14 17:02:31 +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 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 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