B6/B7: failed终态前端可见 + SSE事件链核实

B6 错误态:
- 后端已加 TaskStatus.FAILED + 异常区分重试中/耗尽(014迁移ALTER status ENUM)
- 前端 TaskStatus 类型加 failed
- RecentTasksBar/history STATUS_LABEL 补 failed 标签
- history 页 HISTORY_STATUSES 纳入 failed(否则失败任务前端找不到)
- FatalErrorBanner + useSse error 不再静默丢弃

B7: 核实 SSE(ticket换JWT) + 事件消费链无缺口,标绿

tsc EXIT=0
This commit is contained in:
yangqianqian
2026-06-16 12:45:13 +08:00
parent ea423e8a32
commit 1b488752e6
13 changed files with 102 additions and 11 deletions

View File

@@ -0,0 +1,34 @@
"""014 generation_tasks.status ENUM 补 failed 终态B6 错误态)
Revision ID: 014
Revises: 013
Create Date: 2026-06-16
status 是 MySQL ENUM,原7值无失败终态。Celery生成彻底失败(重试耗尽)时
要落 failed,区分"没跑(pending)""跑挂了(failed)"。不补 ENUM 会 Data truncated。
"""
from alembic import op
revision = "014"
down_revision = "013"
branch_labels = None
depends_on = None
_ENUM_WITH_FAILED = (
"ENUM('pending','generating','pending_selection','pending_review',"
"'approved','rejected','archived','failed') NOT NULL DEFAULT 'pending'"
)
_ENUM_ORIG = (
"ENUM('pending','generating','pending_selection','pending_review',"
"'approved','rejected','archived') NOT NULL DEFAULT 'pending'"
)
def upgrade():
op.execute(f"ALTER TABLE generation_tasks MODIFY COLUMN status {_ENUM_WITH_FAILED}")
def downgrade():
# 回退前先把 failed 行归位到 pending,避免越界
op.execute("UPDATE generation_tasks SET status='pending' WHERE status='failed'")
op.execute(f"ALTER TABLE generation_tasks MODIFY COLUMN status {_ENUM_ORIG}")