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).
This commit is contained in:
2026-10-08 17:03:56 +03:00
parent 3ef10618dc
commit 32b2f537a8
54 changed files with 1536 additions and 3012 deletions
+121
View File
@@ -0,0 +1,121 @@
# 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-списка.
→ Если ни одно не подходит — описать желаемый результат.