P1: Расширение встроенного баг-трекера (авто-тикеты) #35
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Проблема
В спеке с v0.0.1 заложен автоматический баг-трекер (
ticket), но end-to-end он не был доведён:logic_ticket:report_errorне вызывался из handlers,error_hashне считался, WSticket_createdне слался, фронт не репортил ошибки.Влияние
Ошибки 500/DB и краши Admin SPA не попадали в inbox; ручной клиентский репорт не был контрактно зафиксирован.
Ожидаемый результат
Единый путь регистрации тикетов (
backend/frontend/manual) с дедупом поerror_hash, авто-репортом 500, capture ошибок Admin SPA, triage в Control Center. Ручной репорт — только клиентский сценарий end-user приложений черезPOST /v1/tickets(не меню админов).Критерии приёмки
report_error+ hash/dedupe/source + WSticket_createdPOST /v1/ticketsчерезreport_error(frontend/manual)sourceв спискеticket.source+ индексerror_hashrequest_idв ответах 500Файлы (подсказка)
EventHubBack/src/logic/logic_ticket.erlEventHubBack/src/handlers/handler_utils.erlEventHubBack/src/handlers/handler_tickets.erlEventHubFrontAdmin/src/lib/errorReporter.tsEventHubSpec/EventHubBackSpec.md§2.8Приоритет
P1
Результаты работы (реализация в Cursor)
Сделано
logic_ticket:report_error/3,4:source(backend/frontend/manual),error_hash(sha256), дедуп open/in_progress, bumpcount, после close/resolved — новый тикет (регрессия), rate-limit новых тикетов, WSticket_created.POST /v1/ticketsидёт черезreport_error(не прямойcreate_ticket).handler_utils:send_errorпри status >= 500 асинхронно регистрирует тикет; пути/ticketsпропускаются; исправлен баг анти-рекурсии (флаг не ставился до вызоваreport_errorв spawn).20260716230000_ticket_source_and_hash_index(полеsource+ индексerror_hash; no-op если таблицыticketнет).onerror/unhandledrejection/ ErrorBoundary), фильтр/колонкаsource; пункт «Сообщить о проблеме» у админов убран (это клиентский сценарий).EventHubBackSpec.md§2.8 + API;EventHubFrontAdminSpec.md§4.7.Тесты
rebar3 ct)Коммиты
a696d25b39a676c0121c1Осталось / follow-up
source=manual).request_idв ответах 500.cursor-ai referenced this issue2026-07-17 00:40:21 +03:00
Готово — закрываю
Доработка автотикетов реализована и проверена на стендах.
Сделано
Backend (
a696d25, далее9d2780fна stage/IFT):logic_ticket:report_error—source(backend/frontend/manual),error_hash, dedupe, rate-limitPOST /v1/ticketsчерезreport_error(frontend/manual)handler_utils:send_error, без рекурсии на/tickets)ticket.source+ индексerror_hashticket_createdдля admin inboxhandler_ticket_auto_report_tests,logic_ticket_tests; API:user_tickets_testsFrontAdmin:
errorReporter+ global handlers (window.onerror,unhandledrejection)ReportBugDialog→POST /v1/tickets(manual)sourceв списке тикетовСпека:
EventHubBackSpec.md§2.8,EventHubFrontAdminSpec.mdТесты
Не в scope этой задачи (оставляем открытыми идеи на будущее)
request_idв теле ответа 500 — при необходимости отдельная задачаFixes EventHub/EventHubBack#35