Skip to content

pgorithm/pricecheckapi_public

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 

Repository files navigation

PriceCheck API (Public Profile)

Понимайте реальную цену покупок, а не только ценник.

PriceCheck помогает ответить на вопрос: действительно ли покупка выгодна?
Сервис анализирует чеки, нормализует товарные позиции, сравнивает цены между сетями и формирует понятные для пользователя выводы.

Этот репозиторий создан как публичная презентация продукта и моего подхода к разработке:

  • как системного аналитика,
  • как бизнес-аналитика и продуктового менеджера.
  • как backend-инженера.

Продукт в двух словах

PriceCheck превращает сырые чеки (фото, PDF с текстовым слоем или растром, текст, QR-ссылки на «короткие» и электронные чеки) в структурированные данные и отвечает на практические вопросы:

  • покупка была действительно выгодной;
  • как цена отличается между торговыми сетями и что показывает межсетевой индекс переплат по выбранным сетям;
  • насколько «скидка» соответствует рыночной картине;
  • какие паттерны трат формируются у пользователя, в том числе устойчивость во времени и нейтральные подсказки об уровне цен выбранных сетей относительно референса.

Фокус продукта: прозрачность потребительских цен, повышение финансовой осознанности и data-driven решения для B2C/B2B сценариев.


Ценность для пользователей (B2C)

  • Проверка честности скидок по историческим и агрегированным данным.
  • Сравнение стоимости одинаковых или сопоставимых товаров между сетями.
  • История чеков и аналитика, которая помогает планировать бюджет.
  • Понятный интерфейс через Telegram-бот как референсный клиентский канал.

Ценность для бизнеса (B2B)

  • API-first подход для интеграции в финтех, ритейл и программы лояльности.
  • Нормализация и аналитика товарных данных как сервисный слой для партнёров.
  • Корпоративный контур оплаты: сценарий paymentCheck с корпоративным Bearer, идемпотентностью по внешнему идентификатору платежа и одноразовой валидацией токена активации — удобно вшивать подписку в кассу партнёра без «двойных» списаний квоты при повторных запросах.
  • Агрегированные выгрузки с порогом k-anonymity: при малом размере когорты детальные строки не отдаются, чтобы снизить риск реидентификации в партнёрских отчётах.
  • Административный контур для операционного управления без ручной правки кода.
  • Архитектура, рассчитанная на масштабирование и white-label сценарии.

Что реализовано технически

  • Backend и API: FastAPI, доменная логика, валидация контрактов.
  • Данные: PostgreSQL + SQLAlchemy, миграции Alembic.
  • Фоновые процессы: Celery + Redis для асинхронных задач.
  • Файловый контур: S3-совместимое хранилище (MinIO) для чеков и артефактов.
  • Наблюдаемость: метрики продукта и пайплайна на /metrics, дашборды и SLO-ориентированные правила (Prometheus/Grafana).
  • Безопасность: fail-closed rate limiting (без bypass при деградации Redis), CSRF + rate limit для mutating-операций в админке, SSRF-защита webhook/QR fetch с повторной валидацией каждого redirect-hop.
  • AI в управляемом контуре: проверка схем ответов, fallback-сценарии и контроль качества данных на этапе распознавания и аналитики.

Бот: не "простой чат-скрипт", а интерфейс к ядру

Есть распространённое мнение, что Telegram-боты "простые".
В этом проекте бот — это лёгкая клиентская оболочка (thin client) над сложным backend-ядром:

  • бот отвечает за UX, сценарии и навигацию;
  • бизнес-логика, аналитика, нормализация, контроль качества данных, права доступа, лимиты, кэширование и расчёты живут в сервисном слое API.

Именно поэтому функциональность бота масштабируется без "разрастания" хендлеров: новые возможности добавляются в ядро и подключаются в UI-слой.

Что реализовано в боте

  • Онбординг и legal-compliance: /start, согласие на обработку ПД, ссылки на политику/условия, повторная активация после отзыва согласия.
  • Загрузка чеков: приём фото и PDF/изображений документом, валидация форматов, постановка в асинхронную обработку, корректная работа с пакетной загрузкой.
  • Лимиты и подписка в рантайме: показ остатка распознаваний, сценарий исчерпания лимита, переход к экрану подписки и восстановлению квоты.
  • История чеков: список "Мои чеки" с пагинацией, карточки результатов, удаление, возврат на нужную страницу, изменение даты чека из бота.
  • Карточка результата распознавания: магазин, сумма, дата, список нормализованных позиций, отклонения от рыночной цены по каждой позиции, итог "экономия/переплата", опциональная LLM-сводка.
  • Аналитика в боте (отдельный модуль):
    • сравнение по торговым сетям с индексом переплат по сетям в тех же отчётах, где это уместно по данным;
    • топ расходов;
    • профиль покупателя (в т.ч. блок о ценовом паттерне покупок относительно выбранных сетей, в нейтральных формулировках);
    • переплата/выгода по позициям;
    • структура расходов;
    • сравнение структуры с когортой;
    • сравнение с эталоном питания;
    • «Мои любимые торговые сети»: доли трат по сетям и тот же контур индекса, где данные доступны;
    • поиск товара по нормализованному каталогу;
    • разбор последнего чека.
  • Профиль и data-subject rights: "Мои данные", достижения (в т.ч. вехи реферальной программы для пригласивших), удаление аккаунта, отзыв согласия, отображение статуса тарифа/плана.
  • Подписка и платежи: экран тарифов, Telegram Stars invoice flow (pre-checkout + post-payment), активация/отмена подписки.
  • Обратная связь: отдельный сценарий сбора feedback с rate limit и сохранением тикета.

Админка: полноценный операционный контур

Админ-панель в проекте — это не "просмотр таблиц", а рабочая система управления продуктом и эксплуатацией.

Что реализовано в админке

  • Безопасный доступ и роли: логин/логаут, смена пароля, управление админ-аккаунтами (роли, блокировки, удаление), разделение прав.
  • Управление пользователями: просмотр пользователей, смена роли/подписки, бан/разбан, удаление, операции с системным пользователем.
  • Операции с чеками: список чеков, просмотр связанных LLM-запросов, редактирование/копирование/удаление.
  • Контур распознавания: настройки распознавания, управление JSON-схемой ответа, сервисные настройки инструментов и моделей.
  • Каталог нормализованных товаров: поиск и редактирование, ручной merge, dedup-процессы (light/full), вспомогательные инструменты сравнения и автодополнения.
  • История цен: просмотр и редактирование ценовых записей по товарам.
  • Prompt/контент-управление: переменные промптов, редактирование бот-текстов, управление продуктовым copy без деплоя кода.
  • Роли и продуктовые лимиты: редактирование role settings, лимитов и доступности аналитических инструментов по планам.
  • Достижения и Telegram emoji-каталог: CRUD достижений, пересчёт, синхронизация наборов кастомных emoji и биндингов.
  • B2B-контур: управление корпоративными API-ключами, корпоративный Swagger/OpenAPI внутри админки.
  • Торговые сети и индекс переплат: пересчёт снимков индекса, merge/архив сетей, согласованность с бот-отчётами по валюте и окну.
  • Обратная связь пользователей: список обращений из бота, роли с разделением чтения/записи, выгрузка в файл для поддержки.
  • Качество растровых чеков (операционный KPI): сводка по эвристикам качества фото-чеков для сопоставления с жалобами и настройкой препроцесса.
  • Эксплуатация и поддержка: backup/restore БД и аудит операций, cleanup-инструменты, просмотр журнала LLM-запросов и служебных панелей.

Моя роль в проекте

1) Разработка (Engineering)

  • Проектирование backend-архитектуры и API-контрактов.
  • Реализация и поддержка бизнес-логики распознавания и аналитики.
  • Настройка инфраструктурных компонентов и эксплуатационного контура.
  • Поддержка качества через тесты, миграции и технические регламенты.

2) Системный анализ (Systems Analysis)

  • Формализация требований в спецификации продукта (PRD).
  • Декомпозиция функционала на задачи с трассируемостью решений.
  • Проработка интеграционных сценариев и ограничений.
  • Управление изменениями требований без потери консистентности архитектуры.
  • Контрактный подход к интеграциям: API-first, явные входы/выходы, ограничения и обработка ошибок.
  • Описание бизнес-правил и edge-cases до реализации (роли, лимиты, статусы подписки, доступ к функциям).
  • Формализация семантики событий и KPI для воспроизводимой продуктовой аналитики.

3) Бизнес-анализ и Product Management

  • Формирование ценностного предложения для B2C и B2B сегментов.
  • Приоритизация backlog по бизнес-эффекту и рискам.
  • Определение метрик продукта и критериев успеха инициатив.
  • Связка стратегических целей продукта с технической реализацией.
  • Связка аналитических инструментов с измеримой пользовательской ценностью (экономия/переплата, сравнение сетей, структура трат).

Статус

Текущий этап: MVP / alpha.
Репозиторий отражает рабочий процесс продуктовой и инженерной разработки: от гипотез и требований до реализации, эксплуатации и улучшений.


Контакты

Открыт к обсуждению:

  • пилотов и партнёрств,
  • B2B-интеграций,
  • продуктовых и технических консультаций,
  • ролей на стыке engineering + system/business analysis.

About

ai-powered receipt analytics

Resources

Stars

Watchers

Forks

Contributors