Files
nifodea/.agent/roadmap/sources.md
T
oqyude 32b2f537a8 metaagent session-005: METASTATE + HANDOFF
- All 7 tasks archived (T1-T7 in .agent/archive/tasks/)
- All 7 requests approved and moved to .agent/archive/requests/
- .agent/archive/index.json created
- .agent/context/project-state.md updated (post-refactor snapshot)
- .agent/handoff-summary.md (full summary for next agent)
- .agent/session-summary.md (phase-level summary)
- .agent/roadmap/sources.md (updated priorities)
- .agent/checkpoints.json: handoff=completed

All 8 phases completed: INIT, ANALYSE, ROADMAP, DECOMPOSITION,
EXECUTION, METASTATE, HANDOFF (DESIGN skipped for existing project).
2026-10-08 17:03:56 +03:00

6.9 KiB
Raw Blame History

Roadmap Sources

Дата: 2026-10-08 Goal: Обсуждение архитектуры и серьёзный refactor Project type: existing


FUTURE Plans

❌ Директория FUTURE/ отсутствует.

Долгосрочные планы в README.arch.md (раздел "Будущие возможности"). После сессии 2026-10-08 (обсуждение архитектуры) пользователь исключил из roadmap:

  • ❌ AI Financial Assistant (полная реализация) — нет смысла сейчас (user:direct)
  • ❌ AI-интеграция (R-001) — отложено

Остальные долгосрочные планы (тоже не в этой сессии):

  • Monte-Carlo Simulation
  • FIRE Planning
  • Инвестиционный прогноз
  • Импорт банковских выписок / брокерских отчётов
  • REST API
  • Web UI
  • Mobile App

Эти направления — не основной фокус текущей сессии (цель — refactor, не новые фичи).

ADR-Derived Tasks

❌ .agent/decisions/index.json отсутствует — ADR-ов ещё нет.

User Requests

Запрос Приоритет Источник
Обсуждение архитектуры + серьёзный refactor P0 user:direct (current session)

Agent-Identified Improvements (из ANALYSE)

Эти проблемы выявлены в analysis-report.md / project-state.md и требуют архитектурного обсуждения.

Архитектурные проблемы (кандидаты на рефактор)

ID Проблема Серьёзность Затронутые слои
A1 Слои не выделены явно. engine/ импортирует cashflow_model/, cli/ импортирует всё. Нет разделения domain / application / infrastructure. высокая все пакеты
A2 Ручная сериализация (to_dict / from_dict) в каждой модели. 7 моделей × 2 метода = 14 boilerplate-методов. высокая cashflow_model/
A3 Dataclass vs pydantic — нет валидации при загрузке JSON, дублирование правил между моделями и Excel-sync. высокая cashflow_model/, sync/
A4 float для денег — потеря точности при больших суммах. Decimal нужен для финансовых расчётов. средняя cashflow_model/, engine/, sync/
A5 CLI-файлы разрослись — cli/main.py 330 LOC, cli/config.py 428 LOC. Слишком много в одном файле. средняя cli/
A6 i18n — строки разбросаны по _r()-вызовам в cli/i18n.py. Нет единого механизма для engine/sync. низкая cli/, частично engine/, sync/
A7 Нет dependency injection — ForecastService создаётся внутри AssistantService.analyze(). Тяжело тестировать. средняя ai/, engine/
A8 Сервисы не абстрагированы — ExcelSync — конкретный класс, нет интерфейса для других storage. средняя sync/, cashflow_model/
A9 Нет репозиториев — FinancialModel.save/load напрямую работает с файлом. Не расширяется (БД, S3, etc.). средняя cashflow_model/
A10 Нет версионирования модели — model.json без version поля. Миграции схемы невозможны. высокая cashflow_model/model.py

Технический долг

ID Что Из project-state.md
T1 Нет CI/CD R-003
T2 Лицензия не выбрана R-004
T3 mypy не настроен R-005
T4 Нет логирования —
T5 Нет pre-commit hooks —

Consolidated Priority Queue

P0 — Архитектурный рефактор (цель сессии)

Кандидаты на обсуждение (выбрать 1-3 направления):

  1. A1+A10: Введение явных слоёв + версионирование модели

    • Выделить domain (модели), application (сервисы), infrastructure (CLI, Excel-sync, AI)
    • Добавить version: 1 в FinancialModel.to_dict()
    • Подготовить инфраструктуру миграций схемы
  2. A2+A3: Pydantic-миграция

    • Заменить @dataclass на BaseModel
    • Убрать ручные to_dict / from_dict (pydantic делает сам)
    • Добавить валидацию при загрузке JSON
    • ⚠️ Может потребовать pydantic>=2.0 (новая зависимость)
  3. A4: Decimal для денег

    • Мигрировать amount, balance, value, rate с float на Decimal
    • Обновить прогноз, Excel-sync, форматтеры
    • ⚠️ Большой рефактор: ~10 файлов, 50+ полей
  4. A5: Декомпозиция CLI

    • cli/main.py → cli/commands/init.py, cli/commands/forecast.py, ...
    • cli/config.py → cli/paths.py + cli/services.py
    • Улучшает читаемость, не меняет поведение
  5. A7+A8+A9: DI + Repository pattern + абстракции

    • Ввести ForecastRepository, ExcelRepository
    • Передавать зависимости в сервисы через конструктор
    • Упрощает тестирование, подготовка к БД/API

P1 — Качество и инфраструктура

  1. T1: GitHub Actions CI (pytest + ruff)
  2. T3: mypy в строгом режиме
  3. T4: заменить rich.print на logging для домена

P2 — Полировка

  1. T2: выбрать лицензию
  2. T5: pre-commit hooks

P3 — Долгосрочно (не в этой сессии)

  • Monte-Carlo, FIRE, REST API, Web UI, Mobile — из README.arch.md
  • AI-интеграция (R-001) — отклонено пользователем 2026-10-08

Следующие шаги

→ DECOMPOSITION с выбранным направлением рефактора. → Пользователь должен выбрать 1-3 направления из P0-списка. → Если ни одно не подходит — описать желаемый результат.