2025-11-16 — Диагностика админки
STATUS: DONE- 2025-11-16T21:20Z diagnostics_admin_ui: page+routes+dry-run OK
Сводка недавних изменений, заглушек и планов
- 2025-11-16T21:20Z diagnostics_admin_ui: page+routes+dry-run OK
- Добавлена таблица `roadmap_items`, миграция и сидер с основными хотелками (AI-чек, JSON-импорт, распознавание счётчиков, KPI менеджеров).
- Страница `/dashboard/roadmap` стала доступна всем авторизованным пользователям: прогресс-бар, фильтры по статусу/приоритету, сортировка, карточки с длительностью.
- Для админов появились формы `/dashboard/admin/roadmap/new` и `/dashboard/admin/roadmap/{id}/edit`, статус `done` автоматически проставляет дату завершения, `dropped` оставляет запись в истории.
- Документация (README, /dashboard/help) обновлена, чтобы отражать новый процесс.
- Добавлена таблица `accounts`, nullable `services.account_id` и колонка `services.meta` для хранения строк ЕПД, реализована Alembic-миграция + обновлены ORM-модели. - Появилась админ-форма `/dashboard/admin/object-json/new`, которая валидирует JSON по Pydantic-схеме и в одной транзакции создаёт/обновляет объект, лицевые счета, услуги и ссылки на вложения ЕПД (идемпотентно). - Карточка объекта группирует услуги по ЛС, отображает суммы/тарифы/периоды и ссылки на загруженные EPD-PDF, старая таблица остаётся для объектов без связки. - Документация (/dashboard/help, README) и DevLog обновлены описанием сценария, страница версий показывает новый бэкап `add_object_json_import`.
- Реализована сущность PaymentImport, загрузка чеков через дашборд, карточка review и админская очередь. - Настроен базовый конвейер применения платежа и связка с платежами/услугами.
- Добавлен контракт ChequeParseResult, CHEQUE_AI_* настройки, заглушки parse_cheque_local/parse_cheque_via_ai, интеграция с PaymentImport.meta. - Страница /dashboard/devlog отображает историю изменений; README и /dashboard/help описывают новый конвейер. - TODO: - Подключить внешний ИИ-сервис в parse_cheque_via_ai (HTTP API + ключи). - Определить политику автоматического применения платежей при высокой уверенности. - Научить UI подсвечивать авто-определённую услугу и статус уверенности.
- Roadmap вынесен в <code>infra/ROADMAP.yaml</code>, страница <code>/dashboard/roadmap</code> показывает прогресс, карточки задач и теги; доступна только администраторам. - README и /dashboard/help обновлены описанием новой страницы; nav bar содержит ссылку «✨ Roadmap». - TODO: - Перевести статус roadmap_page в DONE, когда визуальные правки и тесты завершены. - Прописать регламент обновления ROADMAP.yaml при каждой новой фиче.
- Для каждой задачи Roadmap указаны реальные created_at/completed_at и effort_hours (собраны из dev-лога и git-истории); страница `/dashboard/roadmap` теперь показывает длительность в часах/днях и строки вида «≈ N ч разработки». - README и /dashboard/help обновлены рекомендациями по заполнению YAML.
- Запущены работы над модулем, который позволит одним действием создавать объект и сразу задавать услуги (вода, электричество, интернет и пр.) вместе с параметрами оплаты. - В той же форме сразу привязываем счётчики: тип, серийный номер, тарифы и другие реквизиты, чтобы менеджеру не приходилось перескакивать по разделам. - В следующих итерациях модуль научится импортировать объекты/услуги/счётчики из таблицы или CSV, сохраняя описание новых объектов в Roadmap. - Статус задачи в Roadmap (`fast_object_bulk_add`) выставлен в `in_progress`, чтобы прогресс отображался на /dashboard/roadmap.
{"service_id": 1, "meter_id": 16, "object_id": 1, "created_by": "admin", "source": "inline-form-json"}
- 2025-11-15T14:52:17Z verify_meter_json_20251115T144600Z: backup→deploy→routes/templates verified; JSON meter create OK; duplicate OK.
{"service_id": 12, "meter_id": 17, "object_id": 5, "created_by": "admin", "source": "inline-form-json"}
{"service_id": 14, "meter_id": 18, "object_id": 5, "created_by": "admin", "source": "inline-form-json"}
- object_id: 6 - объект создан - аккаунты: 1 новых / 0 обновлено - услуги: 1 новых / 0 обновлено - admin_id: 1
- object_id: 7 - объект создан - аккаунты: 1 новых / 0 обновлено - услуги: 1 новых / 0 обновлено - admin_id: 1
- object_id: 8 - объект создан - аккаунты: 1 новых / 0 обновлено - услуги: 1 новых / 0 обновлено - admin_id: 1
- object_id: 9 - объект создан - аккаунты: 1 новых / 0 обновлено - услуги: 2 новых / 0 обновлено - admin_id: 1
- object_id: 10 - объект создан - аккаунты: 1 новых / 0 обновлено - услуги: 9 новых / 0 обновлено - admin_id: 1
- object_id: 11 - объект создан - аккаунты: 1 новых / 0 обновлено - услуги: 0 новых / 0 обновлено - admin_id: 1
- object_id: 11 - объект обновлён - аккаунты: 1 новых / 0 обновлено - услуги: 0 новых / 0 обновлено - admin_id: 1 - 2025-11-16T18:22:15Z epd_step1: добавлены таблицы epd_bills/epd_bill_payments и колонка services.scope (миграции применены).
- backup: app_20251116_185423_grand_run_20251116T184450Z.tar.gz + db_20251116_185423_grand_run_20251116T184450Z.sql - rsync из ~/Projects/mk-utilities, pip install -r requirements.txt, alembic upgrade 9a807b4b1f72, systemctl restart mku-backend - smoke HTML → /opt/mk-utilities/_ops/grand_run_20251116T184450Z/smoke_*.html
- API: POST /api/epd/import и GET /api/epd/bills (admin-only) — upsert объекта + список счетов - CLI: backend.app.management.epd_import_cli (epd_object.json) и epd_payment_cli (partial→overpaid, payments #1-2 для bill_id=1) - документация: help-раздел «ЕПД: импорт счетов и платежей (JSON/CLI/API)», DevLog записи и OPS артефакты
- admin API: POST /api/epd/payments/import + FastAPI роуты для списка/карточек счетов - UI: страницы /dashboard/admin/objects/<id>/epd, карточка счёта, импорт JSON, форма оплаты (Поля/JSON), подсекция ЕПД на карточке объекта - UX: визуализация подобных объектов (accounts), общий блок счётчиков, переключатель scope услуги (account/object) - Docs: раздел «ЕПД в админке...» в dashboard_help + smoke/OPS epd_ui_20251116T190609Z
- миграция d4dd7e0b23f3: dedupe_key + attachment_* в epd_bill_payments
- сервис/API: SHA1-ключ, duplicate-флаг, multipart загрузка чеков с сохранением в media/epd_payments/<bill_id>/
- UI: превью/ссылки на вложения, бейдж Duplicate, форма оплаты с input[type=file]
- Docs: help-дополнение про антидубль/чеки + OPS /opt/mk-utilities/_ops/epd_payments_attachments_dedupe_*
- 2025-11-16T19:54:04Z roadmap_autolog: добавлены/обновлены 7 задач (roadmap-db-ui-filters-progress, meters-inline-json, meters-fix-json-button, epd-step-1-models-migrations, epd-api-cli-import, epd-ui-list-card, epd-payments-attachments-dedupe); источники: deploy_roadmap_meter_json_20251114T165734Z, deploy_meter_inline_json_20251114T164957Z, fix_meter_json_button_20251115T135157Z+, epd_step1_20251116T181558Z, grand_run_20251116T184450Z, epd_ui_20251116T190609Z, epd_payments_attachments_dedupe_20251116T193509Z.
- [2025-11-17T08:58:15Z] epd_ingest_textfirst_20251117T085815Z — подготовка EPD OCR / Receipt Auto-Ingest (alpha); roadmap entry, API, админка beta, лог в _ops.
- [epd_ingest_fix_20251117T094152Z] fixed dashboard admin epd ingest POST/GET alignment; form now posts to same route with multipart data
- [epd_ingest_500fix_20251117T095622Z] removed ensure_ascii param from template to avoid TypeError, GET/POST share safe context
- [epd_ingest_header_20251117T101613Z] added extract_moscow_epd_header() to enrich parsed_json header fields
- [epd_ingest_decimalfix_20251117T102041Z] added _make_json_safe() to convert Decimal for parsed_json/header
- [epd_ingest_decimalfix_ctx_20251117T102714Z] ensured dashboard EPD ingest context is json-safe (Decimal → float)
${STAMP} – Handoff: переключение на другой аккаунт
• Зафиксирован прогресс (модели PaymentImport, миграции; Step 2: парсер чеков + batch).
• Созданы бэкап-код/бэкап-БД, Git-бандл и архив рабочей копии для передачи.
• Добавлены CONTINUE.md и resume.sh с инструкциями восстановления.
- 20251120T081203Z GW plan: old.mkutilities.online → 192.168.0.29:8000
- 20251120T081254Z GW plan: old.mkutilities.online → 192.168.0.29:8000
- 20251120T081401Z GW plan: old.mkutilities.online → 192.168.0.29:8000
- 20251120T083411Z GW: old.mkutilities.online → proxy 192.168.0.15:80 (Caddy on gw)
- 20251120T090735Z old-subdomain fix: mku-old nginx + public base old.mkutilities.online
Файл логов: infra/DEV_LOG.md