Files
nifodea/.agent/task-manifest.md
T
2026-07-12 19:46:07 +03:00

8.7 KiB
Raw Blame History

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 для тестовой модели.