Финаналитика ИП: приложение для учёта доходов и расходов по банковской выписке

Этот проект я сделал для себя. Раз в месяц хотел понимать, сколько заработал, на что ушли деньги и какая набегает налоговая база, а получал это из банк-клиента и таблицы, которая устаревала на следующий день. Теперь загружаю выписку из банка и вижу картину месяца. От утверждённой спецификации до рабочей версии на сервере прошло два дня.

  • 2 дняот спецификации до рабочей версии на сервере
  • 425автотестов, написаны до кода
  • 7внешних зависимостей на всё приложение
  • 1 файлвыписка из банка раз в месяц

Заказчик

Я сам: индивидуальный предприниматель на упрощённой системе «Доходы» 6%, один расчётный счёт, около десяти операций в месяц. Приложение рассчитано на одного человека, и это осознанное ограничение, а не недоделка.

Что было

  • Банк-клиент показывает список платежей, но не отвечает на вопросы «сколько заработано за квартал», «сколько ушло на подрядчиков» и «какая база для налога с начала года».
  • Таблица отвечала, пока я не забывал её вести. Каждый месяц одни и те же операции приходилось разносить по категориям руками.
  • Бухгалтерская программа для этой задачи избыточна: мне не нужны отчётность и расчёт налога, нужна картина денег.
  • Отдавать выписки в сторонний онлайн-сервис не хотелось: это номер счёта и полная история оборотов.

Что сделал

  1. Спецификация до кода. Сначала дизайн-документ: сценарии, модель данных, правила категоризации, безопасность, что остаётся за рамками. Затем план из 16 задач. Код писался по плану, тест перед каждой функцией.
  2. Импорт выписки. Приложение читает стандартный файл обмена с 1С, который выгружает Сбербанк Бизнес. Повторная загрузка того же периода ничего не дублирует: у каждой операции свой отпечаток. После импорта итог сверяется с контрольными суммами банка, потерянная операция видна сразу.
  3. Категории и правила. Операция получает категорию по правилу: сначала по ИНН контрагента, затем по словам в назначении платежа. То, что я разметил руками, правила никогда не перезаписывают. Из любой операции правило создаётся в один шаг, поэтому со второго месяца размечать почти нечего.
  4. Обзор и отчёты. Доходы, расходы, остаток и справочная база УСН на одном экране, график по месяцам, расходы по категориям, движение денег за период, план против факта, список контрагентов с оборотами.
  5. Безопасность. Свой сервер, доступ по паролю и одноразовому коду из приложения-аутентификатора, регистрации нет вообще. Загруженный файл выписки на диск не сохраняется. Суммы хранятся в копейках целыми числами, чтобы не терять копейки на округлении.
  6. Проверка на реальных данных. На второй день загрузил настоящую выписку и нашёл то, чего не видно на синтетике: дата платёжного документа и дата зачисления расходятся, а для УСН важна вторая. Поправил, добавил тест.

Как выглядит

Ниже макеты экранов с условными цифрами: свои обороты я на сайт не выкладываю. Вёрстка и состав экранов как в рабочем приложении.

Экран «Обзор» приложения Финаналитика ИП: поступления, списания, сальдо, база УСН, график по месяцам и расходы по категориям. Цифры условные
Обзор. Шесть показателей за период, график по месяцам и расходы по категориям в сравнении с прошлым периодом.
Экран «Загрузка выписки»: сколько операций добавлено, сколько отброшено как дубликаты, сверка с контрольными суммами банка. Цифры условные
Загрузка выписки. Отчёт показывает, сколько операций добавлено, сколько отброшено как дубликаты и сошёлся ли итог с банком.
Экран операции: реквизиты платежа, выбор категории, учёт в базе УСН и создание правила по ИНН или назначению платежа. Данные условные
Разметка операции. Категория, учёт в базе УСН и правило на будущее задаются на одной странице.
Экран «План / Факт»: план и факт по категориям доходов и расходов, отклонение и процент выполнения. Цифры условные
План и факт. Отклонения подсвечены по смыслу: недобор выручки плохо, экономия на расходах хорошо.
Экран «Движение денег»: остаток на начало, поступления и расходы по категориям, остаток на конец, сверка с выпиской. Цифры условные
Движение денег. Переводы себе и возвраты показаны отдельно от доходов и расходов бизнеса, итог сверяется с остатком из выписки.

Как это строилось

Приложение написано вместе с Claude, и порядок работы важнее инструмента. Хронология по истории репозитория:

  • 30 августа. Дизайн-документ, план из 16 задач, первая версия по плану: импорт, категории, правила, обзор, вход с двумя факторами.
  • 31 августа. Развёртывание на сервере, проверка на реальной выписке, сверка с контрольными суммами банка, выбор периода, массовая разметка, отчёт о движении денег, разбор кода на безопасность с исправлениями, вёрстка под телефон.
  • 4 сентября. План по категориям и раздел «План и факт».
  • 8–9 сентября. Правки по внешнему отзыву на код, дополнительная проверка прав доступа на всех страницах, документация.

Итого 51 изменение за одиннадцать дней, около четырёх тысяч строк кода на Python, 425 автотестов. Быстро получилось не потому, что код пишет модель, а потому что до кода были спецификация и план, а после каждого шага тесты. Без этого скорость превращается в переделки.

Результат

  • Раз в месяц одна выписка из банка, и картина месяца готова: доходы, расходы по категориям, остаток, справочная база УСН с начала года.
  • Разметка занимает минуты: правила расставляют категории сами, руками остаётся пара новых операций.
  • Итог импорта сверяется с банком, поэтому цифрам можно верить без перепроверки по выписке.
  • Данные лежат на своём сервере под паролем и вторым фактором, резервная копия скачивается одной кнопкой.

Чего приложение не делает

Это не бухгалтерская программа. Оно не рассчитывает налог и взносы, не формирует отчётность и не заменяет бухгалтера: база УСН показана справочно. Один пользователь, один счёт, один банк. Несколько счетов и автоматическая категоризация языковой моделью сознательно вынесены за рамки первой версии, чтобы она вышла за дни, а не за месяцы.

Что это значит для клиента

Так же я делаю приложения для заказчиков: сначала документ о том, что приложение делает и чего не делает, затем план, затем код с тестами и проверка на реальных данных. Исходный код, документация и инструкция по развёртыванию остаются у вас. Подход подтверждён компетенцией 1С-Битрикс «Вайбкод-разработка».

Сроки и стоимость

Стоимость аналогичного приложения под вашу задачу: по запросу. Она зависит от источников данных, числа пользователей и требований к безопасности. Первая рабочая версия обычно готова за одну-две недели.