소스 검색

docs: 综合调研设计稿补布里斯托 7 型变更记录

- specs/2026-10-16-comprehensive-health-survey-design.md:四、字段映射表
  bowel 行标注粪便性状为布里斯托 7 型图片选择;新增「十一、变更记录 11.1」
  记录背景/现状实现/存量兼容/废弃文件不动 + 4 条验收要点
- PROJECT-OVERVIEW.md:对应条目追加 2026-10-18 调整说明(图片目录、
  生成脚本、共享选项与旧值归一模)
Sisyphus 6 일 전
부모
커밋
24c3b53a85
2개의 변경된 파일과 23개의 추가작업 그리고 2개의 파일을 삭제
  1. 1 1
      docs/superpowers/PROJECT-OVERVIEW.md
  2. 22 1
      docs/superpowers/specs/2026-10-16-comprehensive-health-survey-design.md

+ 1 - 1
docs/superpowers/PROJECT-OVERVIEW.md

@@ -384,7 +384,7 @@
 | `2026-09-19-article-reading-quiz-design.md` | 🟢 已实施(补全现有阅读答题:article_quiz_records 表 + LangGraph article_quiz_graph 出题 + AiGateway 接入 + 提交答题落库 + CF值/五维能量双奖励 + profile_snapshot.quiz_summary 认知雷达) | 文章阅读后答题奖励 + 认知雷达记录设计 |
 | `2026-09-22-guide-popup-config-design.md` | ✅ 已实施(4表/guide_popup+step+trigger+log,9接口,ConfigurableGuide.vue组件+管理端2页;旧 sys_config 方案保留并行) | 弹窗引导页配置化管理设计 |
 | `2026-10-10-address-contact-backfill-realname-design.md` | 🟡 设计稿(后端统一回填方案:`RealNameBackfillService` 独立组件 + `UserAddressService.create/update` + `ConsigneeService.save` 两入口回填,realName 为空才回填,幂等) | 地址联系人回填真实姓名设计 |
-| `2026-10-16-comprehensive-health-survey-design.md` | 🟢 已实现(8 模块 step 式综合调研:basic/status/diet/disease/bowel/sleep/med/allergy,URL `modules=` 逗号分隔子集;ComprehensiveSurvey.vue 组件(1108 行)+ health-survey.vue 独立页 + pages.json 注册 + index-home/health-main 两处入口改跳;方案制定页 Step2 同步替换,memberFormMap 快照经 currentMemberForm 合并视图传 form prop;合并式增量保存 + 主动清空检测(diseasesCleared/medsCleared 下发 '[]'、lifestyle 模块感知 null 清除);过敏源双写两表;饮食结构 3 项补采;lifestyle 新 key currentStatus/exerciseFrequency/exerciseDuration;旧 wizard 集群 6 文件标记 DEPRECATED 零引用;实现提交 b5578f5d2/d6e1cb864/98450cd73,零后端改动零 DDL) | 综合健康调研 — 身体状态+饮食偏好合并 |
+| `2026-10-16-comprehensive-health-survey-design.md` | 🟢 已实现(8 模块 step 式综合调研:basic/status/diet/disease/bowel/sleep/med/allergy,URL `modules=` 逗号分隔子集;ComprehensiveSurvey.vue 组件(1108 行)+ health-survey.vue 独立页 + pages.json 注册 + index-home/health-main 两处入口改跳;方案制定页 Step2 同步替换,memberFormMap 快照经 currentMemberForm 合并视图传 form prop;合并式增量保存 + 主动清空检测(diseasesCleared/medsCleared 下发 '[]'、lifestyle 模块感知 null 清除);过敏源双写两表;饮食结构 3 项补采;lifestyle 新 key currentStatus/exerciseFrequency/exerciseDuration;旧 wizard 集群 6 文件标记 DEPRECATED 零引用;实现提交 b5578f5d2/d6e1cb864/98450cd73,零后端改动零 DDL);**2026-10-18 调整**:粪便性状改为布里斯托 7 型图片选择(`static/health/bristol/`,生成脚本 `scripts/gen-bristol-stool-images.py`,共享选项/旧值归一模 `utils/bowel-form.js`,旧 5 档文案自动映射 7 型) | 综合健康调研 — 身体状态+饮食偏好合并 |
 | `2026-10-17-activity-poster-template-design.md` | ✅ 已实现(迁移381 `activity_poster_templates` 表 + 种子3套默认模板;后端4接口 `/api/admin/poster-template/*`(admin/operator 权限)+ `/api/poster-template/list`;cfc-web `PosterTemplateManage.vue` 管理页 + 路由 `poster-template-manage`(perm `activity:poster_template`)+ 活动管理菜单;小程序 `ContentSharePoster` 新增 `templates` prop 动态模板 + `activity-detail` 拉取(失败不阻塞);后端 `mvn clean compile` 通过) | Web 管理端定义活动海报模板 |
 
 ### 实施计划(plans/)

+ 22 - 1
docs/superpowers/specs/2026-10-16-comprehensive-health-survey-design.md

@@ -88,7 +88,7 @@
 | 当前状态 | `status` | 单选 | 特殊状态:正常/哺乳期/备孕/怀孕/住院期/恢复期/其他 | `lifestyle.currentStatus`(新 key) |
 | 饮食偏好 | `diet` | chip+滑块 | 辣度/口味/菜系/烹饪方式/必吃/健康目标/宗教饮食/绝对忌口/饮食结构(蔬果·奶制品·含糖饮料) | `diet_preferences`(**不含过敏原**) |
 | 疾病史 | `disease` | 分组折叠多选+自定义 | 8 组 54 项预置清单 + 自定义疾病 + 确诊年月 | `health_status.disease_history`(JSON 数组 `{name, diagnosedAt}`) |
-| 排便及运动 | `bowel` | 单选×4 | 排便频率/粪便性状 + **新增**运动频率(不运动/每周1-2次/3-4次/5次以上)+ 每次时长(<30min/30-60min/>60min) | `lifestyle`(bowelFrequency/bowelForm + **新 key** exerciseFrequency/exerciseDuration) |
+| 排便及运动 | `bowel` | 单选×4 | 排便频率/粪便性状(**布里斯托 7 型图片选择**,见 11.1)+ **新增**运动频率(不运动/每周1-2次/3-4次/5次以上)+ 每次时长(<30min/30-60min/>60min) | `lifestyle`(bowelFrequency/bowelForm + **新 key** exerciseFrequency/exerciseDuration) |
 | 睡眠情况 | `sleep` | 单选×2 | 睡眠时长/入睡时间 | `lifestyle`(sleepDuration/bedtime) |
 | 用药情况 | `med` | 动态行 | 药名+开始年月+已服时长(自动计算/记不清兜底)+服药时间 + "无长期用药"勾选 | `health_status.medications`(JSON 数组 `{name, startDate, durationText, time}`) |
 | 过敏源 | `allergy` | chip 多选×2 | 过敏原多选(预设 10 项+自定义)+ 过敏症状多选(无/皮疹/鼻痒/眼痒/哮喘样/食物过敏) | `diet_preferences.allergies` + `lifestyle.allergySymptoms` |
@@ -200,3 +200,24 @@
 - **不做**后台模板配置化(`survey_templates`)——8 模块字段本设计固化,模块组合由调用方 URL 传参控制。
 - **不做** `exercise_record` 打卡表与新运动字段的联动——新运动字段为调研快照性质,打卡体系独立运行。
 - **不做** report-survey 的过敏源/睡眠等数据同步修复(`ReportSurveyService.saveDietPreferencesFromSurvey` 不同步 allergies 的既有缺口,不在本次范围)。
+
+## 十一、变更记录
+
+### 11.1 粪便性状改为布里斯托 7 型图片选择(2026-10-18 上线后调整)
+
+**背景**:原 5 档纯文字选项(干硬颗粒/条状干硬/正常香蕉状/软便/水样)用户难以自行判断,且颗粒度不足以支撑 AI 生成肠道调理方案。
+
+**现状实现**:
+
+- **选项**:布里斯托大便分类法(Bristol Stool Scale)标准 7 型,每型一张示意图 + 名称 + 一句特征描述;单选,UI 为 2 列图片网格(flex wrap,非 Grid)。
+- **图片**:`static/health/bristol/bristol-{1..7}.png`(200×200 透明底 PNG,合计约 61KB,计入主包);由 `scripts/gen-bristol-stool-images.py` 用 Pillow 生成(4 倍超采样 + LANCZOS,暖棕配色 `#8C6444`/`#684830` 与问卷主题一致)。**为示意图,非实拍照片**。
+- **存储值**:`lifestyle.bowelForm` 存中文字符串,如 `4型(光滑柔软)`。仍为自由文本,后端只做 JSON 存储,`cfc-langgraph/app/api/adapter.py` 直接拼接为 `粪便性状:xxx` 送入提示词,无需后端/DDL 改动。
+- **存量兼容**:新增共享模块 `utils/bowel-form.js`(`BOWEL_FORM_OPTIONS` + `normalizeBowelForm()`),读取时把旧 5 档文案归一为新 7 型(干硬颗粒→1型、条状干硬→2型、正常香蕉状→4型、软便→5型、水样→7型),`ComprehensiveSurvey.vue`(初始化)与 `health-plan-summary.vue`(`parseLifestyle`)各调用一次,保证回显与确认页摘要一致。
+- **废弃文件不动**:`LifestyleStep.vue` / `ConfirmStep.vue` / `HealthQuestionnaireWizard.vue` 等旧 wizard 集群仍保留原 5 档文字选项,但该集群已 DEPRECATED 且零引用(见十、非目标),本次不修改。
+
+**验收要点**:
+
+1. 排便模块粪便性状为 7 张图片 + 名称,点击有选中态(橙色描边),再点取消。
+2. 已被旧版问卷写过的成员打开问卷,粪便性状按上表映射自动选中对应型。
+3. 完成问卷后确认页摘要显示 `排便: 每天1次 · 4型(光滑柔软)`。
+4. 生成方案时 AI 收到 `粪便性状:4型(光滑柔软)` 文本(`adapter.py` 无改动)。