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

122 lines
6.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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 — Качество и инфраструктура
6. T1: GitHub Actions CI (pytest + ruff)
7. T3: mypy в строгом режиме
8. T4: заменить `rich.print` на `logging` для домена
### P2 — Полировка
9. T2: выбрать лицензию
10. 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-списка.
→ Если ни одно не подходит — описать желаемый результат.