metaagent updated

This commit is contained in:
2026-07-12 21:48:27 +03:00
parent 5afea8238c
commit 07151f2622
6 changed files with 173 additions and 353 deletions
+12 -199
View File
@@ -1,8 +1,8 @@
# Task Manifest
**Session:** metaagent-001
**Goal:** Спроектируй и реализуй MVP по README
**Date:** 2026-07-12T12:00:00Z
**Session:** metaagent-002
**Goal:** Обновление metaagent-артефактов до v1.0.0, валидация существующего кода и окружения
**Date:** 2026-07-12T20:00:00Z
---
@@ -10,200 +10,13 @@
| 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 |
| T1 | Инициализация проекта и зависимостей | config | — | completed |
| T2 | Модель данных (dataclass + JSON serialization) | feature | T1 | completed |
| T3 | Forecast Engine (базовый прогноз) | feature | T2 | completed |
| T4 | Scenario Analysis | feature | T3 | completed |
| T5 | Excel Sync (import/export) | feature | T2 | completed |
| T6 | CLI (Typer) — все команды | feature | T2, T3, T4, T5, T7 | completed |
| T7 | AI Assistant (промпты + интерфейс) | feature | T3 | completed |
| T8 | Тесты на все модули | test | T2, T3, T4, T5, T6, T7 | completed |
**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 для тестовой модели.
**Total tasks:** 8 — all completed