metaagent updated
This commit is contained in:
+25
-32
@@ -1,14 +1,14 @@
|
||||
{
|
||||
"$schema": "metaagent-task-manifest",
|
||||
"version": "1.0",
|
||||
"session_id": "metaagent-001",
|
||||
"goal": "Спроектируй и реализуй MVP по README",
|
||||
"created_at": "2026-07-12T12:00:00Z",
|
||||
"session_id": "metaagent-002",
|
||||
"goal": "Обновление metaagent-артефактов до v1.0.0, валидация существующего кода и окружения",
|
||||
"created_at": "2026-07-12T20:00:00Z",
|
||||
"tasks": [
|
||||
{
|
||||
"id": "T1",
|
||||
"title": "Инициализация проекта и зависимостей",
|
||||
"description": "Создать структуру директорий, pyproject.toml, venv, установить зависимости (openpyxl, typer, pytest, ruff), настроить ruff",
|
||||
"description": "Создать структуру директорий, pyproject.toml, venv, установить зависимости",
|
||||
"type": "config",
|
||||
"files": [
|
||||
"pyproject.toml",
|
||||
@@ -24,16 +24,15 @@
|
||||
"acceptance_criteria": [
|
||||
"pyproject.toml создан с правильными зависимостями",
|
||||
"Все директории модулей созданы с __init__.py",
|
||||
"ruff lint проходит без ошибок на пустых модулях",
|
||||
"pytest запускается (0 tests, exit code 0)"
|
||||
"ruff lint проходит без ошибок",
|
||||
"pytest запускается"
|
||||
],
|
||||
"context": "Стек: Python 3.11+, openpyxl, typer, pytest, ruff. Структура из design-report.md раздел 3.",
|
||||
"status": "pending"
|
||||
"status": "completed"
|
||||
},
|
||||
{
|
||||
"id": "T2",
|
||||
"title": "Модель данных (dataclass + JSON serialization)",
|
||||
"description": "Реализовать все сущности: Account, Transaction, RecurringCashflow, Asset, Liability, ForecastScenario, FinancialModel. Каждая — dataclass с методами to_dict/from_dict. FinancialModel — корневой объект с методами save/load JSON.",
|
||||
"description": "Реализовать все сущности: Account, Transaction, RecurringCashflow, Asset, Liability, ForecastScenario, FinancialModel",
|
||||
"type": "feature",
|
||||
"files": [
|
||||
"cashflow_model/__init__.py",
|
||||
@@ -49,16 +48,14 @@
|
||||
"acceptance_criteria": [
|
||||
"Все сущности — dataclass с правильными полями и типами",
|
||||
"FinancialModel корректно сохраняется и загружается из JSON",
|
||||
"Создание Account, Transaction, Asset, Liability через конструктор работает",
|
||||
"demo-скрипт создаёт модель с тестовыми данными"
|
||||
"Создание Account, Transaction, Asset, Liability через конструктор работает"
|
||||
],
|
||||
"context": "Модели определены в design-report.md раздел 4. Использовать uuid4 для id.",
|
||||
"status": "pending"
|
||||
"status": "completed"
|
||||
},
|
||||
{
|
||||
"id": "T3",
|
||||
"title": "Forecast Engine (базовый прогноз)",
|
||||
"description": "Реализовать ForecastService с методами: forecast_cashflow (на N месяцев), apply_recurring (генерация recurring-транзакций), project_balance. Алгоритм: начальный баланс + доходы - расходы + изменения по активам/обязательствам.",
|
||||
"description": "Реализовать ForecastService с методами forecast_cashflow, apply_recurring, project_balance",
|
||||
"type": "feature",
|
||||
"files": [
|
||||
"engine/__init__.py",
|
||||
@@ -71,13 +68,12 @@
|
||||
"Активы учитываются с ростом (growth_rate)",
|
||||
"Обязательства учитываются с процентами и платежами"
|
||||
],
|
||||
"context": "Расчёт: balance_{t+1} = balance_t + income_t - expense_t + asset_growth_t - liability_change_t. См. design-report раздел 2.",
|
||||
"status": "pending"
|
||||
"status": "completed"
|
||||
},
|
||||
{
|
||||
"id": "T4",
|
||||
"title": "Scenario Analysis",
|
||||
"description": "Реализовать ScenarioService с методами: сценарии (optimistic, pessimistic, baseline), what-if модификация параметров, сравнение результатов сценариев.",
|
||||
"description": "Реализовать ScenarioService с методами: сценарии, what-if, сравнение",
|
||||
"type": "feature",
|
||||
"files": [
|
||||
"engine/__init__.py",
|
||||
@@ -89,13 +85,12 @@
|
||||
"What-if: изменение параметров (доход +10%, расход -5%)",
|
||||
"Сравнение сценариев возвращает сводку различий"
|
||||
],
|
||||
"context": "Сценарии меняют параметры модели перед прогнозом. Использовать copy модели для каждого сценария.",
|
||||
"status": "pending"
|
||||
"status": "completed"
|
||||
},
|
||||
{
|
||||
"id": "T5",
|
||||
"title": "Excel Sync (import/export)",
|
||||
"description": "Реализовать ExcelSync: чтение модели из .xlsx (листы: Accounts, Transactions, Assets, Liabilities, Recurring), запись результатов прогноза в новый .xlsx. Использовать openpyxl.",
|
||||
"description": "Реализовать ExcelSync: чтение модели из .xlsx, запись результатов прогноза в .xlsx",
|
||||
"type": "feature",
|
||||
"files": [
|
||||
"sync/__init__.py",
|
||||
@@ -107,13 +102,12 @@
|
||||
"Экспорт FinancialModel в Excel создаёт корректный .xlsx",
|
||||
"Обработка ошибок при невалидном формате Excel"
|
||||
],
|
||||
"context": "Каждая сущность — отдельный лист. Заголовки колонок = поля dataclass. См. design-report раздел 5.",
|
||||
"status": "pending"
|
||||
"status": "completed"
|
||||
},
|
||||
{
|
||||
"id": "T6",
|
||||
"title": "CLI (Typer) — все команды",
|
||||
"description": "Реализовать CLI через Typer с командами: init, import, export, forecast, scenario, analyze. Главный entry point — консольная команда 'cf'.",
|
||||
"description": "Реализовать CLI через Typer с командами: init, import, export, forecast, scenario, analyze, whatif, compare",
|
||||
"type": "feature",
|
||||
"files": [
|
||||
"cli/__init__.py",
|
||||
@@ -126,15 +120,16 @@
|
||||
"Команда 'cf forecast --months 12' выводит таблицу прогноза",
|
||||
"Команда 'cf analyze' вызывает AI Assistant",
|
||||
"Команда 'cf import' и 'cf export' работают с Excel",
|
||||
"Команда 'cf scenario' применяет и выводит сценарий"
|
||||
"Команда 'cf scenario' применяет и выводит сценарий",
|
||||
"Команда 'cf whatif' выполняет what-if анализ",
|
||||
"Команда 'cf compare' сравнивает сценарии"
|
||||
],
|
||||
"context": "Typer entry point. Команды описаны в design-report раздел 5. rich для форматирования таблиц.",
|
||||
"status": "pending"
|
||||
"status": "completed"
|
||||
},
|
||||
{
|
||||
"id": "T7",
|
||||
"title": "AI Assistant (промпты + интерфейс)",
|
||||
"description": "Реализовать AssistantService: генерация промптов для AI на основе модели и прогноза, форматирование контекста (JSON-дамп модели + результаты forecast), заглушка для вызова AI API. Промпты на русском языке для анализа фин. состояния.",
|
||||
"description": "Реализовать AssistantService: генерация промптов, заглушка для вызова AI API",
|
||||
"type": "feature",
|
||||
"files": [
|
||||
"ai/__init__.py",
|
||||
@@ -147,13 +142,12 @@
|
||||
"Промпт 'advice' формирует запрос на финансовые рекомендации",
|
||||
"AssistantService возвращает структурированный ответ (заглушка)"
|
||||
],
|
||||
"context": "AI — заглушка для MVP. Промпты должны быть готовы для реального API. См. design-report раздел 7.",
|
||||
"status": "pending"
|
||||
"status": "completed"
|
||||
},
|
||||
{
|
||||
"id": "T8",
|
||||
"title": "Тесты на все модули",
|
||||
"description": "Написать pytest-тесты для cashflow_model (сериализация), engine (forecast + scenarios), sync (excel roundtrip), ai (prompts), cli (invocation).",
|
||||
"description": "Написать pytest-тесты для всех модулей",
|
||||
"type": "test",
|
||||
"files": [
|
||||
"tests/test_model.py",
|
||||
@@ -171,8 +165,7 @@
|
||||
"Roundtrip-тест Excel: export → import → compare",
|
||||
"Forecast-тест: известные входные данные → ожидаемый результат"
|
||||
],
|
||||
"context": "Использовать tmp_path для временных файлов. conftest.py с fixture для тестовой модели.",
|
||||
"status": "pending"
|
||||
"status": "completed"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user