Наряды и заявки
Наряды и заявки: путь от заявки или дефекта до закрытия — наряд, бригада, выполнение, просрочка и история.
Возможности
- Список нарядов с плитками-счётчиками по статусам: «Заявка», «Назначен», «В работе», «Выполнен», «Закрыт», «Отменён» и «Просрочено». Нажатие на плитку статуса оставляет в списке только этот статус, повторное — снимает отбор.
- Поиск по номеру, названию и описанию наряда.
- «+ Наряд» — новый наряд вручную, по дефекту (участок, точка и описание берутся из дефекта) или из журнала осмотров («Наряд на обход» по контуру осмотра).
- Карточка наряда: смена бригады, ответственного, срока и формы обхода; кнопки перехода к следующему статусу; поле «Что сделано»; комментарии; история всех шагов.
- «Открытые на карте» — открытые наряды точками на карте; кнопка с прицелом в карточке — перейти к месту наряда.
- «Бригады» — где бригады сейчас (последние точки с телефонов); в карточке наряда с бригадой — «Трек бригады за сутки».
- «Заполненные формы» и «Фото с места работ» — то, что бригада прислала из полевого приложения.
- «Отключение для работ» — окно «Отключения» с местом работ из наряда.
Как это работает
Где хранятся данные. Наряды — таблицы веба tgid_work_order (наряд) и tgid_work_order_event (история). Десктоп ТГИД эти таблицы не читает. Связи с данными десктопа — по номерам, без внешних ключей: дефект (defect), участок (linesobj), узел (nodes), бригада (brigades), ответственный (nachalniki_uchastkov), контур осмотра (osmotr). Фото с места работ лежат в базе (tgid_work_order_photo), отметки узлов обхода — в tgid_work_order_check.
Номер. Сервер присваивает номер сам: Н-<год создания>-<номер записи из 5 цифр>, например Н-2026-00024.
Статусы и переходы.
| Статус | Куда можно перейти | Кнопки в карточке |
|---|---|---|
| Заявка | Назначен, Отменён | «Назначить», «Отменить» |
| Назначен | В работе, Заявка, Отменён | «Начать работу», «Вернуть в заявки», «Отменить» |
| В работе | Выполнен, Назначен, Отменён | «Выполнено», «Вернуть в назначенные», «Отменить» |
| Выполнен | Закрыт, В работе | «Принять и закрыть», «Вернуть в работу» |
| Закрыт | — | — |
| Отменён | Заявка | «Открыть снова» |
Наряд, у которого при создании указана бригада или ответственный, сразу получает статус «Назначен», без них — «Заявка». «Назначить» требует сохранённую бригаду или ответственного. «Выполнено» требует текст в поле «Что сделано». Закрытый и отменённый наряд не правится. Удалить наряд нельзя — ненужный отменяют.
Версия наряда. Каждая правка и смена статуса увеличивает номер версии (revision). Карточка отправляет на сервер версию, которую видит. Если наряд за это время изменил кто-то другой (например, бригада с телефона), сервер отказывает: «Наряд уже изменили — обновите карточку». Комментарий версию не меняет.
Связь с журналом нарушений. Наряд по дефекту при «Начать работу» ставит дефекту дату начала ремонта (если она пустая) и состояние «Ремонт». При «Выполнено» — дату завершения ремонта (если пустая) и состояние «После ремонта». Остальные поля дефекта наряд не трогает. В историю наряда пишется «дефект — «Ремонт»» или «дефект — «После ремонта»».
Обход по контуру осмотра. Наряд из журнала осмотров («Наряд на обход») получает вид «Осмотр», место — центр участков контура, описание «Обход участков контура осмотра «…»». Бригада на телефоне отмечает каждый узел участков контура. При «Выполнено» текст «Что сделано» попадает в «Результаты осмотра» контура, если там было пусто.
Просрочено. Срок прошёл, а наряд ещё открыт (заявка, назначен или в работе). Срок в карточке такого наряда подсвечен и подписан «Срок прошёл».
Что видно в списке. Плитки считают все наряды базы, без учёта поиска. В списке — до 500 нарядов: сначала открытые, по срочности («Аварийный», «Срочный», «Плановый»), затем по сроку.
Бригада на месте. Если телефон бригады передаёт местоположение и точка оказалась не дальше 100 м от места её открытого наряда, в карточке появляется «бригада на месте с …», а в истории — событие о прибытии (один раз).
Сохранение. «Сохранить» в карточке отправляет сразу бригаду, ответственного, срок и форму обхода, но сервер записывает только те поля, что действительно изменились, и только их перечисляет в истории: поменяли бригаду — в истории «Изменено: бригада». Если ничего не изменилось, сервер ничего не пишет: версия наряда та же, строки в истории нет.
Что нужно для работы
- Смотреть список, карточки, историю и наряды на карте может любой вошедший.
- Создавать, менять, переводить по статусам, комментировать — право «Журналы» (есть у ролей «Редактор» и «Администратор») и включённая запись (
MUTATIONS_ENABLED=true). Без этого нет кнопки «+ Наряд», переходов, поля комментария и кнопки «Отключение для работ». - «Бригады» и «Трек бригады за сутки» — право «Журналы»; это только чтение, включённая запись не нужна.
- Справочники: бригады (
brigades) и ответственные (nachalniki_uchastkov). Бригады правятся в «Исходные данные → Справочники». - Форма обхода появляется в наряде, только если есть хотя бы одна действующая форма в «Формах обходов».
Шаги
Откройте «Инструменты» и наберите в поиске «Наряды и заявки» — пункт выделен рамкой.

Нажмите пункт — откроется окно.

Кнопка «+ Наряд» открывает форму справа. Обязательно только «Что сделать»; дальше — вид работ, срочность, номер дефекта (если наряд на его устранение — участок и описание подтянутся из дефекта), участок, бригада, ответственный, начало и срок, описание и форма обхода, которую бригада заполнит на телефоне.

«Создать» — наряд получает номер и статус «Заявка» и появляется в списке. В карточке — бригада, ответственный и срок (их можно поменять и «Сохранить»), кнопки перехода к следующему статусу, комментарии и история. Если у наряда есть точка, кнопка с прицелом показывает её на карте.

Комментарий пишется внизу карточки и сразу виден всем, кто открывает наряд. «Отключение для работ» открывает окно отключений с участком наряда — плановое отключение готовится из наряда в один шаг. Наряд не удаляется: ненужный отменяют, история остаётся.

Примеры
История учебного наряда, копия Алматы. На копии Алматы 5 нарядов, все в статусе «Отменён»; плитка «Просрочено» — 0. Наряд Н-2026-00024 «Заменить задвижку в камере (учебный наряд)» создан по участку 133 без бригады, поэтому начал со статуса «Заявка». Место взято из участка: фрагмент 1, точка 76,9181 в. д., 43,2428 с. ш. История из трёх строк: «Заявка — Создан», комментарий «Бригада выезжает после 14:00», «Отменён». Версия наряда — 2: создание дало 1, отмена — 2, комментарий версию не поменял.
Справочники копий. На копии Алматы в справочнике ответственных 36 записей, бригад нет: наряд можно назначить только на ответственного, переключатель «Бригады» ничего не покажет. На копии Астаны бригад тоже нет. В журнале нарушений там 78 записей в состоянии «Нарушение» — по любой из них наряд, переведённый в «В работе», сменит состояние дефекта на «Ремонт».
Если не получается
- Нет кнопки «+ Наряд» — нет права «Журналы» или запись выключена на сервере. Окно показывает «Выберите наряд в списке.» вместо «Выберите наряд в списке или создайте новый.».
- «Некорректные параметры запроса: Назначьте бригаду или ответственного» — нажали «Назначить», не сохранив бригаду. Выберите бригаду или ответственного, нажмите «Сохранить», затем «Назначить».
- «Некорректные параметры запроса: Опишите, что сделано (результат)» — «Выполнено» с пустым полем «Что сделано».
- «Некорректные параметры запроса: Плановое окончание раньше начала» — срок раньше начала по плану.
- «Наряд уже изменили — обновите карточку» — наряд изменили после того, как вы его открыли. Выберите его в списке ещё раз.
- «Наряд Н-… закрыт — правка закрыта» или «… отменён — правка закрыта» — закрытый и отменённый наряд не правится; отменённый можно «Открыть снова».
- «Некорректные параметры запроса: Формы обхода N нет или она выключена» — форму выключили в «Формах обходов».
- «Некорректные параметры запроса: В контуре осмотра «…» нет участков» — наряд на обход по пустому контуру. Сначала добавьте участки в контур в журнале осмотров.
- «За сутки трека нет: бригада не передавала местоположение» — на телефоне бригады выключено «Передавать местоположение» или страница была закрыта.
- Красная строка над списком с текстом сервера или «Сервер API недоступен. Проверьте подключение к сети.» — список, справочники или слой карты не загрузились. Закройте строку и откройте окно ещё раз.
Для администратора
- Запись:
MUTATIONS_ENABLED=true, право «Журналы» (journals) в матрице прав. При входе через роли PostgreSQL (AUTH_BACKEND=pg) таблицы нарядов, фото и трека выдаются вместе с журналами (sql/pg_auth/03_grants.sql). - Таблицы
tgid_work_order,tgid_work_order_event,tgid_work_order_photo,tgid_work_order_check,tgid_field_trackAPI создаёт в базе города сам (city_schema). - Фото: JPEG, PNG или WebP до 2 МБ, не больше 30 на наряд; тип проверяется по содержимому файла. Точки трека старше 90 дней удаляются при записи новых.
- Действия с нарядами попадают в журнал действий пользователей.
Для разработчика
- API (
routers/work_orders.py,database/work_orders.py):GET /api/v1/work-orders/lookups,GET /api/v1/work-orders(status,brigade_id,fileid,q,open_only,limitдо 1000;counts,overdue),GET /api/v1/work-orders/geojson,GET /api/v1/work-orders/{id},POST /api/v1/work-orders,PATCH /api/v1/work-orders/{id}(revision; 0 снимает бригаду, ответственного, форму),POST /api/v1/work-orders/{id}/transition(to,revision,result,note,client_id),POST /api/v1/work-orders/{id}/comments,POST /api/v1/work-orders/{id}/photos,GET /api/v1/work-orders/photos/{photo_id},POST /api/v1/work-orders/field-defect,GET /api/v1/work-orders/{id}/route,POST /api/v1/work-orders/{id}/checks. Заполненные формы —GET /api/v1/work-orders/{id}/forms(routers/forms.py). Трек —POST|GET /api/v1/field/track,GET /api/v1/field/positions(routers/field_track.py). - Константы:
KINDS,PRIORITIES,STATUSES,TRANSITIONS,MAX_PHOTO_BYTES,MAX_PHOTOS,FIELD_DEFECT_SNAP_Mвdatabase/work_orders.py. Описание —itwin-api/docs/work-orders.md. - Веб:
components/WorkOrdersDialog.vue(ключworkOrders),utils/workOrders.ts(подписи переходов, точки карты), полевое приложение —pages/field.vue. - Тесты: API —
tests/test_work_orders.py,tests/test_work_order_route.py,tests/test_field_track.py; веб —tests/utils/workOrders.spec.ts,tests/utils/fieldQueue.spec.ts,tests/utils/fieldRoute.spec.ts,tests/utils/fieldTrack.spec.ts.
