172 lines
7.1 KiB
JSON
172 lines
7.1 KiB
JSON
{
|
||
"$schema": "metaagent-task-manifest",
|
||
"version": "1.0",
|
||
"session_id": "metaagent-002",
|
||
"goal": "Обновление metaagent-артефактов до v1.0.0, валидация существующего кода и окружения",
|
||
"created_at": "2026-07-12T20:00:00Z",
|
||
"tasks": [
|
||
{
|
||
"id": "T1",
|
||
"title": "Инициализация проекта и зависимостей",
|
||
"description": "Создать структуру директорий, pyproject.toml, venv, установить зависимости",
|
||
"type": "config",
|
||
"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 запускается"
|
||
],
|
||
"status": "completed"
|
||
},
|
||
{
|
||
"id": "T2",
|
||
"title": "Модель данных (dataclass + JSON serialization)",
|
||
"description": "Реализовать все сущности: Account, Transaction, RecurringCashflow, Asset, Liability, ForecastScenario, FinancialModel",
|
||
"type": "feature",
|
||
"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 через конструктор работает"
|
||
],
|
||
"status": "completed"
|
||
},
|
||
{
|
||
"id": "T3",
|
||
"title": "Forecast Engine (базовый прогноз)",
|
||
"description": "Реализовать ForecastService с методами forecast_cashflow, apply_recurring, project_balance",
|
||
"type": "feature",
|
||
"files": [
|
||
"engine/__init__.py",
|
||
"engine/forecast.py"
|
||
],
|
||
"depends_on": ["T2"],
|
||
"acceptance_criteria": [
|
||
"forecast_cashflow(months=12) возвращает список помесячных балансов",
|
||
"Регулярные платежи корректно проецируются на будущие периоды",
|
||
"Активы учитываются с ростом (growth_rate)",
|
||
"Обязательства учитываются с процентами и платежами"
|
||
],
|
||
"status": "completed"
|
||
},
|
||
{
|
||
"id": "T4",
|
||
"title": "Scenario Analysis",
|
||
"description": "Реализовать ScenarioService с методами: сценарии, what-if, сравнение",
|
||
"type": "feature",
|
||
"files": [
|
||
"engine/__init__.py",
|
||
"engine/scenarios.py"
|
||
],
|
||
"depends_on": ["T3"],
|
||
"acceptance_criteria": [
|
||
"Три предустановленных сценария (baseline, optimistic, pessimistic)",
|
||
"What-if: изменение параметров (доход +10%, расход -5%)",
|
||
"Сравнение сценариев возвращает сводку различий"
|
||
],
|
||
"status": "completed"
|
||
},
|
||
{
|
||
"id": "T5",
|
||
"title": "Excel Sync (import/export)",
|
||
"description": "Реализовать ExcelSync: чтение модели из .xlsx, запись результатов прогноза в .xlsx",
|
||
"type": "feature",
|
||
"files": [
|
||
"sync/__init__.py",
|
||
"sync/excel_sync.py"
|
||
],
|
||
"depends_on": ["T2"],
|
||
"acceptance_criteria": [
|
||
"Импорт из Excel заполняет FinancialModel",
|
||
"Экспорт FinancialModel в Excel создаёт корректный .xlsx",
|
||
"Обработка ошибок при невалидном формате Excel"
|
||
],
|
||
"status": "completed"
|
||
},
|
||
{
|
||
"id": "T6",
|
||
"title": "CLI (Typer) — все команды",
|
||
"description": "Реализовать CLI через Typer с командами: init, import, export, forecast, scenario, analyze, whatif, compare",
|
||
"type": "feature",
|
||
"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' применяет и выводит сценарий",
|
||
"Команда 'cf whatif' выполняет what-if анализ",
|
||
"Команда 'cf compare' сравнивает сценарии"
|
||
],
|
||
"status": "completed"
|
||
},
|
||
{
|
||
"id": "T7",
|
||
"title": "AI Assistant (промпты + интерфейс)",
|
||
"description": "Реализовать AssistantService: генерация промптов, заглушка для вызова AI API",
|
||
"type": "feature",
|
||
"files": [
|
||
"ai/__init__.py",
|
||
"ai/prompts.py",
|
||
"ai/assistant.py"
|
||
],
|
||
"depends_on": ["T3"],
|
||
"acceptance_criteria": [
|
||
"Промпт 'analyze' включает модель и прогноз в JSON",
|
||
"Промпт 'advice' формирует запрос на финансовые рекомендации",
|
||
"AssistantService возвращает структурированный ответ (заглушка)"
|
||
],
|
||
"status": "completed"
|
||
},
|
||
{
|
||
"id": "T8",
|
||
"title": "Тесты на все модули",
|
||
"description": "Написать pytest-тесты для всех модулей",
|
||
"type": "test",
|
||
"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-тест: известные входные данные → ожидаемый результат"
|
||
],
|
||
"status": "completed"
|
||
}
|
||
]
|
||
}
|