feat(ticket): 工单协同后端——升级不搬数据、受理到验收、站内通知
- item.kind='ticket' + ticket_ext 1:1,迁移 0003 同时重写 item 状态约束为任务∪工单并集 - 工单状态机与动作权限:受理/开工/提交限办理人,验收限需求人(办理人不能自验) - 升级时原任务转 blocked,验收通过后自动回流 todo,事件流两侧都留痕 - item_link(父子/相关)与 notification(只发当事人),三张表均开 RLS - 抽出 serializers.py 复用任务序列化,修复工单响应缺 tags 导致前端白屏 - 评论与 PATCH 放开给工单;conftest 清库前终止残留事务,避免 TRUNCATE 死等锁 - tests/test_tickets.py 11 个用例,全量 57 passed
This commit is contained in:
@@ -40,6 +40,15 @@ class ErrorCode(IntEnum):
|
||||
ITEM_NOT_FOUND = 5001
|
||||
ITEM_STATUS_INVALID = 5002
|
||||
TAG_NOT_FOUND = 5003
|
||||
LINK_NOT_FOUND = 5004
|
||||
LINK_CONFLICT = 5005
|
||||
|
||||
# 6xxx 工单域
|
||||
TICKET_NOT_FOUND = 6001
|
||||
TICKET_ALREADY_EXISTS = 6002
|
||||
TICKET_STATUS_INVALID = 6003
|
||||
TICKET_FORBIDDEN = 6004
|
||||
NOTIFICATION_NOT_FOUND = 6005
|
||||
|
||||
|
||||
# 默认 HTTP 状态:业务码自己带语义,HTTP 只是传输层
|
||||
@@ -67,6 +76,13 @@ _HTTP_STATUS: dict[ErrorCode, int] = {
|
||||
ErrorCode.ITEM_NOT_FOUND: 404,
|
||||
ErrorCode.ITEM_STATUS_INVALID: 409,
|
||||
ErrorCode.TAG_NOT_FOUND: 404,
|
||||
ErrorCode.LINK_NOT_FOUND: 404,
|
||||
ErrorCode.LINK_CONFLICT: 409,
|
||||
ErrorCode.TICKET_NOT_FOUND: 404,
|
||||
ErrorCode.TICKET_ALREADY_EXISTS: 409,
|
||||
ErrorCode.TICKET_STATUS_INVALID: 409,
|
||||
ErrorCode.TICKET_FORBIDDEN: 403,
|
||||
ErrorCode.NOTIFICATION_NOT_FOUND: 404,
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user