Тестовое задание · система управления автосервисом

Согласование дополнительных работ и запчастей

Механик нашёл дополнительную неисправность. Ниже - как провести это через систему: предложить клиенту, получить решение по каждой позиции, пересчитать смету и срок и оставить след, по которому потом можно разобраться, что и почему изменилось.

КандидатАнтонов Кирилл Андреевич
ПозицияPython-разработчик, автоматизация
Дата18.09.2026
Время на задание2 ч 40 мин
СвязьTelegram @ant0n0vkaa
Срок реализации
2 недели
10 рабочих дней после знакомства с проектом
Стоимость
100 000 ₽
фиксированная за описанный объём
Готов приступить
Сразу
в день подтверждения договорённостей
Загрузка
40 ч / нед
проектно, оформление через ИП

Что входит в стоимость и что может на неё повлиять - в разделе 11.

Пункт 1 задания

Вопросы к вам

Отвечать письменно не нужно - это список того, что я бы уточнил на старте. Отсортирован по силе влияния: первые четыре меняют модель данных, остальные - правила и интерфейс. Дальше в документе я отвечаю на них сам, чтобы работа не стояла.

  1. Что для вас является достаточным подтверждением согласия клиента: устного подтверждения по телефону с фиксацией сотрудником хватает, или нужна подпись либо код из СМС? Отсюда следует, нужен ли клиенту отдельный интерфейс и храним ли мы доказательство согласия, а не только запись о нём.
  2. Есть ли порог, ниже которого доработку можно делать без отдельного согласования - скажем, до определённой суммы или процента от исходной сметы? Кто этот порог устанавливает? Если порога нет, каждая мелочь останавливает ремонт, и процесс начнут обходить мимо системы.
  3. Клиент решает по каждой позиции или по предложению целиком? Может ли он согласовать работу, но отказаться от запчасти, без которой она невозможна? Определяет, нужна ли связка позиций и на каком уровне живёт статус.
  4. Откуда берётся цена: есть ли в системе прайс нормо-часов и запчастей, или мастер вводит суммы руками? Что делать, если закупочная цена изменилась уже после согласования? Определяет, храним ли мы снимок цены в позиции или ссылку на справочник.
  5. Какие каналы связи с клиентом используются сейчас и какой из них основной: звонок, СМС, мессенджер, личный кабинет?
  6. Что делать, если клиент не отвечает, а машина занимает подъёмник: есть ли правило эскалации, платного хранения или право руководителя решить самостоятельно?
  7. Нужна ли интеграция со складом и 1С, и считается ли резерв запчасти частью согласования или отдельным шагом?
  8. Система должна технически запрещать механику делать несогласованные работы, или достаточно фиксировать нарушение и уведомлять руководителя?
  9. Сколько раз можно пересогласовывать одно предложение? Ведём версии или каждая попытка - отдельный документ?
  10. Кто вправе дать скидку или списать позицию, и проходит ли это через тот же процесс?
  11. Нужна ли печатная форма дополнительного соглашения к заказ-наряду и как она нумеруется?
  12. Новый срок считает система по нормо-часам и срокам поставки, или мастер ставит дату вручную?
Пункт 2 задания

На чём построено решение

Ответов пока нет, поэтому фиксирую собственные решения - всё дальнейшее опирается на них. В скобках указано, что придётся переделать, если у вас принято иначе.

  • 1Решение принимается по каждой позиции. Поэтому статус живёт и на предложении, и на позиции: статус предложения - производный. Если согласование только целиком, половина логики уходит.
  • 2Позиции собираются в пакеты. Работа и запчасти, без которых она невозможна, согласуются вместе: нельзя согласовать замену дисков и отказаться от самих дисков. Влияет на интерфейс и проверки.
  • 3Достаточно зафиксировать факт согласия. Храним канал, сотрудника, точное время, дословный комментарий и снимок состава. Подпись и код из СМС - за рамками первой версии, но модель данных к ним готова.
  • 4Цена фиксируется снимком. При формировании предложения цена копируется в позицию. Позднее изменение прайса не меняет согласованную сумму: клиент согласовал конкретные цифры.
  • 5Предложение версионируется. После отправки правка запрещена, любое изменение создаёт версию +1, прежняя помечается заменённой. Так история остаётся читаемой.
  • 6Запчасти резервируются в момент согласования. Раньше - нельзя, иначе остаток блокируется под несогласованные заказы. Наличие проверяется дважды: при формировании и при согласовании.
  • 7Запрет на работы до согласования - мягкий. Перевести позицию в работу нельзя, но если она всё же отмечена выполненной, создаётся инцидент и уведомление руководителю. Жёсткую блокировку в сервисе обходят, инцидент - нет.
  • 8Один активный черновик на заказ-наряд. Новые находки добавляются в текущее предложение, пока оно не отправлено. После отправки создаётся следующее по номеру.
  • 9Срок считает система, мастер может переопределить. Расчёт по сумме нормо-часов и максимальному сроку поставки; ручное значение требует комментария и попадает в историю.
  • 10Роли - как в задании: механик, мастер-приёмщик, кассир, руководитель. Отдельной роли оператора нет, её функции у мастера-приёмщика.
Пункт 3 задания

Как идёт процесс

Процесс разделён на две зоны ответственности: техническую - механик находит и обосновывает, и коммерческую - мастер-приёмщик оценивает, говорит с клиентом и фиксирует решение. Разделение нужно, чтобы механик не назначал цены, а мастер не выдумывал неисправности.

Механик нашёл неисправностьфото или замер обязательны
Черновик предложенияработы, запчасти, обоснование
Проверка мастером-приёмщикомставит цены и срок
правки - назад в черновик
Отправлено клиентусостав и цены заморожены
нет ответа - напоминание и эскалация
Решение клиентапо каждому пакету отдельно
Отказ
Смета не меняетсяпричина остаётся в истории
Всё или часть
Пересчёт сметы и срокарезерв запчастей на складе
В работумеханик видит разрешённое
Выполнено
В документы и на оплату

Схема 1. Путь предложения от находки механика до документов.

Что происходит на каждом шаге

  1. Находка. Механик фиксирует неисправность, прикладывает фото или замер. Без обоснования предложение не уйдёт дальше - это защита от «на всякий случай заменим».
  2. Формирование. Работы подтягиваются из справочника с нормо-часами, запчасти - из каталога с проверкой остатка. Позиции группируются в пакеты.
  3. Передача клиенту. Мастер выбирает канал и отправляет. Отправка замораживает состав и цены.
  4. Решение. По каждому пакету: согласовано, отклонено или ждём. Частичное согласование - обычный случай, а не исключение.
  5. Фиксация. Пишется кто зафиксировал, когда, каким способом и что именно сказал клиент.
  6. Передача в работу. В наряде механика появляются только согласованные позиции.
  7. Пересчёт. Смета и срок обновляются, обе величины хранятся как «было» и «стало».
  8. Документы. Согласованное идёт в акт и счёт, отклонённое - в перечень рекомендаций.

Решения, на которых держится процесс

Отправка - точка невозврата. До неё правим свободно, после - только новой версией. Иначе нечем подтвердить, с чем именно согласился клиент.

Отказ тоже результат. Отклонённые позиции не удаляются, а остаются рекомендациями: при следующем визите видно, что замену наконечников предлагали полгода назад.

Срок пересчитывается вместе с ценой. Частая ошибка - согласовать деньги и забыть про дату выдачи. Если срок вырос, система требует отдельной отметки, что клиент об этом знает.

Молчание - не тупик. Через заданное время предложение уходит руководителю, а машина попадает в отчёт по занятым постам.

Пункт 4 задания

Кто что может делать

ДействиеМеханикМастер-приёмщикКассирРуководительВ историю
Создать черновик предложениядаданетдада
Добавить и удалить позицию в черновикедаданетдада
Проставить или изменить ценунетданетдада, со старым значением
Отправить предложение клиентунетданетдада, с каналом
Зафиксировать решение клиентанетданетдада, обязательно
Разрешить выполнение работнетавтоматически по согласованиюнетвручную, с обоснованиемда
Отменить или изменить принятое решениенетдо начала работнетда, всегдада, с причиной
Отметить работу выполненнойдаданетдада
Принять оплату по изменённой сметенетнетдадада
Видеть историю и расхождение «было - стало»свои позициидаитогида-
Удалить предложение или запись историизапрещенозапрещенозапрещенозапрещено-

Запрещено всем без исключения

  • Удалять отправленное предложение, решение клиента или запись истории - только отмена с причиной.
  • Менять состав и цены после отправки без создания новой версии.
  • Переводить в выполнение позицию, по которой нет согласования.
  • Фиксировать решение задним числом: время ставит система.
  • Принимать оплату, пока есть позиции без решения.

Что обязательно попадает в историю

  • Создание, изменение состава и цены - со старым и новым значением.
  • Отправка клиенту: канал, время, кто отправил, номер версии.
  • Решение по каждой позиции: кто зафиксировал, когда, каким способом, комментарий.
  • Пересчёт сметы и срока: было и стало.
  • Отмена решения, отзыв согласования, ручное разрешение работ руководителем.
  • Попытка запрещённого действия - как инцидент, а не как ошибка интерфейса.
Пункт 5 задания

Статусы и переходы

Статусов два уровня. На позиции - решение клиента, на предложении - общий итог. Иначе частичное согласование не описать честно: статус «согласовано частично» не говорит, что именно разрешено делать, а статус позиции говорит.

Уровень предложения
ЧЕРНОВИКФормируется, виден только сотрудникам, правится свободно.
ПОДГОТОВЛЕНОЦены и срок проставлены, проверено мастером.
ОТПРАВЛЕНО_КЛИЕНТУСостав и цены заморожены, ждём решение.
СОГЛАСОВАНО_ПОЛНОСТЬЮВсе позиции разрешены.
СОГЛАСОВАНО_ЧАСТИЧНОЧасть разрешена, часть отклонена.
ОТКЛОНЕНОКлиент отказался полностью, смета не меняется.
ПРОСРОЧЕНООтвета нет дольше контрольного времени, ушла эскалация.
ОТОЗВАНОКлиент передумал после согласования, до начала работ.
ОТМЕНЕНОСнято сотрудником до решения клиента, с причиной.
ЗАМЕНЕНО_ВЕРСИЕЙСоздана новая версия, эта осталась в истории.
ПЕРЕДАНО_В_РАБОТУРазрешённые позиции в наряде механика.
ВЫПОЛНЕНОВсе разрешённые позиции закрыты, ушло в документы.
Уровень позиции

ожидает согласована отклонена снята сотрудником в работе выполнена нет запчасти

1 · Подготовка
ЧЕРНОВИК→ подготовлено, отменено
ПОДГОТОВЛЕНО→ отправлено, назад в черновик
2 · Ожидание
ОТПРАВЛЕНО_КЛИЕНТУ→ любое решение, просрочено, заменено версией
ПРОСРОЧЕНО→ повторная отправка, отменено
ЗАМЕНЕНО_ВЕРСИЕЙконечный, остаётся в истории
3 · Решение
СОГЛАСОВАНО_ПОЛНОСТЬЮ→ в работу, отозвано
СОГЛАСОВАНО_ЧАСТИЧНО→ в работу, отозвано
ОТКЛОНЕНОконечный
ОТОЗВАНОконечный, до начала работ
ОТМЕНЕНОконечный, снято сотрудником
4 · Исполнение
ПЕРЕДАНО_В_РАБОТУ→ выполнено
ВЫПОЛНЕНОконечный, идёт в документы

Схема 2. Статусы предложения по стадиям; под каждым - куда из него можно перейти.

Правила, которые легко упустить

  • Из ОТПРАВЛЕНО_КЛИЕНТУ нельзя вернуться в ЧЕРНОВИК: только новая версия или отмена. Иначе теряется доказательство того, что видел клиент.
  • ОТОЗВАНО доступно, пока ни одна позиция не начата. Если работы начаты, отзыв применяется только к неначатым.
  • Позиция может стать невыполнимой из-за отсутствия запчасти уже после согласования - это не отказ клиента и требует отдельного решения, а не тихого удаления.
  • Предложение не может быть ВЫПОЛНЕНО, пока есть позиции без решения: касса заблокирована до их закрытия.
Пункт 6 задания

Сложные ситуации

Десять ситуаций из задания и две, которые добавил от себя - обе встречаются в сервисе регулярно.

01Клиент согласовал только часть

Обычный сценарий, а не ошибка. Предложение получает статус «согласовано частично», разрешённые пакеты уходят в работу, отклонённые остаются рекомендациями. Смета пересчитывается только по согласованному.

02После согласования изменилась стоимость

Согласованная сумма неизменна: цена зафиксирована в позиции. Если поставщик поднял цену, создаётся новое предложение на разницу с отдельным согласованием. Без согласия клиента разница в счёт не попадает, но расхождение видно руководителю.

03Нужной запчасти нет на складе

Наличие проверяется дважды: при формировании и при согласовании. Если запчасть пропала между этими точками, пакет помечается невыполнимым, мастер получает задачу и предлагает аналог или новый срок. Работа из этого пакета в наряд не попадает.

04Клиент согласовал, потом передумал

Работы не начаты - отзыв, позиции уходят в отклонённые, резерв снимается. Начаты - отзыв применяется только к неначатым, по начатым фиксируется фактический объём и он остаётся к оплате, а клиент получает уведомление о том, что уже сделано.

05Мастер добавил неправильную позицию

До отправки - удаляется, запись об удалении остаётся. После отправки - создаётся версия +1, клиент видит исправленное предложение. Если ошибку заметили после согласования, позиция снимается с обязательной причиной и в счёт не идёт.

06Двое одновременно правят предложение

Блокировка по номеру версии: при сохранении сравнивается версия, с которой начинали. При расхождении изменения не теряются - второй сотрудник видит, что именно изменилось, и подтверждает слияние. На карточке видно, кто ещё её открыл.

07Работы начали до согласования

Перевести позицию в работу без согласования система не даст. Если факт всплыл позже, создаётся инцидент с уведомлением руководителю, позиция помечается как выполненная без согласования и автоматически в счёт не попадает - решение принимает руководитель.

08Клиент не отвечает

Через контрольное время (по умолчанию 2 часа рабочего дня) предложение уходит в «просрочено», мастер получает напоминание, руководитель видит машину в отчёте по простою постов. Ремонт продолжается в объёме исходного согласования. Вариант «делать без ответа» недоступен.

09Согласование получено по телефону

Основной канал в жизни. Мастер отмечает способ «телефон», обязательно вносит дословную формулировку клиента, время ставит система. Плюс автоматическое дублирование в СМС: «вы согласовали работы на сумму X, срок сдвигается на Y» - дешёвая защита в спорной ситуации.

10После начала работ нашли ещё неисправности

Создаётся следующее предложение по тому же заказ-наряду, нумерация сквозная: доп. 1, доп. 2. Предыдущее согласование не затрагивается. В карточке видна вся цепочка и суммарное отклонение от первоначальной сметы.

11добавлено мнойСогласование принял один мастер, смену принял другой

Решение привязано к сотруднику, который его зафиксировал, а не к текущей смене. Принимающий смену видит, кто и когда зафиксировал, и может связаться с ним. Переоформить решение на себя нельзя.

12добавлено мнойМашина юрлица, решение принимает не водитель

У корпоративного клиента согласующее лицо часто не тот, кто пригнал машину. В карточке клиента хранится, кто вправе согласовывать и до какой суммы; при превышении система требует подтверждения от ответственного лица.

Пункт 7 задания

Требования и критерии приёмки

Критерии написаны так, чтобы их можно было проверить руками при приёмке: конкретное состояние, конкретное действие, конкретный результат.

ФТ-1Формирование предложения

Механик фиксирует найденную неисправность, чтобы мастер передал её клиенту.

Если заказ-наряд в статусе «в ремонте»

Когда механик добавляет работу из справочника и связанные запчасти

То создаётся черновик, подтягиваются нормо-часы и остаток на складе, а без обоснования предложение отправить нельзя.

ФТ-2Заморозка состава при отправке

Если предложение подготовлено

Когда мастер нажимает «Отправить клиенту»

То фиксируется снимок состава и цен, редактирование блокируется, записываются канал и время, запускается таймер ожидания.

ФТ-3Фиксация решения по позициям

Если предложение отправлено клиенту

Когда мастер отмечает решение по каждому пакету и указывает способ получения

То для способа «телефон» требуется комментарий, сохраняются автор и время, пересчитывается статус предложения, а сохранить решение с незакрытым пакетом нельзя.

ФТ-4Передача разрешённого в работу

Если есть согласованные позиции

Когда решение сохранено

То они появляются в наряде механика с пометкой «разрешено», отклонённые не появляются вовсе, запчасти резервируются.

ФТ-5Пересчёт сметы и срока

Если решение сохранено

Когда система пересчитывает итог

То показываются первоначальная сумма, разница и новая сумма, прежний и новый срок выдачи; при росте срока требуется отметка, что клиент уведомлён.

ФТ-6Блокировка несогласованных работ

Если позиция не согласована

Когда механик пытается взять её в работу

То система отказывает с понятным сообщением, а попытка записывается в историю.

ФТ-7Одновременное редактирование

Если двое открыли одно предложение

Когда второй сохраняет изменения поверх изменившейся версии

То показывается расхождение по позициям и требуется подтверждение, изменения первого не затираются.

ФТ-8Разбор для руководителя

Если по заказ-наряду были дополнительные согласования

Когда руководитель открывает историю

То он видит хронологию: версии, кто и когда отправил, решение по каждой позиции со способом и комментарием, пересчёт «было - стало» по сумме и сроку.

ФТ-9Блокировка кассы

Если есть позиции без решения

Когда кассир пытается закрыть заказ-наряд к оплате

То оплата не проводится и показывается список позиций, по которым решения нет.

ФТ-10Документы

Если согласованные работы выполнены

Когда формируются акт и счёт

То согласованные позиции входят в документы с номером дополнительного согласования, отклонённые печатаются отдельным блоком рекомендаций.

Пункт 8 задания

Какие данные хранить

Центральная сущность - версия предложения, к ней привязано всё остальное. Решение хранится по позициям, а не одним полем: иначе частичное согласование невозможно восстановить.

СущностьКлючевые поляСвязи
Заказ-нарядномер, автомобиль, клиент, мастер, статус, первоначальные сумма и срок, текущие сумма и срокодин клиент, один автомобиль, много предложений
Предложение допработномер, версия, статус, автор, кто отправил, канал, время отправки, контрольное время ответа, сумма, изменение срокапринадлежит заказ-наряду, содержит пакеты, имеет одно решение
Пакет позицийнаименование, признак обязательной связки, решение по пакетупринадлежит предложению, содержит позиции
Позициятип (работа или запчасть), ссылка на справочник, наименование-снимок, количество или нормо-часы, цена-снимок, сумма, статус, причина снятияпринадлежит пакету, ссылается на справочник
Справочник работкод, наименование, нормо-часы, стоимость нормо-часаисточник для позиций
Справочник запчастейартикул, наименование, цена, остаток, срок поставкиисточник для позиций
Решение клиентавремя, способ, сотрудник-фиксатор, комментарий, кто согласовал со стороны клиентаотносится к предложению, детализируется решениями по позициям
Решение по позициипозиция, результат, времясвязывает решение и позицию
Резерв складапозиция, количество, статус резерва, времясоздаётся при согласовании
Событие историиобъект, тип события, сотрудник, время, значение до и после, комментарийссылается на любой объект, только добавление
Инциденттип, объект, кто создал, статус разборассылается на заказ-наряд и позицию

Как связаны сущности

  • Заказ-наряд содержит много предложений (доп. 1, доп. 2 и далее) и накапливает события истории и инциденты.
  • Предложение состоит из пакетов, пакет - из позиций. Позиция бывает работой или запчастью и хранит снимок из справочника.
  • У предложения одно решение клиента, и оно детализируется решениями по каждой позиции - отсюда берётся частичное согласование.
  • Резерв склада привязан к позиции и создаётся в момент согласования, не раньше.
  • Событие истории ссылается на любой объект процесса и только добавляется - редактировать и удалять записи нельзя.

Почему снимок, а не ссылка

Наименование и цена копируются в позицию в момент формирования. Если через месяц в справочнике изменится стоимость нормо-часа, документ месячной давности не должен поменяться задним числом. Ссылка на справочник тоже хранится - для аналитики и повторного заказа.

Пункт 9 задания

Как выглядит экран

Ключевой экран - карточка дополнительных работ, рабочее место мастера-приёмщика в момент разговора с клиентом.

Прототип рабочий: переключите решение по любому пакету - итоговая сумма, срок и статус наверху пересчитаются так же, как это делала бы система.
Дополнительные работыЗН-2410-0387 · доп. 1, версия 2
Ожидается решение отправлено 18.09 10:42 · СМС
АвтомобильToyota Camry 2.5, 2019
ГосномерЕ432КХ73
VINXW7BF4FK00S123456
Пробег87 430 км
КлиентСмирнов А. В.
МастерПетров И. С.
Исходная смета
24 800 ₽
согласована 17.09
Предложено дополнительно
+17 040 ₽
3 пакета, 6 позиций
Итог по решению
34 680 ₽
принято на 9 880 ₽
Срок выдачи
19.09, 13:00
было 18.09, 16:00 (+1 день)
Пакет 1 · Замена передних тормозных дисков работа и запчасть только вместе
9 880 ₽
ПозицияАртикул / кодКол-воЦенаСумма
Замена тормозных дисков переднихR-04121,4 н/ч1 2001 680
Диск тормозной передний43512-331402 шт4 1008 200
Решение клиента телефон · Петров И. С. · 18.09 11:24
Пакет 2 · Замена рулевых наконечников работа и запчасть только вместе
5 520 ₽
ПозицияАртикул / кодКол-воЦенаСумма
Замена наконечника рулевой тягиR-08700,8 н/ч1 200960
Наконечник рулевой тяги45046-096302 шт2 2804 560
Решение клиента телефон · «пока не буду, приеду позже»
Пакет 3 · Замена салонного фильтра
1 640 ₽
ПозицияАртикул / кодКол-воЦенаСумма
Замена фильтра салонаR-01500,3 н/ч1 200360
Фильтр салонный угольный87139-070101 шт1 2801 280
Решение клиента решения нет
История изменений
  1. 18.09 11:24Решение по пакету 1: согласовано. Телефон, Петров И. С.
  2. 18.09 10:42Отправлено клиенту, СМС. Версия 2, состав заморожен
  3. 18.09 10:38Версия 2: удалён пакет «Замена стоек стабилизатора» - добавлен ошибочно
  4. 18.09 09:15Цена диска изменена 3 900 → 4 100. Петров И. С.
  5. 18.09 08:50Черновик создан. Механик Ильин Д. А., фото износа приложено

Почему экран устроен так

  • Мастер отмечает решения прямо во время телефонного разговора, поэтому решение - один клик на пакет, без отдельной формы.
  • Три суммы видны одновременно: было, предложено, стало. Это первое, что спрашивают и клиент, и руководитель.
  • Срок стоит рядом с деньгами: забытый сдвиг даты даёт половину конфликтов на выдаче.
  • История рядом, а не в отдельной вкладке - спорную ситуацию разбирают не выходя из карточки.
  • Связка «работа и запчасть только вместе» подписана явно, чтобы мастер не пообещал невозможного.

Состояния и ограничения

  • Кнопка фиксации недоступна, пока хоть один пакет в состоянии «ожидает».
  • Для способа «телефон» комментарий обязателен, без него сохранение не проходит.
  • После фиксации таблица переходит в режим чтения; изменить решение может только руководитель, и это отдельное событие в истории.
  • Если по позиции пропал остаток, пакет подсвечивается и решение по нему блокируется до выбора аналога.
Пункт 10 задания

Как работал с ИИ

Использовал Claude как инструмент проектирования: черновики структуры, проверка модели на полноту, вычитка. Решения принимал сам и за результат отвечаю сам - ниже что отдавал, что взял и что забраковал.

Что отдавал ИИ

  • Черновой список вопросов с требованием бить в спорные места, а не в общие слова.
  • Первый вариант модели статусов и проверку её на десяти ситуациях из задания.
  • Матрицу ролей и прав в виде таблицы.
  • Приведение критериев приёмки к единому формату.

Что делал сам

  • Решение о двухуровневых статусах и пакетах связанных позиций.
  • Снимок цены вместо ссылки на справочник.
  • Мягкая блокировка работ вместо жёсткой, с инцидентом.
  • Макет экрана: состав, приоритет блоков, вёрстка.
  • Проверка на противоречия и финальная редактура.

Промпт 1Список вопросов

«Вот тестовое задание по согласованию дополнительных работ в автосервисе. Составь вопросы, которые вскрывают спорные места бизнес-логики. Никаких общих вопросов про сроки и бюджет. Минимум половина - про юридическую фиксацию согласия клиента и про деньги. По каждому поясни, что именно в архитектуре меняет ответ.»

Что вышло: 20 вопросов, из них 8 общих. Оставил 12, переписал формулировки под конкретику, добавил вопрос про порог мелких доработок - его в выдаче не было, а он снимает главную боль процесса.

Промпт 2Проверка модели статусов

«Вот моя модель статусов предложения: [список]. Прогони по ней десять ситуаций из задания и покажи, какие модель не покрывает или покрывает криво. Не переписывай модель целиком, покажи дырки.»

Что вышло: нашлись две реальные дыры - «клиент передумал после согласования» некуда было положить, и одновременное редактирование модель не описывала вообще. Добавил статус «отозвано» и блокировку по версии. Третью «дыру» про уведомления отклонил: это не статус, а следствие перехода.

Промпт 3Модель данных

«Собери таблицу сущностей: поля и связи. Учти, что решение клиента принимается по позициям, а цены не должны меняться задним числом при изменении справочника.»

Что вышло: первая версия хранила цену ссылкой на справочник - отклонил, заменил снимком в позиции. Убрал предложенное поле «итоговый статус» на заказ-наряде: оно дублировало агрегат и разъехалось бы с позициями при первой же отмене.

Промпт 4Критерии приёмки

«Переведи требования в формат если / когда / то. Каждый критерий должен быть проверяемым: конкретное состояние системы и конкретный результат, без слов „корректно“ и „удобно“.»

Что вышло: взял почти целиком, поправил четыре формулировки с непроверяемым результатом вроде «система должна корректно пересчитать» - заменил на то, что именно показывается и что блокируется.

Как проверял результат

  • Прогнал все двенадцать ситуаций по итоговой схеме статусов вручную: у каждой должно быть конечное состояние, предложение нигде не зависает.
  • Сверил разделы между собой: каждая роль встречается в требованиях, каждый статус достижим переходом, каждое поле модели используется в требовании или на экране.
  • Проверил арифметику в прототипе: три пакета, шесть позиций, суммы сходятся с итогами и пересчитываются при смене решения.
  • Вычистил непроверяемые формулировки - «удобно», «корректно», «быстро».

Где ИИ ошибался

  • Избыточность: предлагал 20 вопросов и 15 статусов там, где рабочая модель - 12 и 12. Лишний статус выглядит солидно, но это ветка в коде и строка в тестах.
  • Не чувствует организационную реальность: предлагал жёсткие запреты там, где сотрудники их обойдут. Когда машина на подъёмнике, а клиент не берёт трубку, жёсткий запрет приводит к работе мимо системы.
  • Упускает денежные последствия: цена ссылкой на справочник выглядит нормально, пока не выяснится, что документ прошлого месяца меняется задним числом.
Заключительная часть задания

Сроки, стоимость и условия

  1. Затрачено времени2 часа 40 минут: разбор задачи и вопросы - 40 минут, процесс, статусы и данные - час, макет экрана - 40 минут, сборка и вычитка - 20 минут.
  2. Что сам, что с ИИСам: архитектурные решения - двухуровневые статусы, пакеты позиций, снимок цены, мягкая блокировка; макет экрана; проверка на противоречия; редактура. С ИИ: черновики списков, проверка модели на полноту, единый формат критериев. Всё, что выдал ИИ, проверял и правил - подробности в разделе 10.
  3. Что проработал бы дополнительноУведомления клиента и шаблоны сообщений по каналам; интеграцию со складом и 1С, включая резервы и поставку под заказ; права согласования у клиентов-юрлиц; печатные формы дополнительного соглашения; отчёт по отклонению от первоначальной сметы в разрезе мастеров; работу мастера с телефона в цехе.
  4. Срок полной реализации2 недели10 рабочих дней после знакомства с проектом. Первые 2 дня - разбор кода и ответы на вопросы из раздела 1, дальше серверная часть и интерфейс параллельно, последние 2 дня - тестирование и правки.
  5. Ориентировочная стоимость100 000 ₽Фиксированная цена за описанный объём, а не почасовая ставка.
  6. Что входит в стоимостьАнализ и уточнение требований, проектирование модели данных и статусов, интерфейс экрана дополнительных работ, серверная часть и интеграция с существующим заказ-нарядом, история изменений и права ролей, тестирование, исправление замечаний по итогам приёмки и запуск на вашем окружении.
  7. Что может повлиять на срок и стоимостьСостояние существующего кода и наличие документации; интеграция со складом и 1С - это отдельный объём; требование юридически значимого подтверждения согласия (подпись, код из СМС) - плюс примерно неделя; личный кабинет клиента для самостоятельного согласования - отдельная задача; скорость ответов по вопросам из раздела 1 и доступ к тестовому стенду.
  8. Проектная работаДа, готов. Оформление через ИП, договор и закрывающие документы предоставлю.
  9. Загрузка40 часов в неделюПри необходимости больше, включая вечера и выходные. График гибкий.
  10. Готовность приступитьСразуВ день подтверждения договорённостей.