Страница фиксирует минимальный эксплуатационный контур зрелого CMMS-модуля в Narmak: какие зависимости должны быть подняты, какие API и фоновые процессы считаются обязательными, и какой smoke-check нужно пройти после выкатки.
Что входит в release-ready контур
- Управление оборудованием, категориями, деревом активов и счётчиками.
- Полный lifecycle ремонта:
RepairRequest→WorkOrder→CompletedAct. - Контур осмотров и дефектов:
InspectionPlan,InspectionRecord,DefectJournal. - Контур ППР: графики, строки ППР, автосоздание заявок по просроченным строкам.
- Reliability/analytics: простои, причины отказов, dashboard агрегатов.
- Role-aware workflow: approvals, ограничения переходов, audit history.
- Внешний requester-поток через
c-api/v1/repair-requests/. - Technician-friendly очередь через
GET /api/v2/plant-maintenance/workorders/my-queue/.
Обязательные зависимости
- PostgreSQL с применёнными миграциями
plantmaintenance. - Redis для уведомлений, Celery и отложенных автоматизаций.
celery workerдля execution задач и сигналов.celery beatдля reminders, overdue-обновлений и ППР-автоматизаций.- Swagger/Redoc или сгенерированный frontend SDK после обновления API-контракта.
Миграции и backend rollout
bash
cd backend/narmak_v2
poetry install
poetry run python manage.py showmigrations plantmaintenance
poetry run python manage.py migrate plantmaintenance
poetry run python manage.py migrate
poetry run python manage.py check_plantmaintenance_readinessКритично проверить, что миграции с изменением enum/choices для RepairRequest.Source и новыми полями аудита применены без ручных правок в базе.
Обязательные Celery-задачи для CMMS
plantmaintenance.generate_active_ppr_items: генерация элементов ППР по активным графикам. Без этого preventive engine не пополняет очередь работ.plantmaintenance.check_overdue_inspections: перевод просроченных осмотров вOVERDUE. Влияет на dashboard и уведомления.plantmaintenance.check_meter_thresholds: контроль порогов счётчиков. Нужен для meter-driven maintenance.plantmaintenance.auto_create_repair_requests: автосоздание заявок по просроченным ППР. Связывает ППР с repair lifecycle.plantmaintenance.send_reminders: reminders по осмотрам, зависшим нарядам и активным простоям. Замыкает automation и notification loop.
Smoke test после релиза
Backend
- Открыть
/swagger/и убедиться, что доступны:repairrequests,workorders,completedacts,inspectionplans,defectjournals,analytics/dashboard. - Проверить
c-api/v1/repair-requests/под пользователем контрагента. - Проверить
GET /api/v2/plant-maintenance/workorders/my-queue/под исполнителем. - Проверить, что
transitionдляRepairRequestиWorkOrderвозвращает server-drivenavailable_transitions.
Frontend
main-office: открыть dashboard ТОиР, карточку заявки, карточку наряда и экранМои наряды.counterparty-office: создать внешнюю сервисную заявку и открыть её карточку.- Проверить, что build проходит после обновления API-клиента.
Бизнес-процесс
- Создать внешний
RepairRequestчерез requester-поток. - Утвердить заявку менеджером ТОиР.
- Создать
WorkOrder, назначить исполнителя. - Перевести наряд из technician-очереди в
in_progress, затем вcompleted. - Оформить
CompletedAct. - Проверить историю изменений и уведомления.
Минимальный тестовый пакет перед production
bash
cd backend/narmak_v2
poetry run pytest app/plantmaintenance/tests/ -q
cd ../../frontend/narmak-nx-angular-main
yarn nx run main-office:build:development
yarn nx run counterparty-office:build:developmentОсобое внимание:
- API-тесты на permissions и workflow.
- Контрактные тесты на requester API и technician queue.
- Smoke-build
main-officeиcounterparty-officeпосле изменений DTO/SDK.
Операционный мониторинг
- Dashboard ТОиР должен отображать актуальные KPI и активные уведомления.
- Flower должен показывать успешное выполнение
plantmaintenance.send_reminders. - Логи backend не должны содержать повторяющихся ошибок
PermissionError,ValidationErrorи проблем с audit/history endpoints. - При росте числа простоев контролируйте метрики
availability_percent,mtbf_hours,mttr_hours.
Риски rollout
celery beatвыключен: reminders и overdue-автоматизации перестают работать silently.- SDK не пересобран: frontend может использовать устаревший контракт.
- Пользователь не включён в нужную группу/не назначен исполнителем: server-driven transitions будут урезаны.
- Контрагент не привязан к
counter_party: requester portal не сможет подавать заявки.
См. также
- Модуль ТОиР (backend) — API, сервисы и модель данных
- ТОиР — фронтенд — фасад, маршруты и technician/requester сценарии
- Celery-задачи — фоновые процессы и расписания
- Развёртывание backend — общая инфраструктура Docker, Redis и PostgreSQL