119 lines
4.0 KiB
Markdown
119 lines
4.0 KiB
Markdown
# CashFlow Forecast
|
||
|
||
Личная финансовая модель с прогнозом денежных потоков, сценарным анализом и AI-ассистентом.
|
||
|
||
Python + JSON + Excel + AI.
|
||
|
||
## Установка
|
||
|
||
```bash
|
||
git clone <repo>
|
||
cd cashflow-forecast
|
||
python -m venv .venv
|
||
source .venv/bin/activate # Linux/Mac
|
||
# .venv\Scripts\activate # Windows
|
||
pip install -e .
|
||
```
|
||
|
||
## Использование
|
||
|
||
```bash
|
||
# Инициализация пустой модели
|
||
cf init
|
||
|
||
# Прогноз на 12 месяцев
|
||
cf forecast --months 12
|
||
|
||
# Сценарии
|
||
cf scenario baseline
|
||
cf scenario optimistic
|
||
cf scenario pessimistic
|
||
|
||
# What-if анализ
|
||
cf whatif --income 1.2 --expense 0.9 --growth 1.0 --months 12
|
||
|
||
# Сравнение всех сценариев
|
||
cf compare --months 12
|
||
|
||
# Импорт/экспорт Excel
|
||
cf import data.xlsx
|
||
cf export exports/report.xlsx
|
||
|
||
# AI-анализ (заглушка, генерация промпта)
|
||
cf analyze
|
||
```
|
||
|
||
### Пример: создание тестовых данных
|
||
|
||
Подготовьте Excel-файл с листами: `Accounts`, `Transactions`, `Recurring`, `Assets`, `Liabilities`. Заголовки колонок соответствуют полям моделей. Затем импортируйте:
|
||
|
||
```bash
|
||
cf import my_finances.xlsx
|
||
cf forecast --months 12
|
||
```
|
||
|
||
## Структура проекта
|
||
|
||
```
|
||
├── cashflow_model/ # Модели данных (dataclass + JSON)
|
||
│ ├── account.py # Account
|
||
│ ├── transaction.py # Transaction
|
||
│ ├── recurring.py # RecurringCashflow
|
||
│ ├── asset.py # Asset
|
||
│ ├── liability.py # Liability
|
||
│ ├── scenario.py # ForecastScenario
|
||
│ └── model.py # FinancialModel (корень, save/load JSON)
|
||
├── engine/ # Вычислительное ядро
|
||
│ ├── forecast.py # ForecastService — прогноз
|
||
│ └── scenarios.py # ScenarioService — сценарии + what-if
|
||
├── sync/ # Синхронизация с Excel
|
||
│ └── excel_sync.py # ExcelSync — import/export .xlsx
|
||
├── ai/ # AI-ассистент
|
||
│ ├── prompts.py # Шаблоны промптов
|
||
│ └── assistant.py # AssistantService (заглушка)
|
||
├── cli/ # CLI (Typer)
|
||
│ └── main.py # Команды: cf init/forecast/scenario/...
|
||
├── tests/ # Тесты pytest
|
||
│ ├── conftest.py # Фикстуры
|
||
│ ├── test_model.py
|
||
│ ├── test_forecast.py
|
||
│ ├── test_scenarios.py
|
||
│ ├── test_excel_sync.py
|
||
│ ├── test_ai.py
|
||
│ └── test_cli.py
|
||
├── data/ # JSON-модели
|
||
├── exports/ # Экспортированные .xlsx
|
||
├── .agent/ # Артефакты MetaAgent (планирование)
|
||
├── pyproject.toml # Зависимости и конфигурация
|
||
└── README.arch.md # Оригинальная архитектурная концепция
|
||
```
|
||
|
||
## Разработка
|
||
|
||
```bash
|
||
# Тесты
|
||
pytest
|
||
|
||
# Линтер
|
||
ruff check .
|
||
|
||
# Автоформат
|
||
ruff format .
|
||
```
|
||
|
||
### Зависимости
|
||
|
||
- Python >= 3.11
|
||
- openpyxl — работа с Excel
|
||
- typer — CLI
|
||
- rich — форматирование вывода
|
||
- pytest — тесты
|
||
- ruff — линтер
|
||
|
||
## Известные ограничения (MVP)
|
||
|
||
- **AI-ассистент** — заглушка. Промпты готовы, но не подключены к API.
|
||
- **База данных** — JSON-файлы (не подходит для многопользовательской работы).
|
||
- **Excel** — только `.xlsx` через openpyxl.
|
||
- **Лицензия** — не выбрана.
|