fix(#2184): VLM <people>标签解析+扩展外貌属性,修复信任链第4处断链 #2184

Merged
xiaoxia merged 2 commits from fix/xml-people-portrait-prompt into develop 2026-10-04 23:49:38 +08:00
Owner

根因

#2177 XML重构后VLM prompt契约改为顶层<people has_person count gender age_range pose expression/>标签,人物信息不再是<product portrait_prompt="...">属性。worker的_xml_to_product只读product属性,VLM正确输出的<people has_person="true" gender="女" ...>被忽略,走默认"无人像",导致:

  1. preheat daemon判定无人像→跳过
  2. _step_render现场t2i判定无有效描述→跳过
  3. 真人图直传Seedance→HTTP 400 portrait_intercept
  4. 第三层兜底降级纯t2v成功出片,但因无参考图→人物相似度仅30-40%(不达标)

修改

  1. _xml_to_product解析顶层<people>标签:用xp.find_first(raw_text,"people")取人物属性,拼装portrait_prompt;兼容旧schema(product.portrait_prompt优先);无product标签但有人像时也构造结果
  2. 扩展VLM<people>标签外貌属性:原6属性(has_person/count/gender/age_range/pose/expression)新增hair/skin_tone/face_shape/outfit共10属性,要求VLM给出具体描述(如hair="黑色长直发" outfit="白色衬衫"),凑够60-100字外貌描述供Seedream t2i生成高还原度AI人像
  3. 同步更新example为新属性格式
  4. 详细info日志打印people解析结果便于排查

验证

  • 94+47个单测全绿
  • 预期:人像图VLM输出<people has_person="true" hair="齐肩微卷黑发" outfit="米色翻领衬衫" ...>→portrait_prompt="女性,青年人物,齐肩微卷黑发,自然肤色,鹅蛋脸型,身着米色翻领衬衫..."→preheat daemon正常启动Seedream t2i→render使用预热AI人像→Seedance走omni_ref+trust_chain→人物相似度>85%

关联

  • 基于#2183(信任链三层兜底+timeout调大),修复人像还原度问题
## 根因 #2177 XML重构后VLM prompt契约改为顶层`<people has_person count gender age_range pose expression/>`标签,人物信息不再是`<product portrait_prompt="...">`属性。worker的`_xml_to_product`只读product属性,VLM正确输出的`<people has_person="true" gender="女" ...>`被忽略,走默认"无人像",导致: 1. preheat daemon判定无人像→跳过 2. _step_render现场t2i判定无有效描述→跳过 3. 真人图直传Seedance→HTTP 400 portrait_intercept 4. 第三层兜底降级纯t2v成功出片,但因无参考图→人物相似度仅30-40%(不达标) ## 修改 1. **`_xml_to_product`解析顶层`<people>`标签**:用xp.find_first(raw_text,"people")取人物属性,拼装portrait_prompt;兼容旧schema(product.portrait_prompt优先);无product标签但有人像时也构造结果 2. **扩展VLM`<people>`标签外貌属性**:原6属性(has_person/count/gender/age_range/pose/expression)新增hair/skin_tone/face_shape/outfit共10属性,要求VLM给出具体描述(如hair="黑色长直发" outfit="白色衬衫"),凑够60-100字外貌描述供Seedream t2i生成高还原度AI人像 3. 同步更新example为新属性格式 4. 详细info日志打印people解析结果便于排查 ## 验证 - 94+47个单测全绿 - 预期:人像图VLM输出`<people has_person="true" hair="齐肩微卷黑发" outfit="米色翻领衬衫" ...>`→portrait_prompt="女性,青年人物,齐肩微卷黑发,自然肤色,鹅蛋脸型,身着米色翻领衬衫..."→preheat daemon正常启动Seedream t2i→render使用预热AI人像→Seedance走omni_ref+trust_chain→人物相似度>85% ## 关联 - 基于#2183(信任链三层兜底+timeout调大),修复人像还原度问题
xiaoxia added 1 commit 2026-10-04 23:12:20 +08:00
fix(#2184): VLM <people>标签解析+扩展外貌属性,修复信任链第4处断链
CI/CD Pipeline / Check push changed paths (pull_request) Has been skipped
CI/CD Pipeline / Dedup Check - skip PR tests when covered by push pipeline (pull_request) Successful in 1s
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 2s
CI/CD Pipeline / Frontend Lint (pull_request) Has been skipped
CI/CD Pipeline / Frontend Unit Tests (pull_request) Has been skipped
CI/CD Pipeline / PR Build Web Image (pull_request) Has been skipped
CI/CD Pipeline / Build Staging API Image (pull_request) Has been skipped
CI/CD Pipeline / Build Staging Web Image (pull_request) Has been skipped
CI/CD Pipeline / Build Staging Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Retag skipped Staging API Image (pull_request) Has been skipped
CI/CD Pipeline / Retag skipped Staging Web Image (pull_request) Has been skipped
CI/CD Pipeline / Retag skipped Staging Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Has been skipped
CI/CD Pipeline / Staging E2E Tests (pull_request) Has been skipped
CI/CD Pipeline / Staging API Integration Tests (pull_request) Has been skipped
CI/CD Pipeline / ACR Image Cleanup (pull_request) Has been skipped
CI/CD Pipeline / PR Build API Image (pull_request) Successful in 59s
CI/CD Pipeline / PR Build Worker Image (pull_request) Successful in 1m57s
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 2m25s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 2m58s
AI Code Review / AI Code Review (pull_request) Successful in 6m59s
CI/CD Pipeline / Integration Tests (pull_request) Successful in 8m52s
CI/CD Pipeline / Validate - Style (pull_request) Has been cancelled
CI/CD Pipeline / Validate - Security (pull_request) Has been cancelled
CI/CD Pipeline / Validate - Python (mypy + alembic) (pull_request) Has been cancelled
CI/CD Pipeline / Unit Tests (pull_request) Has been cancelled
CI/CD Pipeline / Build Production API Image (pull_request) Has been cancelled
CI/CD Pipeline / Build Production Web Image (pull_request) Has been cancelled
CI/CD Pipeline / Build Production Worker Image (pull_request) Has been cancelled
CI/CD Pipeline / Deploy Production (pull_request) Has been cancelled
CI/CD Pipeline / Production Browser E2E (pull_request) Has been cancelled
CI/CD Pipeline / Canary Release to Production (pull_request) Has been cancelled
CI/CD Pipeline / CI Gate (pull_request) Has been cancelled
PR Automation / Auto Merge on CI Green + Approved (pull_request) Has been cancelled
f6fa3ea653
问题根因:#2177 XML重构后VLM prompt契约改为顶层<people has_person count gender age_range pose expression/>标签,
人物信息不再是<product portrait_prompt=...>属性。worker的_xml_to_product只读product属性,
VLM输出<people has_person="true" ...>被忽略,所有人物判断走默认"无人像",
导致:preheat跳过→现场t2i跳过→真人图直传Seedance→400 portrait_intercept→降级纯t2v(无参考图→人物相似度仅30-40%)

修复:
1. _xml_to_product解析顶层<people>标签,拼装portrait_prompt供信任链使用
2. 扩展VLM <people>标签新增外貌属性:hair/skin_tone/face_shape/outfit(原6属性→10属性)
   提供足够细节(60-100字外貌描述)给Seedream t2i生成还原度高的AI人像
3. 同步更新example为新属性格式
4. 兼容旧schema:product属性仍有portrait_prompt时优先使用
5. 无product标签但<people has_person=true>时也构造结果,不丢人物信息

🚀 预览环境已部署

项目 详情
PR号 #2184
预览链接 https://pr-2184.preview.xiaoxiajianji.com
API环境 staging

💡 预览环境使用 staging API 数据,请勿在预览环境中操作重要数据。

🔄 每次提交新代码后预览环境会自动更新。

🗑️ PR 关闭或合并后,预览环境会自动清理。

🚀 **预览环境已部署** | 项目 | 详情 | |------|------| | PR号 | #2184 | | 预览链接 | [https://pr-2184.preview.xiaoxiajianji.com](https://pr-2184.preview.xiaoxiajianji.com) | | API环境 | staging | > 💡 预览环境使用 staging API 数据,请勿在预览环境中操作重要数据。 > > 🔄 每次提交新代码后预览环境会自动更新。 > > 🗑️ PR 关闭或合并后,预览环境会自动清理。
auto-approve-bot added 1 commit 2026-10-04 23:23:29 +08:00
style: auto-format with black + isort + ruff + prettier [skip ci-format-check]
CI/CD Pipeline / Check push changed paths (pull_request) Has been skipped
CI/CD Pipeline / Build Staging API Image (pull_request) Has been skipped
CI/CD Pipeline / Dedup Check - skip PR tests when covered by push pipeline (pull_request) Successful in 2s
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 1s
CI/CD Pipeline / Build Staging Web Image (pull_request) Has been skipped
CI/CD Pipeline / Build Staging Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Frontend Unit Tests (pull_request) Has been skipped
CI/CD Pipeline / Frontend Lint (pull_request) Has been skipped
CI/CD Pipeline / PR Build Web Image (pull_request) Has been skipped
CI/CD Pipeline / Retag skipped Staging API Image (pull_request) Has been skipped
CI/CD Pipeline / Retag skipped Staging Web Image (pull_request) Has been skipped
CI/CD Pipeline / Retag skipped Staging Worker Image (pull_request) Has been skipped
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Has been skipped
CI/CD Pipeline / Staging E2E Tests (pull_request) Has been skipped
CI/CD Pipeline / Staging API Integration Tests (pull_request) Has been skipped
CI/CD Pipeline / ACR Image Cleanup (pull_request) Has been skipped
CI/CD Pipeline / PR Build API Image (pull_request) Successful in 1m1s
CI/CD Pipeline / PR Build Worker Image (pull_request) Successful in 1m56s
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 2m32s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 3m6s
AI Code Review / AI Code Review (pull_request) Successful in 7m10s
CI/CD Pipeline / Integration Tests (pull_request) Successful in 9m22s
CI/CD Pipeline / Validate - Style (pull_request) Successful in 9m46s
CI/CD Pipeline / Unit Tests (pull_request) Successful in 9m52s
CI/CD Pipeline / Validate - Python (mypy + alembic) (pull_request) Successful in 11m25s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 12m44s
CI/CD Pipeline / Validate - Security (pull_request) Successful in 23m18s
CI/CD Pipeline / Build Production API Image (pull_request) Has been skipped
CI/CD Pipeline / Build Production Web Image (pull_request) Has been skipped
CI/CD Pipeline / Build Production Worker Image (pull_request) Has been skipped
CI/CD Pipeline / CI Gate (pull_request) Successful in 1s
CI/CD Pipeline / Deploy Production (pull_request) Has been skipped
CI/CD Pipeline / Canary Release to Production (pull_request) Has been skipped
CI/CD Pipeline / Production Browser E2E (pull_request) Has been skipped
ACR Cleanup / ACR Image Cleanup (pull_request_target) Successful in 34s
Preview Cleanup / Cleanup Preview Environment (pull_request) Successful in 1m32s
cb911f5eba
xiaoxia merged commit bf8f62ec5b into develop 2026-10-04 23:49:38 +08:00

🗑️ 预览环境已清理

PR #2184 已关闭或合并,对应的预览环境已被清理。

如有需要,可以重新打开 PR 来重新生成预览环境。

🗑️ **预览环境已清理** PR #2184 已关闭或合并,对应的预览环境已被清理。 > 如有需要,可以重新打开 PR 来重新生成预览环境。
Sign in to join this conversation.