Skip to content

Commit 4d83223

Browse files
author
maxac
committed
docs: синхронизация README и ARCHITECTURE с кодом
- число тестов 692 -> 794 - поиск: точное слово в кавычках, подсветка совпадений, разбивка по описанию - строка «Свободно» в разделе Счета (get_free_to_spend) - экспорт Excel: 4 листа (Записи/Итоги/По месяцам/По категориям) - +5 недостающих файлов в таблицу тестов
1 parent 53590ba commit 4d83223

2 files changed

Lines changed: 16 additions & 8 deletions

File tree

ARCHITECTURE.md

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ FinanceBot/
5959
│ ├── family.py # семьи: membership, инвайт-коды, общие сводки и разбивки по категориям
6060
│ ├── admin.py # admin-выборки, ban, cascade-delete пользователя
6161
│ └── backup.py # выборки и bulk-insert для экспорта/бэкапа
62-
├── tests/ # 692 pytest-теста
62+
├── tests/ # 794 pytest-теста
6363
└── requirements.txt
6464
```
6565

@@ -507,7 +507,8 @@ Read-only функции (`reports.py`, `_common.py`) commit не делают.
507507
→ build_history_page() — текст + инлайн-навигация
508508
→ пагинация: ◀ [1/5] ▶
509509
→ фильтр по типу (Все / Расходы / Доходы) и по категории (топ-15)
510-
→ [🔍 Поиск] → ввод запроса (текст / >N / <N / =N) → постраничные результаты
510+
→ [🔍 Поиск] → ввод запроса (текст / "точное слово" / >N / <N / =N)
511+
→ постраничные результаты с подсветкой совпадений (<b>) + разбивка по описанию
511512
→ тап на запись → редактирование (сумма / категория / дата / счёт / удаление)
512513
```
513514

@@ -535,6 +536,8 @@ Read-only функции (`reports.py`, `_common.py`) commit не делают.
535536
```
536537
[Счета]
537538
→ get_account_balances() — балансы всех счетов
539+
→ get_free_to_spend() — строка «💸 Свободно»: суммарный баланс − непривязанный
540+
earmark активных целей − активные платежи до конца месяца (защита от двойного счёта)
538541
→ создать / переименовать / удалить (с переносом записей)
539542
→ перевод между счетами (↔️) + журнал переводов (🔁) с просмотром и отменой
540543
→ установить баланс (через balance_offset)
@@ -614,7 +617,7 @@ Read-only функции (`reports.py`, `_common.py`) commit не делают.
614617
→ FSM: waiting_for_export_period → выбор периода (месяц / 3 мес / год / всё)
615618
→ FSM: waiting_for_export_type → выбор типа (все / доходы / расходы)
616619
→ get_all_records_for_export() — выборка из БД
617-
→ _build_export_sync() — xlsx: лист «Записи» + лист «Итоги»
620+
→ _build_export_sync() — xlsx: листы «Записи», «Итоги», «По месяцам», «По категориям»
618621
→ отправка файла
619622
620623
[Импорт]
@@ -780,7 +783,7 @@ APScheduler (AsyncIOScheduler, TZ=Europe/Moscow), запускается в bot.
780783
| CHART_DPI | 150 |
781784
| TIMEZONE | Europe/Moscow |
782785

783-
## Тесты (692)
786+
## Тесты (794)
784787

785788
```bash
786789
pytest tests/ -v
@@ -802,16 +805,21 @@ pytest tests/ -v
802805
| test_parse_record.py | Парсинг быстрого ввода |
803806
| test_period_filters.py | Фильтры периодов и DB-запросы |
804807
| test_queries.py | Сложные SQL-запросы |
808+
| test_free_to_spend.py | «Свободно»: баланс − отложенное в цели − платежи, защита от двойного счёта |
805809
| test_search_filter.py | Поиск записей и фильтры истории |
806810
| test_budgets.py | Бюджеты: CRUD, прогресс, уведомления, сброс флагов |
807811
| test_export_import.py | Экспорт/импорт: парсинг xlsx, валидация строк, bulk insert, дубли |
808812
| test_export_import_tz.py | Экспорт/импорт: корректность временной зоны |
813+
| test_export_excel.py | Excel-билдеры (`core/export.py`): листы экспорта, шаблона и бэкапа |
814+
| test_backup.py | Бэкап/экспорт DB-геттеры (`requests/backup.py`): выборки + bulk-insert |
809815
| test_goals.py | Цели: CRUD, deposit/withdraw, edit, archive, smart sort, overdue, ETA, форматтеры, длительность накопления |
810816
| test_goals_errors.py | Цели: обработка ошибок и граничные случаи |
811817
| test_debts.py | Долги: CRUD, частичные погашения, выборка для напоминаний, каскадное удаление |
812818
| test_payments.py | Платежи: CRUD, mark_paid (перенос цикла), категория, запись расхода при оплате, выборка для напоминаний, форматтеры |
813819
| test_family_goals.py | Семейные цели: общая цель, взносы участников, атрибуция, права владельца |
814820
| test_notifications.py | Уведомления: форматтеры сводок (weekly/monthly/daily), DB-выборки |
821+
| test_scheduler.py | Планировщик: отправка сводок/напоминаний, retry, форматтеры, setup |
822+
| test_reports.py | Текстовые форматтеры отчётов и подписей (`core/reports.py`) |
815823
| test_family.py | Семья: membership, инвайт-коды, лимит участников, общие сводки и разбивки, права владельца |
816824
| test_admin.py | Админ-функции: выборки, бан, каскадное удаление, CSV-выгрузка, DAU/retention, динамика по дням |
817825
| test_error_tracker.py | Счётчик ошибок 24ч: учёт ERROR/CRITICAL, окно, игнор INFO/WARNING |

README.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
[![Python 3.14](https://img.shields.io/badge/python-3.14-blue)](https://python.org)
55
[![Ruff](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json)](https://github.com/astral-sh/ruff)
66

7-
Telegram-бот для учёта личных финансов на aiogram 3 + SQLAlchemy 2.0 async. Записи через текст без кнопок, история за любой период, графики по категориям, бюджеты по категориям, капитал (активы/пассивы с автоучётом счетов и долгов, снимки и история), финансовые цели (личные и семейные), долги и займы, напоминания о регулярных платежах, экспорт/импорт в Excel, авторассылки сводок и напоминаний, совместный семейный бюджет. 692 теста, модульная архитектура.
7+
Telegram-бот для учёта личных финансов на aiogram 3 + SQLAlchemy 2.0 async. Записи через текст без кнопок, история за любой период, графики по категориям, бюджеты по категориям, капитал (активы/пассивы с автоучётом счетов и долгов, снимки и история), финансовые цели (личные и семейные), долги и займы, напоминания о регулярных платежах, экспорт/импорт в Excel, авторассылки сводок и напоминаний, совместный семейный бюджет. 794 теста, модульная архитектура.
88

99
## Стек
1010

@@ -20,7 +20,7 @@ Telegram-бот для учёта личных финансов на aiogram 3 +
2020
## Возможности
2121

2222
- `+5000 зарплата` или `-200 кофе` — запись без кнопок, несколько строк сразу
23-
- Несколько счетов с выбором при вводе: создание, переименование, удаление с переносом записей, коррекция баланса, переводы между счетами (с журналом и отменой), история по конкретному счёту с пагинацией и фильтром по типу
23+
- Несколько счетов с выбором при вводе: создание, переименование, удаление с переносом записей, коррекция баланса, переводы между счетами (с журналом и отменой), история по конкретному счёту с пагинацией и фильтром по типу; строка «Свободно» — сколько можно потратить (баланс за вычетом отложенного в цели и предстоящих платежей)
2424
- История за 8 периодов + произвольный диапазон дат, постраничная навигация
2525
- Редактирование записей из истории: сумма, категория, дата, счёт; удаление с подтверждением
2626
- Отчёт по категориям: круговая диаграмма (топ-5 + «Прочее») с переключением периода месяц/квартал/год прямо под графиком и сравнением с прошлым месяцем
@@ -29,9 +29,9 @@ Telegram-бот для учёта личных финансов на aiogram 3 +
2929
- Динамика баланса: линейный график изменения баланса по дням за выбранный месяц
3030
- Капитал: живой список активов/пассивов (ручные записи + автоучёт балансов счетов и открытых долгов виртуальными строками), чистый капитал, снимки одним тапом и история с диффом
3131
- Пользовательские категории: CRUD, лимит 30 шт., умная суггестия по ключевым словам
32-
- Поиск по записям: текст, `>1000`, `<500`, `=250`; фильтр истории по типу операции и по категории
32+
- Поиск по записям: текст (с подсветкой совпадений и разбивкой результатов по описанию), точный поиск по слову в кавычках (`"газ"` не находит «газель»), `>1000`, `<500`, `=250`; фильтр истории по типу операции и по категории
3333
- Месячные бюджеты по категориям: установка лимита, прогресс-бар, уведомления при 80% и 100%
34-
- Экспорт записей в Excel (по периоду и типу операции, лист с итогами)
34+
- Экспорт записей в Excel (по периоду и типу операции, аналитические листы: итоги, по месяцам, по категориям)
3535
- Резервная копия через `/backup`: записи, бюджеты, снимок капитала, активы/пассивы в одном файле
3636
- Финансовые цели: создание/редактирование (имя/сумма/дедлайн), пополнение и снятие со счёта без засорения истории, быстрые суммы (10%/25%/50%/ежемес/остаток), индикаторы просрочки и достижения, ETA-прогноз, архив завершённых с длительностью накопления
3737
- Семейные цели: общая цель на семью со взносами от участников и атрибуцией вкладов; при роспуске семьи переходит во владение бывшего владельца без потери денег

0 commit comments

Comments
 (0)