Заявлено.
Заявитель оформляет тикет. Kradan фиксирует намерение в той же форме, которую ждёт service-слой — а не в виде эссе, о котором вы пожалеете через месяц. Severity, поверхность, ожидаемое и фактическое поведение.
Kradan — тикет-система для технических команд, которые относятся к очереди задач как к инфраструктуре. Целостность state machine. Аудит по умолчанию. API, который зеркалит UI — строка в строку.
01 · жизненный цикл
Заявитель оформляет тикет. Kradan фиксирует намерение в той же форме, которую ждёт service-слой — а не в виде эссе, о котором вы пожалеете через месяц. Severity, поверхность, ожидаемое и фактическое поведение.
Конкретный человек берёт тикет. Права проверяются в service-слое, никогда — в шаблоне. Аудит-лог уже знает. Ответ API и HTML-страница читают одну и ту же строку из БД.
Reopen, смена приоритета, переназначение — каждый переход пишет TicketEvent. Закрыть можно только из in_hand. Никаких правок задним числом. Никакого тихого state. Никакого дрейфа.
02 · принципы
HTML-вью и JSON API вызывают одни и те же функции. Поведение идентично потому, что код идентичен.
Каждый переход пишет TicketEvent. Лог — источник правды, а не побочный эффект.
Заявитель отменяет своё. Исполнитель закрывает то, что у него в руках. Правила записаны один раз и применяются единообразно — в API-ответах и в HTML-вью — потому что место у них одно.
143 теста. 100% покрытие бизнес-слоя. State machine, auth-флоу и middleware — под контрактом.
03 · в чём разница
— заметки к дизайну, v1