- 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).
6.9 KiB
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 направления):
-
A1+A10: Введение явных слоёв + версионирование модели
- Выделить domain (модели), application (сервисы), infrastructure (CLI, Excel-sync, AI)
- Добавить
version: 1вFinancialModel.to_dict() - Подготовить инфраструктуру миграций схемы
-
A2+A3: Pydantic-миграция
- Заменить
@dataclassнаBaseModel - Убрать ручные
to_dict/from_dict(pydantic делает сам) - Добавить валидацию при загрузке JSON
- ⚠️ Может потребовать
pydantic>=2.0(новая зависимость)
- Заменить
-
A4: Decimal для денег
- Мигрировать
amount,balance,value,rateсfloatнаDecimal - Обновить прогноз, Excel-sync, форматтеры
- ⚠️ Большой рефактор: ~10 файлов, 50+ полей
- Мигрировать
-
A5: Декомпозиция CLI
cli/main.py→cli/commands/init.py,cli/commands/forecast.py, ...cli/config.py→cli/paths.py+cli/services.py- Улучшает читаемость, не меняет поведение
-
A7+A8+A9: DI + Repository pattern + абстракции
- Ввести
ForecastRepository,ExcelRepository - Передавать зависимости в сервисы через конструктор
- Упрощает тестирование, подготовка к БД/API
- Ввести
P1 — Качество и инфраструктура
- T1: GitHub Actions CI (pytest + ruff)
- T3: mypy в строгом режиме
- T4: заменить
rich.printнаloggingдля домена
P2 — Полировка
- T2: выбрать лицензию
- 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-списка. → Если ни одно не подходит — описать желаемый результат.