Corp/backend/procurement

Закупки и инвентарь

Модуль хранит заявки на закупку, позиции, маршруты согласования, бюджеты, оборудование, обслуживание, передачи и поставщиков. REST API опубликован под /api/v1/procurement/; точный контракт доступен в /api/docs/.

Код модуля

  • models.py — доменные модели и состояния;
  • services.py — вычисление маршрутов согласования и общая бизнес-логика;
  • activity.py — журнал действий;
  • notifications/ — verbs, handlers, signals и read-state integration;
  • api/v1/procurement/ — serializers, permissions, viewsets и router;
  • frontend/src/lib/api/procurement.ts — frontend client.

Router публикует resources requests, items, budgets, equipment-categories, equipment, maintenance, suppliers и stats. Workflow actions, фильтры и payload необходимо смотреть в OpenAPI, поскольку они меняются вместе с viewsets.

Уведомления и realtime

Закупки создают verb-based уведомления через notifications.signals.notify.send. Доставка выполняется общим channel router через Celery с учётом preferences и DND; прямого рабочего NotificationService в проекте нет.

Изменение состояния заявки также может отправлять procurement_update через единый пользовательский endpoint /ws/. Отдельный procurement socket не нужен.

При изменении workflow проверяйте object permissions, атомарность транзакции, activity log, получателей уведомлений и realtime payload. Уведомление следует планировать после commit, чтобы клиент не получил ссылку на ещё незафиксированное состояние.