feat(整理): 问题在整理记录就地处理,识别失败自动叫智能体识别

- 整理记录「需要处理」:列表 attention 筛选与统计同口径(没被后来的整理取代,且有未关闭事项或失败 / 部分完成未忽略),
  记录带 attention(原因类别、精简事项、能否让智能体识别);忽略端点记 attention_cleared_at(迁移 0078)并关闭关联事项
- 识别失败(organize_identity)按 agent.autoIdentifyOrganize 自动派一次识别会话;新能力 organize.assign_identity
  指定作品后复用人工指定的钩子路径自动重新整理,只放行本事项的识别会话与用户对话;整理记录里可手动「让智能体识别」
- GET /attention:整理需要处理条数、等你批准的智能体操作、系统健康问题(铃铛 / 首页 / 运行状态共用)
- 原因码文案不再指向待处理;命令面板「待处理」换成「需要处理的整理记录」

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01Cxwgnn2pbzQ7rXv3rq7fei
This commit is contained in:
rootandClaude Opus 5.5 committed 2026-10-06 16:47:18 +08:00
1 parent 414ea7c890
commit 1c1a954703
25 files changed
+1037 -35

No files matched your search

+15
View File
@@ -100,6 +100,7 @@ export const CAPABILITY_IDS = [
"episode_mapping.inspect",
"episode_mapping.simulate",
"episode_mapping.apply_rule",
"organize.assign_identity",
] as const;
export const KnownCapabilityId = z.enum(CAPABILITY_IDS);
export type KnownCapabilityId = z.infer<typeof KnownCapabilityId>;
@@ -668,6 +669,19 @@ export const CAPABILITY_CATALOG: Record<KnownCapabilityId, CapabilityDescriptor>
false,
true,
),
// 整理时没识别出作品(organize_identity 事项):智能体查到作品后指定,随即按该作品重新整理
"organize.assign_identity": d(
"organize.assign_identity",
"指定整理作品",
"给没识别出作品的整理记录指定作品(本地作品 ID 或 TMDB 类型 + ID),随即按这个作品重新整理。只用于「没识别出作品」事项;先用 catalog.lookup / inventory.query 核对标题、年份、季集,拿不准就不要指定",
"execute",
"OrganizeAssignIdentity",
"organize.execute",
"medium",
false,
false,
"never",
),
};
/**
@@ -733,6 +747,7 @@ export const CAPABILITY_ACTIVITY: Record<KnownCapabilityId, CapabilityActivity>
"episode_mapping.inspect": act("查", "集数映射"),
"episode_mapping.simulate": act("模拟", "映射规则", "次"),
"episode_mapping.apply_rule": act("写入", "映射规则", "条"),
"organize.assign_identity": act("指定", "整理作品", "个"),
};
function d(