Реализация бота для финансового учёта в мобильном приложении
«Потратил 500 на такси» — одно сообщение боту, и расход уже в категории «Транспорт» с датой и суммой. Быстрее, чем открывать любое нативное приложение. Но просматривать статистику, настраивать категории и устанавливать бюджеты — удобнее в мобильном интерфейсе, а не через команды бота.
Как разделяются задачи между ботом и мобильным приложением
Бот принимает ввод: текстовые сообщения с расходами/доходами, голосовые заметки (транскрибируются через Whisper API), быстрые кнопки для частых категорий. Мобильное приложение — это аналитический слой: графики, бюджеты, история транзакций с фильтрацией, экспорт.
Парсинг суммы из произвольного текста — отдельная задача. «Пятьсот за кофе», «−1200 продукты», «получил 45к» — форматы разные. На бэкенде для этого либо регулярные выражения с поддержкой кириллических числительных, либо небольшой языковой сервис (GPT-3.5-turbo с function calling возвращает {amount, currency, category, note} стабильнее regex при разнообразном вводе).
Мобильное приложение работает с уже структурированными данными через REST API:
// iOS, Swift — загрузка транзакций за период
struct Transaction: Codable {
let id: UUID
let amount: Decimal
let currency: String
let category: Category
let note: String?
let createdAt: Date
let source: TransactionSource // .bot, .manual, .import
}
func fetchTransactions(from: Date, to: Date) async throws -> [Transaction] {
var components = URLComponents(string: baseURL + "/transactions")!
components.queryItems = [
URLQueryItem(name: "from", value: ISO8601DateFormatter().string(from: from)),
URLQueryItem(name: "to", value: ISO8601DateFormatter().string(from: to)),
]
let (data, _) = try await URLSession.shared.data(from: components.url!)
return try JSONDecoder().decode([Transaction].self, from: data)
}
Аналитика и бюджеты
Ключевой экран — распределение расходов по категориям за выбранный период. Pie chart или donut chart с drill-down в список транзакций категории. На Flutter: fl_chart PieChart с touchCallback для навигации.
Бюджет по категории — это лимит на месяц с индикатором заполнения. Когда расходы достигают 80% лимита, бот сам отправляет предупреждение в чат. Логика на бэкенде: после каждой записи транзакции пересчитывается сумма за текущий месяц по категории и сравнивается с бюджетом.
Регулярные платежи (подписки, аренда) удобно добавлять один раз с признаком recurring — бот будет предлагать их записать в нужный день автоматически через APScheduler или аналог.
Что входит в мобильную часть
- Дашборд: сумма расходов/доходов за текущий месяц, баланс
- График расходов по категориям (pie/donut + bar по дням)
- История транзакций: поиск, фильтр по категории и источнику
- Управление категориями: создание, иконка, цвет, лимит бюджета
- Ручное добавление транзакции (не через бота)
- Экспорт в CSV
Сроки
3–5 рабочих дней для мобильного приложения. Бот и бэкенд оцениваются отдельно. Стоимость рассчитывается индивидуально после анализа требований.







