Разработали веб-приложение для управления бюджетами кинопроектов. Система объединяет сметы, начисления, платежи, договоры, акты, подотчётные средства и финансовую аналитику в одном рабочем пространстве.
Платформа учитывает специфику производства фильмов и сериалов: расчёты по сменам и сериям, разные периоды производства, ставки специалистов, финансовые комиссии и распределение расходов между статьями бюджета.
Главная особенность проекта — связь между планированием и фактическими операциями. Пользователь видит, сколько запланировано, начислено и оплачено, какие обязательства остаются перед контрагентами и как будущие платежи влияют на прогноз расходов.
Задача
Создать единую систему финансового управления кинопроектами, в которой продюсеры, финансовые менеджеры и другие участники команды работают с общими данными в пределах своих полномочий.
Приложение должно было:
- поддерживать подробные многоуровневые сметы;
- рассчитывать расходы с учётом ставок, сроков, смен и серий;
- связывать плановые статьи с начислениями и платежами;
- учитывать бухгалтерское и управленческое представления операций;
- показывать задолженности перед контрагентами и помогать планировать выплаты;
- учитывать выдачу и расходование подотчётных средств;
- хранить договоры, акты и подтверждающие документы;
- формировать финансовые отчёты;
- разграничивать доступ сотрудников;
- сохранять историю изменений.
Основная задача заключалась в том, чтобы объединить финансовые процессы проекта и сохранить связь между каждой операцией, её назначением и влиянием на бюджет.
Проблема
Бюджет кинопроизводства зависит от множества взаимосвязанных параметров. Стоимость работы специалиста может рассчитываться за смену, день, неделю, месяц или весь проект. Одни расходы зависят от количества серий, другие — от продолжительности периода. Дополнительно необходимо учитывать комиссии, авансы и изменения производственных сроков.
При этом план, начисление и оплата обозначают разные состояния денег. Сумма может быть заложена в смету, но ещё не стать обязательством. Работа может быть выполнена и начислена, но оставаться неоплаченной. Деньги могут быть выданы под отчёт, а подтверждённые расходы появятся позже.
Отдельная сложность — различие бухгалтерского и управленческого учёта. Один банковский платёж может покрывать несколько статей бюджета и несколько фактических получателей. Для финансового контроля важно сохранить как исходную операцию, так и её распределение.
Совместная работа добавляет требования к сохранности данных. Если несколько сотрудников редактируют смету или документы, система должна обнаруживать конфликты и помогать разбирать изменения.
Решение
Мы разработали приложение, в котором каждый кинопроект получает отдельное рабочее пространство со своей сметой, справочниками, финансовыми операциями, документами и участниками.
В основе системы — связанная модель данных:
- смета определяет структуру и плановые расходы;
- начисления отражают возникшие обязательства;
- платежи фиксируют оплату;
- график платежей описывает будущие выплаты;
- договоры, акты и файлы дополняют операции документами;
- отчёты собирают финансовую картину из этих данных.
Для участников предусмотрены проектные роли. Исполнительный продюсер, финансовый менеджер, специалист по договорам и пользователь с доступом на просмотр работают с одним проектом, получая разрешённые им возможности. Frontend, backend, база данных, файловое хранилище и фоновые процессы разделены на самостоятельные компоненты.
Что реализовали
Рабочие пространства проектов
Каждый проект содержит собственные параметры: количество серий и смен, даты производства, периоды, компании, счета, контрагентов и участников. При создании система подготавливает структуру сметы, базовые справочники и настройки. Проекты можно вести независимо друг от друга, завершать и архивировать. Пользователь видит только проекты, к которым ему предоставлен доступ.
Многоуровневую смету
Разработали редактор с разделами, группами, статьями и вложенными строками. Пользователь может создавать структуру бюджета, добавлять детализацию, перемещать и дублировать статьи, назначать плановых контрагентов и настраивать таблицу.
Смета поддерживает ручные суммы и расчёты по параметрам, формулы и переменные проекта, разные типы затрат, даты и периоды, финансовую комиссию, внебалансовые статьи, фиксацию лимитов, блокировки платежей и начислений, поиск, фильтры, массовые действия и выгрузку в Excel. Итоги учитывают иерархию без повторного суммирования дочерних строк. Удаление статьи с финансовыми операциями ограничено, чтобы сохранить связи с фактическими данными.
Расчёты с учётом кинопроизводства
В системе предусмотрены семь типов плановых затрат: фиксированные, посменные, помесячные, понедельные, посерийные, подневные и почасовые. Количество можно задавать вручную или рассчитывать по датам и периодам проекта.
Формулы поддерживают арифметические операции, скобки, пользовательские переменные и системные показатели количества серий и смен. Общие параметры используются в нескольких статьях и позволяют согласованно пересчитывать бюджет при изменении условий производства.
Контроль плана, начислений и оплат
В смете объединены плановые показатели, начисленные расходы и фактические оплаты. Пользователь оценивает отклонение начислений и оплат от плана, разницу между начисленным и оплаченным, ожидаемые расходы с учётом будущего графика и статьи с перерасходом.
Финансовые показатели строятся по управленческим данным: бухгалтерский платёж и его управленческое распределение не суммируются повторно. Это позволяет различать освоение бюджета, возникшие обязательства и движение денег.
График платежей и прогноз расходов
Для статей сметы реализовали графики будущих выплат. Платежи распределяются вручную, равномерно или по периодическому правилу. При изменении плана график синхронизируется с сохранением оплаченных строк и индивидуальных настроек комиссии.
Показатель «Префакт» объединяет фактические оплаты по дату закрытия и неоплаченный график после неё. Закрытие периода сохраняет дату отсечения и историю действий, а после корректировки финансовых операций прогноз пересчитывается.
Бухгалтерский и управленческий учёт
Один бухгалтерский платёж можно распределить между несколькими статьями сметы и фактическими получателями. В бухгалтерском представлении сохраняется исходный платёж, а в управленческом — его подробная разбивка. Система проверяет соответствие суммы распределения сумме платежа без комиссии.
Начисления и посменный ввод
Реестр начисленных расходов поддерживает разовые, посменные и периодические начисления. Для ежедневных и ежемесячных расходов предусмотрен расчёт по календарным дням, включая периоды без заданной даты окончания. Отдельный экран пакетного ввода сохраняет изменения выбранной смены одной транзакцией.
Начисления могут автоматически создаваться из управленческих строк платежа. Такие записи связаны с исходной операцией и изменяются вместе с ней.
Финансовую комиссию
Комиссия учитывается в статьях сметы, начислениях, платежах, графиках и авансовых отчётах. Можно использовать процентную ставку или точную сумму. При распределении платежа комиссия разносится между управленческими строками с учётом округления.
Импорт банковских платежей
Реализовали загрузку платежей из поддерживаемых Excel-выгрузок с предварительным просмотром. Система показывает распознанные данные, ошибки и возможные дубли. Выбранные операции сначала сохраняются как черновики и не влияют на показатели, пока пользователь не дополнит и не проведёт их.
Сопоставления названий контрагентов запоминаются внутри проекта, а нераспознанные значения остаются подсказками для ручного выбора.
Подотчётные средства и авансовые отчёты
В приложении можно учитывать выдачу денег под отчёт, оформлять расходы и просматривать остатки по подотчётникам. Авансовый отчёт объединяет платежи, подтверждающие файлы, теги и настройки комиссии. Расходы связываются с исходными выдачами и статьями списания, поэтому путь денег прослеживается от выдачи сотруднику до отражения в бюджете.
Договоры и акты
Создали реестры договоров и актов, связанные с контрагентами, платежами и файлами. Для договоров доступны карточки, статусы согласования, поиск, фильтры, копирование и экспорт. В карточке собраны связанные платежи, акты, документы и история изменений. Реестр актов поддерживает собственные статусы, связи и настройку представления.
Дашборд и финансовую аналитику
На главном экране проекта собраны плановая сумма сметы, начисления, оплаты, задолженности перед контрагентами и остатки подотчётных средств.
Реализованы отчёты по задолженностям, начисленным и оплаченным суммам, расходам за дни и месяцы, посменным показателям, платежам и договорам, финансовой комиссии, источникам платежей, графику выплат, а также акт сверки. Доступны фильтры, раскрытие иерархии, графики и Excel-экспорт.
Файловое пространство
Файловый раздел поддерживает папки, категории, поиск, корзину и групповые действия. Файлы связываются с контрагентами, договорами, актами, платежами и авансовыми отчётами. Доступны множественная загрузка, предпросмотр и скачивание архивом.
Большие ZIP-архивы формируются отдельным фоновым процессом и передаются в объектное хранилище частями, без размещения всего архива в оперативной памяти.
Роли и разграничение доступа
Системные полномочия отделены от проектных ролей. Для участников настраиваются разрешения на разделы, просмотр, создание, изменение и удаление данных. Отдельно ограничены административные действия, интеграционные токены и изменение зафиксированных лимитов. Права проверяются на сервере, а интерфейс отражает доступные действия.
Историю изменений и защиту совместной работы
В системе есть общий журнал изменений проекта и отдельная история сметы. События можно искать и фильтровать по сотруднику, периоду, действию и типу объекта.
Для статей сметы, платежей, начислений, договоров и актов реализована проверка версии записи. Если объект уже изменил другой сотрудник, система сообщает о конфликте и предлагает обновить данные.
Резервные выгрузки проекта
Резервные выгрузки в Excel создаются вручную и по расписанию. В файл включаются смета, параметры, ставки комиссии, даты, периоды, переменные, финансовые операции и график платежей. Выгрузки сохраняются в файловом пространстве проекта, а история запусков доступна пользователю.
API для интеграций
Внешние системы подключаются через ограниченные по сроку API-токены. Токену назначаются права чтения или изменения и доступ к отдельным проектам. Секрет показывается только при создании, а доступ можно отозвать.
Техническая основа
Приложение построено на клиент-серверной архитектуре. Основной стек:
- React, TypeScript и Vite — пользовательский интерфейс;
- FastAPI и Python — API и бизнес-логика;
- PostgreSQL — финансовые данные и связи между сущностями;
- SQLAlchemy и Alembic — работа с данными и миграциями;
- MinIO / S3 — файловое хранилище;
- Redis — ограничение частоты запросов авторизации;
- Docker Compose — запуск компонентов;
- openpyxl — импорт и экспорт Excel;
- Recharts — графики.
Функциональность разделена на модули сметы, платежей, начислений, документов, отчётов, файлов и управления доступом. Основные реестры выполняют фильтрацию и пагинацию на уровне базы данных, интерфейсные разделы загружаются по мере открытия, а резервные выгрузки и файловые архивы создаются в отдельных процессах.
Безопасность
Реализованы подписанные токены авторизации, обновление сессий с ротацией refresh-токенов и ограничение частоты запросов входа. Доступ к проектам и файлам проверяется сервером. Файловое хранилище не открывается пользователям напрямую, а объекты сохраняются под техническими идентификаторами.
Контейнеры запускаются с ограниченными привилегиями. База данных и объектное хранилище не публикуются наружу основным Docker Compose. Изменения ключевых данных фиксируются в истории, а права на административные операции выделены отдельно.
Результат
Разработана единая система проектного бюджетирования, которая связывает производственный план, финансовые обязательства, оплаты и документы.
Продюсер получает сводную картину бюджета и отклонений. Финансовый менеджер — инструменты для работы с начислениями, платежами, комиссиями и задолженностями. Специалист по договорам — реестры документов со связанными операциями.
Главный результат — возможность проследить финансовый показатель от общей суммы до конкретной статьи, контрагента, платежа и документа. Изменения сохраняются в истории, совместное редактирование защищено проверкой версий, а отчёты формируются на основе общих данных проекта.
Что получил заказчик
- Систему бюджетирования с учётом специфики кинопроизводства.
- Отдельные рабочие пространства проектов.
- Многоуровневую смету с формулами и переменными.
- Расчёты по сменам, сериям и календарным периодам.
- Контроль плановых, начисленных и оплаченных расходов.
- Графики платежей и прогноз ожидаемых затрат.
- Бухгалтерское и управленческое представления операций.
- Импорт банковских платежей с проверкой и черновиками.
- Учёт подотчётных средств и авансовых отчётов.
- Реестры договоров и актов.
- Дашборд, финансовые отчёты и Excel-экспорт.
- Файловое пространство со связями с документами и операциями.
- Настраиваемые роли и серверную проверку прав.
- Историю изменений и защиту от конфликтов редактирования.
- Резервные выгрузки по расписанию.
- API для дальнейших интеграций.