Закупки и инвентарь
Модуль хранит заявки на закупку, позиции, маршруты согласования, бюджеты,
оборудование, обслуживание, передачи и поставщиков. 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, чтобы клиент не получил ссылку на ещё незафиксированное состояние.