Files
sentinel-home-ai/fam-edge
ericwyuan 5f7b27bf04 fix(fam-edge): 人物识别结果没同步进事件描述文字
用户反馈:事件卡片上方的人物徽章正确显示"媳妇/爸爸",但描述文字里还是
"人物B双手叉腰站在客厅中央;人物A在远处厨房"这种原始 uid——两处对不上。

根因:rewrite_event_person_names() 只改了 person_list_json /
person_appearances_json[].uid 这些结构化字段,从没碰过 description(事件
描述)和 videos.summary_json(会话摘要)——这两个是大模型写的自然语言,
"人物A"这类 uid 是直接以文字形式嵌在句子里的,结构化字段改名不会带着改。

现在 rewrite_event_person_names() 额外对 description/summary_json 做文本
替换。替换顺序按 rename_map 的 key 长度降序——uid 可能带 "#2"/"#3" 这类
同名冲突后缀,"人物A" 是 "人物A#2" 的前缀,短的先替换会把长的错误地部分
命中,长的先替换才对。

同时跑了两次一次性回填修历史数据:
1. 对所有已有 person_identity_map 映射的 1265 个视频重新跑一遍
   rewrite_event_person_names,把之前只改了徽章、没改描述文字的历史数据
   补上(events 里"纯人物X不带真名"的还剩 258 条,涉及 94 个视频——都是
   性别/年龄特征本来就是 unknown 的画面,闭集识别本来就该留空不瞎猜,
   不是回填没覆盖到,是真的没法从图像信息判断是谁)
2. 找到 9 个从未跑过闭集识别的漏网视频(应该是 person_identifier 功能上线
   前处理的),重新识别后 1 个(video 2194)成功解析出汤圆+爸爸,其余 8 个
   同样是性别未知,正确保持未解析

新增 2 个测试覆盖 description/summary_json 文本替换,以及带后缀 label 的
替换顺序正确性。
2026-08-23 10:50:52 +08:00
..