Лог разработки / Roadmap

Сводка недавних изменений, заглушек и планов

2025-11-16 — Диагностика админки

STATUS: DONE
- 2025-11-16T21:20Z diagnostics_admin_ui: page+routes+dry-run OK

2025-11-12 — Roadmap с CRUD и фильтрами

STATUS: DONE
- Добавлена таблица `roadmap_items`, миграция и сидер с основными хотелками (AI-чек, JSON-импорт, распознавание счётчиков, KPI менеджеров).
- Страница `/dashboard/roadmap` стала доступна всем авторизованным пользователям: прогресс-бар, фильтры по статусу/приоритету, сортировка, карточки с длительностью.
- Для админов появились формы `/dashboard/admin/roadmap/new` и `/dashboard/admin/roadmap/{id}/edit`, статус `done` автоматически проставляет дату завершения, `dropped` оставляет запись в истории.
- Документация (README, /dashboard/help) обновлена, чтобы отражать новый процесс.

2025-11-12 — Импорт объекта из JSON

STATUS: DONE
- Добавлена таблица `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`.

2025-11-08 — Чеки и импорт платежей

STATUS: DONE
- Реализована сущность PaymentImport, загрузка чеков через дашборд, карточка review и админская очередь.
- Настроен базовый конвейер применения платежа и связка с платежами/услугами.

2025-11-09 — Интерфейс ИИ-парсинга чеков

STATUS: STUB
- Добавлен контракт 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 подсвечивать авто-определённую услугу и статус уверенности.

2025-11-10 — Roadmap и чек-лист хотелок

STATUS: IN_PROGRESS
- Roadmap вынесен в <code>infra/ROADMAP.yaml</code>, страница <code>/dashboard/roadmap</code> показывает прогресс, карточки задач и теги; доступна только администраторам.
- README и /dashboard/help обновлены описанием новой страницы; nav bar содержит ссылку «✨ Roadmap».
- TODO:
  - Перевести статус roadmap_page в DONE, когда визуальные правки и тесты завершены.
  - Прописать регламент обновления ROADMAP.yaml при каждой новой фиче.

2025-11-11 — Хронология и часы по Roadmap

STATUS: DONE
- Для каждой задачи Roadmap указаны реальные created_at/completed_at и effort_hours (собраны из dev-лога и git-истории); страница `/dashboard/roadmap` теперь показывает длительность в часах/днях и строки вида «≈ N ч разработки».
- README и /dashboard/help обновлены рекомендациями по заполнению YAML.

2025-11-10 — Старт модуля быстрого добавления объектов

STATUS: IN_PROGRESS
- Запущены работы над модулем, который позволит одним действием создавать объект и сразу задавать услуги (вода, электричество, интернет и пр.) вместе с параметрами оплаты.
- В той же форме сразу привязываем счётчики: тип, серийный номер, тарифы и другие реквизиты, чтобы менеджеру не приходилось перескакивать по разделам.
- В следующих итерациях модуль научится импортировать объекты/услуги/счётчики из таблицы или CSV, сохраняя описание новых объектов в Roadmap.
- Статус задачи в Roadmap (`fast_object_bulk_add`) выставлен в `in_progress`, чтобы прогресс отображался на /dashboard/roadmap.

2025-11-15 14:50 UTC — meter.create

STATUS: INFO
{"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.

2025-11-15 14:54 UTC — meter.create

STATUS: INFO
{"service_id": 12, "meter_id": 17, "object_id": 5, "created_by": "admin", "source": "inline-form-json"}

2025-11-15 15:10 UTC — meter.create

STATUS: INFO
{"service_id": 14, "meter_id": 18, "object_id": 5, "created_by": "admin", "source": "inline-form-json"}

2025-11-16 15:49 UTC — Импорт объекта из JSON

STATUS: DONE
- object_id: 6
- объект создан
- аккаунты: 1 новых / 0 обновлено
- услуги: 1 новых / 0 обновлено
- admin_id: 1

2025-11-16 15:55 UTC — Импорт объекта из JSON

STATUS: DONE
- object_id: 7
- объект создан
- аккаунты: 1 новых / 0 обновлено
- услуги: 1 новых / 0 обновлено
- admin_id: 1

2025-11-16 15:58 UTC — Импорт объекта из JSON

STATUS: DONE
- object_id: 8
- объект создан
- аккаунты: 1 новых / 0 обновлено
- услуги: 1 новых / 0 обновлено
- admin_id: 1

2025-11-16 16:11 UTC — Импорт объекта из JSON

STATUS: DONE
- object_id: 9
- объект создан
- аккаунты: 1 новых / 0 обновлено
- услуги: 2 новых / 0 обновлено
- admin_id: 1

2025-11-16 16:14 UTC — Импорт объекта из JSON

STATUS: DONE
- object_id: 10
- объект создан
- аккаунты: 1 новых / 0 обновлено
- услуги: 9 новых / 0 обновлено
- admin_id: 1

2025-11-16 16:25 UTC — Импорт объекта из JSON

STATUS: DONE
- object_id: 11
- объект создан
- аккаунты: 1 новых / 0 обновлено
- услуги: 0 новых / 0 обновлено
- admin_id: 1

2025-11-16 16:46 UTC — Импорт объекта из JSON

STATUS: DONE
- object_id: 11
- объект обновлён
- аккаунты: 1 новых / 0 обновлено
- услуги: 0 новых / 0 обновлено
- admin_id: 1
- 2025-11-16T18:22:15Z epd_step1: добавлены таблицы epd_bills/epd_bill_payments и колонка services.scope (миграции применены).

2025-11-16 18:58 UTC — grand_run_20251116T184450Z: backup + deploy

STATUS: DONE
- 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

2025-11-16 18:59 UTC — grand_run_20251116T184450Z: EPD API и CLI платежей

STATUS: DONE
- 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 артефакты

2025-11-16 19:06 UTC — epd_ui_20251116T190609Z: ЕПД UI + API оплат

STATUS: DONE
- admin API: POST /api/epd/payments/import + FastAPI роуты для списка/карточек счетов
- UI: страницы /dashboard/admin/objects/&lt;id&gt;/epd, карточка счёта, импорт JSON, форма оплаты (Поля/JSON), подсекция ЕПД на карточке объекта
- UX: визуализация подобных объектов (accounts), общий блок счётчиков, переключатель scope услуги (account/object)
- Docs: раздел «ЕПД в админке...» в dashboard_help + smoke/OPS epd_ui_20251116T190609Z

2025-11-16 19:28 UTC — epd_payments_attachments_dedupe_20251116T192802Z

STATUS: DONE
- миграция d4dd7e0b23f3: dedupe_key + attachment_* в epd_bill_payments
- сервис/API: SHA1-ключ, duplicate-флаг, multipart загрузка чеков с сохранением в media/epd_payments/&lt;bill_id&gt;/
- 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