v1.0 · уже в строю

Операционная ясность, по проекту.

Kradan — тикет-система для технических команд, которые относятся к очереди задач как к инфраструктуре. Целостность state machine. Аудит по умолчанию. API, который зеркалит UI — строка в строку.

01 · жизненный цикл

Каждый тикет проходит девять состояний.
Не восемь. Не одиннадцать.

01
приём

Заявлено.

Заявитель оформляет тикет. Kradan фиксирует намерение в той же форме, которую ждёт service-слой — а не в виде эссе, о котором вы пожалеете через месяц. Severity, поверхность, ожидаемое и фактическое поведение.

заявлено
триаж
в работе
решено
02
передача

Взято в работу.

Конкретный человек берёт тикет. Права проверяются в service-слое, никогда — в шаблоне. Аудит-лог уже знает. Ответ API и HTML-страница читают одну и ту же строку из БД.

заявлено
триаж
в работе
решено
03
закрытие

Решено и закрыто.

Reopen, смена приоритета, переназначение — каждый переход пишет TicketEvent. Закрыть можно только из in_hand. Никаких правок задним числом. Никакого тихого state. Никакого дрейфа.

заявлено
триаж
в работе
решено

02 · принципы

Четыре правила. Везде одинаково.

01

Один service-слой.

HTML-вью и JSON API вызывают одни и те же функции. Поведение идентично потому, что код идентичен.

02

Аудит — не фича.

Каждый переход пишет TicketEvent. Лог — источник правды, а не побочный эффект.

03

Права живут в сервисе, не в шаблоне.

Заявитель отменяет своё. Исполнитель закрывает то, что у него в руках. Правила записаны один раз и применяются единообразно — в API-ответах и в HTML-вью — потому что место у них одно.

  • 409 · invalid transition
  • 403 · permission denied
  • 404 · вне scope
04

Тесты фиксируют поведение.

143 теста. 100% покрытие бизнес-слоя. State machine, auth-флоу и middleware — под контрактом.

В цифрах

0 тестов · все зелёные
100% покрытие бизнес-слоя
0 время прогона
0 переходов state machine

03 · в чём разница

Большинство тикет-систем — это workflow, который притворяется продуктом. Kradan — наоборот.

— заметки к дизайну, v1

Готов, когда
готова очередь.

  • self-hosted, готов к docker
  • OpenAPI 3 schema в комплекте
  • без seat-based pricing на v1