# Task Manifest **Session:** metaagent-001 **Goal:** Спроектируй и реализуй MVP по README **Date:** 2026-07-12T12:00:00Z --- ## Task Overview | ID | Title | Type | Depends On | Status | |---|---|---|---|---| | T1 | Инициализация проекта и зависимостей | config | — | pending | | T2 | Модель данных (dataclass + JSON serialization) | feature | T1 | pending | | T3 | Forecast Engine (базовый прогноз) | feature | T2 | pending | | T4 | Scenario Analysis | feature | T3 | pending | | T5 | Excel Sync (import/export) | feature | T2 | pending | | T6 | CLI (Typer) — все команды | feature | T2, T3, T4, T5, T7 | pending | | T7 | AI Assistant (промпты + интерфейс) | feature | T3 | pending | | T8 | Тесты на все модули | test | T2, T3, T4, T5, T6, T7 | pending | **Total tasks:** 8 --- ## Task Details ### T1: Инициализация проекта и зависимостей **Type:** config **Description:** Создать структуру директорий, pyproject.toml, venv, установить зависимости (openpyxl, typer, pytest, ruff), настроить ruff **Files:** - `pyproject.toml` - `cashflow_model/__init__.py` - `sync/__init__.py` - `engine/__init__.py` - `ai/__init__.py` - `cli/__init__.py` - `data/.gitkeep` - `exports/.gitkeep` **Depends on:** — **Acceptance Criteria:** - [ ] pyproject.toml создан с правильными зависимостями - [ ] Все директории модулей созданы с __init__.py - [ ] ruff lint проходит без ошибок на пустых модулях - [ ] pytest запускается (0 tests, exit code 0) **Context:** Стек: Python 3.11+, openpyxl, typer, pytest, ruff. Структура из design-report.md раздел 3. --- ### T2: Модель данных (dataclass + JSON serialization) **Type:** feature **Description:** Реализовать все сущности: Account, Transaction, RecurringCashflow, Asset, Liability, ForecastScenario, FinancialModel. Каждая — dataclass с методами to_dict/from_dict. FinancialModel — корневой объект с методами save/load JSON. **Files:** - `cashflow_model/__init__.py` - `cashflow_model/account.py` - `cashflow_model/transaction.py` - `cashflow_model/recurring.py` - `cashflow_model/asset.py` - `cashflow_model/liability.py` - `cashflow_model/scenario.py` - `cashflow_model/model.py` **Depends on:** T1 **Acceptance Criteria:** - [ ] Все сущности — dataclass с правильными полями и типами - [ ] FinancialModel корректно сохраняется и загружается из JSON - [ ] Создание Account, Transaction, Asset, Liability через конструктор работает - [ ] demo-скрипт создаёт модель с тестовыми данными **Context:** Модели определены в design-report.md раздел 4. Использовать uuid4 для id. --- ### T3: Forecast Engine (базовый прогноз) **Type:** feature **Description:** Реализовать ForecastService с методами: forecast_cashflow (на N месяцев), apply_recurring (генерация recurring-транзакций), project_balance. Алгоритм: начальный баланс + доходы - расходы + изменения по активам/обязательствам. **Files:** - `engine/__init__.py` - `engine/forecast.py` **Depends on:** T2 **Acceptance Criteria:** - [ ] forecast_cashflow(months=12) возвращает список помесячных балансов - [ ] Регулярные платежи корректно проецируются на будущие периоды - [ ] Активы учитываются с ростом (growth_rate) - [ ] Обязательства учитываются с процентами и платежами **Context:** Расчёт: balance_{t+1} = balance_t + income_t - expense_t + asset_growth_t - liability_change_t. --- ### T4: Scenario Analysis **Type:** feature **Description:** Реализовать ScenarioService с методами: сценарии (optimistic, pessimistic, baseline), what-if модификация параметров, сравнение результатов сценариев. **Files:** - `engine/__init__.py` - `engine/scenarios.py` **Depends on:** T3 **Acceptance Criteria:** - [ ] Три предустановленных сценария (baseline, optimistic, pessimistic) - [ ] What-if: изменение параметров (доход +10%, расход -5%) - [ ] Сравнение сценариев возвращает сводку различий **Context:** Сценарии меняют параметры модели перед прогнозом. Использовать copy модели для каждого сценария. --- ### T5: Excel Sync (import/export) **Type:** feature **Description:** Реализовать ExcelSync: чтение модели из .xlsx (листы: Accounts, Transactions, Assets, Liabilities, Recurring), запись результатов прогноза в новый .xlsx. Использовать openpyxl. **Files:** - `sync/__init__.py` - `sync/excel_sync.py` **Depends on:** T2 **Acceptance Criteria:** - [ ] Импорт из Excel заполняет FinancialModel - [ ] Экспорт FinancialModel в Excel создаёт корректный .xlsx - [ ] Обработка ошибок при невалидном формате Excel **Context:** Каждая сущность — отдельный лист. Заголовки колонок = поля dataclass. --- ### T6: CLI (Typer) — все команды **Type:** feature **Description:** Реализовать CLI через Typer с командами: init, import, export, forecast, scenario, analyze. Главный entry point — консольная команда 'cf'. **Files:** - `cli/__init__.py` - `cli/main.py` - `pyproject.toml` **Depends on:** T2, T3, T4, T5, T7 **Acceptance Criteria:** - [ ] Команда 'cf init' создаёт пустую модель и JSON - [ ] Команда 'cf forecast --months 12' выводит таблицу прогноза - [ ] Команда 'cf analyze' вызывает AI Assistant - [ ] Команда 'cf import' и 'cf export' работают с Excel - [ ] Команда 'cf scenario' применяет и выводит сценарий **Context:** Typer entry point. Команды описаны в design-report раздел 5. rich для форматирования таблиц. --- ### T7: AI Assistant (промпты + интерфейс) **Type:** feature **Description:** Реализовать AssistantService: генерация промптов для AI на основе модели и прогноза, форматирование контекста (JSON-дамп модели + результаты forecast), заглушка для вызова AI API. Промпты на русском языке для анализа фин. состояния. **Files:** - `ai/__init__.py` - `ai/prompts.py` - `ai/assistant.py` **Depends on:** T3 **Acceptance Criteria:** - [ ] Промпт 'analyze' включает модель и прогноз в JSON - [ ] Промпт 'advice' формирует запрос на финансовые рекомендации - [ ] AssistantService возвращает структурированный ответ (заглушка) **Context:** AI — заглушка для MVP. Промпты должны быть готовы для реального API. --- ### T8: Тесты на все модули **Type:** test **Description:** Написать pytest-тесты для cashflow_model (сериализация), engine (forecast + scenarios), sync (excel roundtrip), ai (prompts), cli (invocation). **Files:** - `tests/test_model.py` - `tests/test_forecast.py` - `tests/test_scenarios.py` - `tests/test_excel_sync.py` - `tests/test_cli.py` - `tests/test_ai.py` - `tests/conftest.py` **Depends on:** T2, T3, T4, T5, T6, T7 **Acceptance Criteria:** - [ ] pytest запускается и все тесты проходят - [ ] Покрытие базовых сценариев для каждой сущности - [ ] Roundtrip-тест Excel: export → import → compare - [ ] Forecast-тест: известные входные данные → ожидаемый результат **Context:** Использовать tmp_path для временных файлов. conftest.py с fixture для тестовой модели.