itimpulse

← К проектам

Платформа StaffProBot (рус.)

Краткое описание продукта

StaffProBot — платформа для управления сменами, персоналом и выплатами. Владельцы и управляющие ведут объекты и расписания; сотрудники работают по сменам; система считает зарплату, отправляет уведомления и поддерживает договоры и шаблоны документов. Доступ — через Telegram-бот или веб-приложение (FastAPI); роли: владелец, управляющий, сотрудник, соискатель, суперадмин. Реализованы геолокация (PostGIS), календарное планирование с тайм-слотами, шаблоны и версии договоров, расчёт зарплаты с корректировками и биллингом, отзывы и рейтинги, уведомления со ссылками авто-логина в веб.

Бизнес-проблема

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

Решение

StaffProBot даёт один бэкенд для Telegram-бота и веб-приложения. Объекты имеют адреса и графики; тайм-слоты задают потребность в сменах; смены назначают сотрудников. Веб-календарь поддерживает планирование drag-and-drop; бот — планирование, отчёты и выдачу PIN для входа в веб. Договоры строятся на шаблонах и версиях; конструктор (мастер) в разработке. Зарплата считается по сменам с приоритетом ставок (договор → слот → объект); поддерживаются корректировки и графики выплат. Уведомления (смена, договор, оффер, напоминания) отправляются в Telegram и веб, в каждое сообщение подставляется ссылка с авто-логином. Реализованы отзывы и рейтинги с модерацией и обжалованиями. CI/CD прогоняет тесты и деплоит на прод через GitHub Actions.

Ключевые возможности

Обзор архитектуры

Карта системы (`doc/system-map.md`) описывает поток: **Роли** (владелец, управляющий, сотрудник, соискатель, суперадмин) используют **Веб** (FastAPI, Jinja2, Bootstrap 5, FullCalendar) или **Telegram-бот**. **Ядро** (apps/web, apps/bot, shared/, domain/) использует **PostgreSQL (PostGIS)**, **Redis** и **RabbitMQ**. **Celery** выполняет задачи по расчёту и расписанию. **YooKassa** — платежи; **WeasyPrint/ReportLab** — PDF договоров. Деплой — Docker Compose на проде с Nginx и Let's Encrypt; CI/CD через GitHub Actions.

Интеграции

| Система | Назначение |

|--------|------------|

| **PostgreSQL + PostGIS** | Основная БД; геоданные объектов и проверка местоположения |

| **Redis** | Кэш, сессии |

| **RabbitMQ** | Очередь для Celery |

| **Celery** | Расчёт зарплаты, напоминания, отложенные задачи |

| **YooKassa** | Платежи, биллинг |

| **Telegram Bot API** | Webhook бота, сообщения, PIN для веб-входа |

| **MinIO/S3** | Хранение документов и медиа (опционально Telegram) |

| **WeasyPrint / ReportLab** | PDF договоров |

Влияние на бизнес

Кейс: staffprobot

Проблема

Операционные процессы распределены между несколькими системами и требуют ручной синхронизации.

Инженерное решение

Реализован docs-driven pipeline с триггером по endlog и автоматической синхронизацией артефактов проекта.

Архитектура

Project manifest + integration manifests + извлечение знаний + статическая генерация сайта.

Интеграции

postgis, telegram-bot-api, yookassa

Бизнес-ценность

Быстрее обновляется инженерное портфолио, снижаются ручные операции по документации, повышается прозрачность между проектами.

Инженерный лог

Engineering log

Generated from `doc/changelog-entries.md`.

Run endlog pipeline to refresh this file.


2026 — Фаза 1: docs foundation и endlog протокол

Problem

Нужно унифицировать документацию и правила endlog для перехода к self-updating docs-driven платформе.

Engineering

Добавлены стандартизированные doc-файлы (ru/en), project-manifest.yaml, integration manifests и единый протокол #endlog в rules.

Business value

Проект подготовлен к автоматической синхронизации документации и генерации портфолио.

Tech

Markdown, YAML, Cursor rules.

Интеграции

StaffProBot Platform

Product Summary

StaffProBot is a platform for managing shifts, staff and payouts. Owners and managers maintain objects (locations) and schedules; employees work shifts; the system calculates pay, sends notifications and supports contracts and document templates. Access is via a Telegram bot or a web app (FastAPI); roles include owner, manager, employee, applicant and superadmin. The platform covers geolocation (PostGIS), calendar planning with time slots, contract templates and versions, payroll with adjustments and billing, reviews and ratings, and notifications with one-click login links to the web app.

Business Problem

Companies that run multiple locations and shift-based staff face manual scheduling, contract handling, pay calculation errors and poor visibility for employees. Coordinating shifts, contracts and pay across owners, managers and staff without a single system leads to double entry, disputes and delayed payments.

Solution

StaffProBot provides one backend for the Telegram bot and the web app. Objects have addresses and schedules; time slots define when shifts are needed; shifts assign employees. The web calendar supports drag-and-drop planning; the bot supports planning, reports and PIN-based web login. Contracts use templates and versions; a constructor (master) is in progress. Payroll is calculated from shifts with contract/slot/object rate priority; adjustments and payout schedules are supported. Notifications (shift, contract, offer, reminders) are sent to Telegram and web, each with an auto-login link to the relevant page. Reviews and ratings with moderation and appeals are implemented. CI/CD runs tests and deploys to production via GitHub Actions.

Key Capabilities

Architecture Overview

The system map (`doc/system-map.md`) describes the flow: **Roles** (owner, manager, employee, applicant, superadmin) use **Web** (FastAPI, Jinja2, Bootstrap 5, FullCalendar) or **Telegram Bot**. The **Core** (apps/web, apps/bot, shared/, domain/) uses **PostgreSQL (PostGIS)**, **Redis** and **RabbitMQ**. **Celery** runs payroll and scheduled tasks. **YooKassa** handles payments; **WeasyPrint/ReportLab** generate PDFs. Deploy is Docker Compose on production with Nginx and Let's Encrypt; CI/CD via GitHub Actions.

Integrations

| System | Role |

|--------|------|

| **PostgreSQL + PostGIS** | Main DB; geodata for objects and location checks |

| **Redis** | Cache, sessions |

| **RabbitMQ** | Message queue for Celery |

| **Celery** | Payroll jobs, reminders, scheduled tasks |

| **YooKassa** | Payments, billing |

| **Telegram Bot API** | Bot webhook, messages, PIN for web login |

| **MinIO/S3** | Document and media storage (optional Telegram storage) |

| **WeasyPrint / ReportLab** | PDF contracts |

Business Impact

Карта системы

System map

StaffProBot Platform (staffprobot.ru)

```

Roles (Owner / Manager / Employee / Applicant / Superadmin)

├── Web (FastAPI) — /owner/*, /manager/*, /employee/*, /admin/*, /moderator/*

│ Jinja2, Bootstrap 5, FullCalendar, HTMX, vanilla JS

└── Telegram Bot (python-telegram-bot) — webhook, PIN for web login

Core (apps/web, apps/bot, shared/, domain/)

├── Objects, TimeSlots, Shifts, Contracts, Templates

├── PayrollEntry, Adjustments, Billing, Tariffs

├── Reviews, Ratings, Notifications (web + Telegram, auto-login links)

├── Offers, Applications, Documents (MinIO/S3)

└── NotificationDispatcher, NotificationActionService

PostgreSQL (PostGIS) + Redis + RabbitMQ

├── Celery (celery_worker, celery_beat) — payroll, reminders, scheduled tasks

├── YooKassa — payments

├── WeasyPrint / ReportLab — PDF contracts

└── Telegram Bot API

Deploy: Docker Compose (prod), GitHub Actions → SSH pull, health check, deployments table

```