# 更新日志
> 当前版本: v1.0.1588
## 历史版本
- [v1.0 版本历史](CHANGELOG-v1.0.md)
---
## v1.0.1588 (2026-10-12)
### 重构
- DimensionSubDims 组件下沉到分包
### 其他
- - pages/wealth/components/DimensionSubDims.vue
- - pages/action-detail/components/DimensionSubDims.vue
- 原因:两者均为独立 subpackage root,微信禁止跨分包 import
- 2. 更新 import 路径为本地相对路径('./components/DimensionSubDims.vue')
- - pages/wealth/index.vue
- - pages/action-detail/index.vue(同时去重 DimensionIntroCard 重复注册)
- 3. pages/reminder-config/index.vue: 修复 :key 表达式警告
- - ch.type + '_' + index → getChannelKey(ch, index)
- - 'p-' + pIndex → getPraiseKey(pIndex)
- 符合 uni-app 非 H5 平台 :key 规范(需使用方法调用而非表达式)
-
### Bug 修复
- 打破 ProductService↔NutritionProductService 循环依赖
- 补注入 NutritionProductService 并修正 syncFromProduct 调用位置
## v1.0.1587 (2026-10-12)
### Bug 修复
- 家庭成员编辑页辈分关系回显改用单向 prop
- 修复编译错误——reminder-config 编码损坏 + DimensionVisitorCard 幽灵引用
### 其他
- - add-member.vue: generation-picker 改用 :generationLevel/:peerType 单向 prop 回显,保存时从 \.generationPicker 读取选中值
- - family-members.vue: 跳转编辑页时始终传递 generationLevel(空值传空串,编辑页需重新选择)
-
- - 中文 mojibake(如 鍚敤寮€鍏 → 提醒开关)全面修复
- - 三元运算符缺失的 ? 补回(enabled === 1 '...' : '...' → enabled === 1 ? '...' : '...')
- - 字符串常量未闭合的 ' 补回
- - 模板标签不完整(如 → )修正
- 2. 5 个维度页(action-detail / body-detail / mind-detail / wealth / wisdom-detail):
- - 移除不存在的 DimensionVisitorCard 组件引用(该组件从未存在于项目中)
- - 替换为已存在的 DimensionIntroCard(同 props 结构)
- - 清理 import 语句和 components 注册表
- Closes: CFCLUB-XXXX
-
## v1.0.1586 (2026-10-12)
### Bug 修复
- 修复微信扫码登录 405、移除令牌输入框、悬停暂停活动与精细化动画
- schema.sql 建表语句提取支持引号内分号
- 修复编译错误(补充scan-login.json,移除main.js中不存在的login-sheet引用)
- 修复创建入库单页表单内容显示不全无法滚动问题
- reminder-config :key 修复 v-for index 未定义
- 修复 reminder-config 页 :key 表达式导致非 h5 编译失败
- 京东云存储下 LangGraph 改读共享卷缓存路径
### 其他
- - models.rs/commands.rs: 兼容旧版 qrconnect 后端(仅 {state,url} 无小程序码),给出明确「需部署最新后端」提示
- - settings.html: 移除 JWT 令牌输入框及相关读写(保留 hasToken 探测)
- - locomotion.rs: 新增 cursor_over_pet() 悬停检测,鼠标落在宠物身上时立即暂停走/跳/飞并保持静止(新增单测)
- - index.html/animations.css/pet-pose.js: 姿态动画精细化(方向镜像 --face、走/跳/飞/站手更丰富关键帧、新增呼吸待机 pose-idle),并加固宠物 cursor:pointer
-
- 遇到 COMMENT 字符串字面量内的分号(task_reminder_config.offset_minutes
- 注释"截止前N分钟; after_timeout...")会提前截断,语句不完整导致
- 每次启动告警且该表无法由 schema.sql 创建。
- 改为按字符扫描、跳过单引号/反引号内分号,完整切分 338 条语句(与旧实现同集)。
-
- - HealthReportController: 去掉 2 处 startsWith(http) 直传 OSS URL 的捷径,统一经 getFilePath 下载
- - 代上传(proxy-parse): 改用 storageService 存 OSS 再经 getFilePath 传给 LangGraph
-
- ### 1. BASIC 会员恢复(f86dd164b 反向还原)
- - 迁移360 restoreBasicMembershipLevel() 恢复 membership_levels BASIC 行 + membership_benefits 4 条 LITE 权益
- - backfillMembershipLevelOrder 修正 level_order:FREE=1 BASIC=2 FAMILY=3 PROVIDER=4 PREMIUM=5 LIFETIME=6
- - BasicQuotaService 恢复 refreshMonthlyQuota/isActiveBasicMember/getExpireTime
- - MembershipService 恢复 BASIC canUseFeature/getMemberLevel 到期判断/listActive/配额初始化
- - 新增 FOOD_RECOGNIZE 配额(3次/月),控制器层校验 FREE→403
- - schema.sql 同步种子数据 + 注释
- ### 2. 饮食打卡分享
- - diet-checkin.vue / records.vue / record-detail.vue 接入 share-mixin
- - 分享链接自动带 refCode,新用户注册后自动绑定推荐人
- ### 3. cfclub 分支合并(~300+ 文件)
- - 新模块:Indicator(指标曲线/相关性/映射)、FatDiet/FatExercise/FatGoal/FatWeight(减脂)、GutHealth(菌群健康)、SsoTicket(单点登录)、AdminTaskReminderConfig
- - 前端:ContentSharePoster.vue、TrendChart.vue、indicator-curve/quicklook 页面、self-check-ai、indicator-change/sso utils
- - LangGraph:indicator_classify、question_generate、report_parse 更新
- - Web 管理端:IndicatorCorrelations/IndicatorMappings、api/indicator.js、utils/indicatorSeeds.js
- - xiaofat-miniprogram(独立减脂小程序 Demo)纳入版本库
- - docs/superpowers/plans/ & specs/ 补充完整
- ## 主提交
- - DatabaseInitializer.java、schema.sql、BasicQuotaService.java、MembershipService.java
- - DietRecordController.java、diet-checkin.vue、records.vue、record-detail.vue
- - docs/superpowers/specs/2026-10-11-restore-basic-and-diet-share-design.md
- - 全部 cfclub 分支新增/修改文件
-
- ### 1. 恢复 BASIC 会员等级
- - 迁移360 restoreBasicMembershipLevel() 重新插入 membership_levels 的 BASIC 行(level_order=2,月费990,max_children=3,max_tasks_per_day=3)和 membership_benefits 的 4 条 LITE 权益(AI_CHAT_LITE 3次/月,REPORT_READING_LITE 1次/月,GROWTH_PLAN_LITE,ASSESSMENT_QUOTA_LITE 1次)
- - 修正 backfillMembershipLevelOrder 的 level_order 映射:FREE=1 BASIC=2 FAMILY=3 PROVIDER=4 PREMIUM=5 LIFETIME=6(BASIC 插回 FREE 与 FAMILY 之间)
- - 同步 schema.sql:BASIC 种子数据 + level_order 与 quota_type 字段注释
- ### 2. 图片解析(食材识别)配额校验
- - BasicQuotaService.QUOTA_LIMITS 增加 FOOD_RECOGNIZE=3
- - BasicQuotaService 恢复 isActiveBasicMember / getExpireTime / refreshMonthlyQuota 真实实现
- - 新增 consumeFoodRecognizeQuota(userId):FAMILY+ 不限次、BASIC 走月度配额、FREE 403 升级提示
- - DietRecordController./recognize 注入 BasicQuotaService,取 userId 后校验配额,失败返回 Result.error(403, toast)
- ### 3. 饮食打卡分享(复用既有推荐链路)
- - diet-checkin.vue / records.vue / record-detail.vue 接入 share-mixin(mixins + setShareInfo + onShareAppMessage)
- - 分享链接自动带 refCode,他人点击注册后通过 App.vue / login.vue autoBindInviteCode 绑定推荐人
- - 新用户即可自行饮食打卡
- ### 4. 设计文档
- - 新增 docs/superpowers/specs/2026-10-11-restore-basic-and-diet-share-design.md
- ## 主文件变更
- - DatabaseInitializer.java:新增迁移360 + backfill CASE 修正
- - schema.sql:BASIC 种子 + 注释更新
- - BasicQuotaService.java:恢复 3 方法 + FOOD_RECOGNIZE
- - MembershipService.java:BASIC 分支 / 到期判断 / listActive / 激活配额初始化
- - DietRecordController.java:/recognize 会员配额校验
- - docs/superpowers/specs/2026-10-11-restore-basic-and-diet-share-design.md:设计说明
- ## 注意
- - level_order 仅相对顺序调整(插入 BASIC),代码层 level_code 匹配逻辑不受影响
- - 不恢复 consumeQuota 内原有的 isActiveBasicMember 前置校验,避免误伤 FREE/FAMILY 的 AI 对话
- - 图片解析配额在控制器层校验,FAILED 返回 403 并提示升级
- - 生产库历史 BASIC 用户已降级为 FREE,本迁移不自动回溯
-
- - AiGateway 新增 generateSelfCheckQuestions(Map) 方法,调 /api/v1/question-generate
- - FiveDimensionSelfCheckController 新增 ai-generate-questions 路由,返回 Result>
- - questions 列表的 options 字段暂不映射,待后续补全
- 解除了本地 mvn clean compile 因 LangGraphService 导致的构建中断
-
### 新功能
- 玄凤鹦鹉精细化动作(走/跳着走/飞/站手跟随)
- implement product recommendation & procurement workflow with 5-dimension tiers, customization, and task lifecycle with message reminders
- 待退款审核合并入审核中心(新增待退款审核 tab + 待审计数)
- 离线自主活动与本地点击互动
- 微信登录改为展示小程序码,不再打开系统浏览器
- 新增扫码登录落地页 scan-login 与 wechatWebScan 接口封装
- 桌面端扫码登录改用小程序码(getwxacodeunlimit),新增 POST /scan 确认接口,移除 GET /callback 与网站应用凭据
- 文章支持推荐排序值编辑;编辑页消除横向滚动条
- 同步 cfclub 分支 + 恢复 BASIC 会员 + 饮食分享 + 新增指标/减脂/Sso 模块
- restore BASIC 体验会员 9.9/月 + 饮食打卡分享 + 图片解析配额
- 通过 AiGateway 接入智能出题能力,新增 POST /api/family/self-check/ai-generate-questions
- 收货人保存后回填用户真实姓名
- 商城地址保存后回填用户真实姓名
- 新增 RealNameBackfillService 真实姓名回填组件
### 文档
- 玄凤鹦鹉精细化动作设计文档
- 地址联系人回填真实姓名实现计划(含文档索引同步)
- 地址联系人回填真实姓名设计(自检修正+文档索引同步)
- 地址联系人回填真实姓名设计
### 测试
- 同步 ActivityControllerTest 到 roles 形参签名,修复 testCompile 失败
## v1.0.1585 (2026-10-12)
### Bug 修复
- 修复 product-edit 商品编辑页方法错位
- 修复 product-edit/comparison 模板与 api.js 编译错误
### 其他
- 拆分为: onTypeChange 仅同步 picker 选择; loadProduct(id) 承载商品详情加载回填逻辑。
-
- - pages/dan-assessment/comparison.vue: 修 v-if 引号与 v-else 配对; 改用 @/utils/api 命名导入(@/utils/request 不存在); onLoad 去重复 loadReportIds
- - pages/vendor/product-edit/product-edit.vue: 补 form-section 缺失的
-
### 新功能
- 本地程序化生成形象动作帧(item 3)
- provider-agnostic 动作帧序列 schema + 客户端播放(item 3 基础)
- 微信网站应用扫码登录(桌面端 SSO)后端
### 重构
- 扫码登录成功回传 userId/role,移除多余 allow(dead_code)
## v1.0.1584 (2026-10-12)
### Bug 修复
- ArticleEdit/ActivityEdit 加内滚动容器,修复表单无法下滑
## v1.0.1583 (2026-10-12)
### Bug 修复
- 修复菜单"显示"功能不生效 — Layout改用userMenus、el-switch绑定Integer、父链补全检查visible
## v1.0.1582 (2026-10-12)
### 重构
- 合并电商供应商管理至供应商体系管理
### 其他
- - DatabaseInitializer 迁移209: 补齐 supply_system 列并将 ecom_supplier 存量数据迁入
- - EcomSupplierController/AdminSupplierController: 标记 @Deprecated,接口统一返回 410
- - 菜单 ecomSupplier 指向 /supply-system,权限改为 system:supply
- - 前端 api/admin.js 指向新接口;router 中 /ecom-supplier 重定向至 /admin/supply-system
-
## v1.0.1581 (2026-10-12)
### Bug 修复
- 修复辈分关系和出生日期保存回显问题
- 透明无边框/右键菜单/任务栏图标/默认接口/点击完成待办
- 修复 isAdmin 恒为 false 的 bug,并清理新增的修改关系入口
- 首页合并冲突采用 feed 集成方案,移除浮动通知条
- 对齐真实后台接口契约(任务/能量/吉祥物/喝水)
### 其他
- - 修复 UserService.updateFamilyMember:在管理员权限下保存 generationLevel/peerType
- - 新增 FamilyMemberVO.birthday 字段,并回显至前端
- - 修复 FamilyMemberService.toFamilyMemberVO:回写 birthday 为 yyyy-MM-dd 字符串
- - 前端 family-members.vue onEditRelation:传递 birthday/generationLevel 在 URL
- - 前端 add-member.vue onLoad:从 options 回显 birthday/generationLevel
- - 前端 family-members.vue:修复 userId 取值(.id→.userId),移除修改关系入口
-
- - api/mod.rs: upload_media(multipart); api/models.rs: MediaRecord
- - settings.rs: AppSettings.custom_mascot_url 持久化
- - commands.rs: upload_mascot/clear_custom_mascot; get_settings 返回 customMascotUrl
- - settings.html: 形象选择+预览+上传/恢复默认 UI; 窗口高度 340->470
- - pet-engine.js: setCustomImage 优先渲染自定义形象; bridge.js 监听 pet://custom-image 并启动加载
-
- - index.html/interactions.js: 背景透明 + 右键菜单(设置/鼠标穿透/退出)
- - commands.rs/main.rs: open_settings/quit_app 命令; 点击宠物优先完成待办任务
- - poller.rs: 到期任务提醒并记录可一键完成的 pending_task
- - settings.rs/settings.html: 默认接口地址改为 https://cfc.cf-club.com
- - api/mod.rs: complete_task 封装
-
- - 移除修改关系弹窗及入口:用户确认改用编辑资料,清理相关代码
- - 恢复 GenerationPicker 注册(编辑资料流程必需)
- - add-member.vue: modal-link 颜色改为品牌橙 #F97316
-
- - Backend: IndicatorController source-types endpoint
- - Backend: schema.sql delete duplicate report_format L1829
- - Backend: DanReportUploadService compareUploads(new) + DanReportController /compare
- - Frontend: indicator-curve.vue reportTypeOptions dynamic (source-types) + fallback
- - Frontend: indicator-curve.vue skipGaps >0 display + rank-empty tip
- - Frontend: dan-assessment/comparison.vue + pages.json registration
- - Frontend: utils/api.js getIndicatorSourceTypes wrapper
-
### 新功能
- 设置内自定义宠物形象上传(复用 /api/media/upload)
- DAN compare + indicator curve dynamic types + skipGaps + schema cleanup
- JS<->Rust 桥接、设置窗口与命令实现
- 托盘菜单、单实例与主进程组装
- 轮询器(任务/能量/喝水)与 AppState
- ApiClient 端点封装与响应解析
- 设置文件读写与默认值
- keyring 令牌存储(双平台)
- 宠物形象配置解析(真实 JSON 测试)
- 宠物状态映射与优先级测试
- API serde 模型层与解析测试
- Tauri v2 脚手架与双平台窗口配置
### 重构
- TrendChart 移入 pages/health 子包并更新引用
- 移除已退役的 WPF 版
### 文档
- 双平台 CI、分发说明与 README
## v1.0.1580 (2026-10-12)
### Bug 修复
- 移除 ProductEdit.vue 重复 if 行,修复编译失败
## v1.0.1579 (2026-10-12)
### 新功能
- preserve pagination page when editing products
### 其他
- - ProductEdit.vue: read page from route query and redirect back with preserved page
- - Fixes issue where editing a product on page 2 would redirect back to page 1 after save
-
## v1.0.1578 (2026-10-11)
### Bug 修复
- 修复三个编辑页 flex 约束和滚动问题
### 其他
- - 统一 .edit 根元素、>.el-card 以及 .el-card__body 为 flex + min-height:0
- - el-card__body 增加 overflow: hidden,防止卡片内容被裁剪或产生横向滚动
- - 与 Layout/admin-tokens 的 .admin-page 弹性约束保持一致,确保长表单可内部滚动
-
## v1.0.1577 (2026-10-11)
### 新功能
- 修改通知列表只显示未读,已读不计入首页familyFeed顶部
### 其他
- - 已读通知仍可在 消息历史 页面的「全部」筛选中查看
- - 平台公告 (/api/admin/notices/all) 逻辑不受影响
-
## v1.0.1576 (2026-10-11)
### 其他
- Make vendor optional in products: vendorId/vendorName/vendorVisible now nullable; remove vendorVisible switch from product edit form; preserve supplier system infrastructure
## v1.0.1575 (2026-10-11)
### Bug 修复
- 邀请接受流程缺失 FamilyMember 记录和 avatar 字段
### 其他
- - FamilyJoinRequestService.approveJoinRequest(): 审批通过补偿创建 FamilyMember 记录,同头像策略
- - 两处均检查重复记录(避免 mergeFamily 切换路径下插入双份)
- - 新增 FamilyMemberMapper @Resource 注入
- Closes: member avatar not showing after family invite join
-
## v1.0.1574 (2026-10-11)
### 重构
- 将保存和取消按钮移至顶部操作栏
## v1.0.1573 (2026-10-11)
### Bug 修复
- 商品编辑页移除横向滚动条
### 其他
- - 卡片 body 增加 width: 100% 和 box-sizing: border-box,防止 padding 导致横向溢出
-
## v1.0.1572 (2026-10-11)
### Bug 修复
- 修复商品编辑页内容显示不全无法滑动问题
### 其他
- - el-card__body 增加 overflow: hidden,配合 .product-edit-form-wrap 的 overflow-y: auto 实现内部滚动
- - 移除重复的 el-card__body 样式定义,保持 header 固定
- - 与 Layout/admin-tokens 的 .admin-page 弹性约束保持一致
-
## v1.0.1571 (2026-10-11)
### Bug 修复
- switchMemberToFamily 兼容孤儿成员记录,审批加入不再 500
## v1.0.1570 (2026-10-11)
### 新功能
- 浠艾福桌面宠物 v1.0 完成(WPF + WebView2 架构)
- 桌面宠物设计文档 v1.1 - 支持用户自定义状态
- 桌面宠物设计文档 v1.0
### 其他
- - 架构:WPF (.NET 6) 主进程 + WebView2 渲染层,Bridge via cfcPetAPI
- - 状态映射:14 种核心状态 + 用户自定义状态(custom_state_1~10)
- - API 对接:POST /api/tasks/today、/api/energy/overview、/api/daily/checkin
- - 形象配置:JSON Schema (PetConfig),支持浠宝/福宝预设 + 用户自定义 PNG
- - 交互闭环:喝水提醒 → 点击确认 → API 打卡 → 庆祝动画
- - 托盘常驻:最小化到托盘,右键菜单(设置/显示/退出),双击唤出
- - Token 存储:Windows DPAPI 加密,%APPDATA%\XafPet\token.bin
- - 动画库:20 个 CSS keyframes(idle/happy/busy/sad/celebrate 等)
- - 测试:xUnit + Moq 单元测试 18 个(PetConfig/ApiClient/StateManager)
- Windows 构建命令:
- dotnet build XafPet.Desktop.sln
- dotnet test tests/XafPet.Desktop.Tests
- dotnet publish src/XafPet.Desktop/XafPet.Desktop.csproj -c Release -r win-x64
-
### 文档
- 桌面宠物实现计划 v1.0
## v1.0.1569 (2026-10-11)
### 新功能
- 添加任务完成表扬通知(后端触发、配置字段、模板、管理端API/UI、H5设置页)
## v1.0.1568 (2026-10-10)
### Bug 修复
- 食材查询适合/全部固定倒序(推荐值大的在前)、查询条件固定顶部、列表独立滚动
- 商品编辑页表单加内滚动容器,解决超长内容无法下翻
## v1.0.1567 (2026-10-10)
### 其他
- Implement vendor visibility filter for products: add vendorVisible field, filter list interface, add UI toggle
- - Filter list results: non-vendor users only see vendorVisible=false/NULL products
- - Vendor users (teacher role or approved vendorStatus) see all products
- - Add vendorVisible toggle to product edit form in admin
- - Add isVendorUser/isGuest helper methods in ProductService
- - Add vendor_visible column to schema.sql with migration
- - Frontend: product edit form with switch to enable/disable vendor-only visibility
-
## v1.0.1565 (2026-10-10)
### Bug 修复
- 商品编辑页超长内容超出屏幕无法滚动(el-card 弹性约束导致裁剪)
- Replace missing human-body.png with inline SVG silhouette for knowledge base page - Removed reference to nonexistent img/human-body.png, added inline SVG body silhouette with dimension markers, maintains existing marker positioning logic
## v1.0.1564 (2026-10-10)
### Bug 修复
- Replace missing human-body.png with inline SVG silhouette for knowledge base page - Removed reference to nonexistent img/human-body.png, added inline SVG body silhouette with dimension markers, maintains existing marker positioning logic
## v1.0.1563 (2026-10-10)
### 其他
- Add user testimonials and application scenarios section to enterprise website
- professional perspectives from parents and service providers
- - Add new #scenarios section with 4 scenario cards:
- 1. 儿童成长 (Child growth & development tracking)
- 2. 家庭健康 (Family health management)
- 3. 家庭关系 (Family relationships & communication)
- 4. 服务商赋能 (Service provider tools & efficiency)
- - Add responsive navigation links for 新闻/应用场景/用户见证
- - Add CSS styling with responsive grids (4→3→2→1 columns)
- - Align testimonial grid responsiveness with scenarios layout
-
## v1.0.1562 (2026-10-10)
### Bug 修复
- 关键人首次见面时间解析兼容 date/ISO 格式,修复 /api/octopus/key-person/add 必现 400(Timestamp.valueOf 仅接受空格分隔格式,前端发送日期或空串即抛异常)
## v1.0.1561 (2026-10-10)
### Bug 修复
- 重写 deploy.sh 为就地镜像构建部署
### 其他
- 该路径已不存在,且 restart 不会重建镜像(代码是 Dockerfile COPY 进镜像的),
- 导致脚本完全失效。
- - 改为在脚本目录就地 docker compose build langgraph-svc + up -d,
- 并补充 build 后带重试的健康检查。
-
## v1.0.1559 (2026-10-10)
### Bug 修复
- 下单支持user_address地址簿,商品订单落库收货地址快照并完善管理端展示
## v1.0.1558 (2026-10-10)
### 新功能
- 指标映射管理页(列表/筛选/批量导入 JSON/CSV + 待确认映射)+ seeds 解析工具
- 指标关联配置管理页(列表+新增/编辑+单对/一键校准)
- 指标关联配置/指标映射管理 路由注册 + 健康配置菜单回退项
- 指标管理 API 封装(关联/映射 5 端点)+ axios-mock 契约测试
- 菌群报告详情页增加指标变化区块(最近两次对比)
## v1.0.1557 (2026-10-09)
### 新功能
- 指标速查页(分类分页 + 五维/七维小节 + 跳转曲线)
- remove BASIC trial membership & add gut health questionnaire project
### 其他
- - Migrate storage users member_level from BASIC → FREE
- - Remove BASIC benefits from membership_benefits table
- - Mark basic_quota_usage table deprecated (preserve data, stop using)
- - Add new gut_health_projects table for single-pay questionnaire project
- - Add GutHealthProject entity, mapper, service, controller
- - Add 6 new API endpoints for questionnaire flow:
- - /project/status - query project status
- - /project/pay - create order
- - /project/pay-notify - payment callback
- - /project/submit - submit questionnaire
- - /project/tasks - get action tasks
- - /project/checkin-status - get checkin status
- - /project/activate-after-purchase - activate family membership after purchase
- - /project/discount-voucher - get member discount voucher
- - Update schemas, level_order constants, remove BASIC references throughout codebase
-
## v1.0.1556 (2026-10-09)
### 新功能
- pages.json 注册 indicator-curve / indicator-quicklook
- 指标变化曲线页(筛选 + TrendChart + 变化排名 Tab/排序/着色)
- 指标变化展示规则纯函数 resolveChangeStyle/formatDelta
- TrendChart 通用折线组件(canvas 2d + DPR,参照 RadarChart 模式)
- 指标 API 封装 getIndicatorTrend/ChangeRanking/QuickLookup/CorrelationList
- 视图+管理控制器(4+5接口) + 每日校准Job
- IndicatorCorrelationService 关联CRUD+对序强制+Spearman校准
- IndicatorTrendService 曲线/变化排名/速查(含维度评分小节)
- NormalizeIndicatorPipeline 单一写者+三钩子(入库/编辑/食材快照)
- IndicatorMappingService exact→fuzzy→AI→惰性注册 映射解析
- AiGateway.classifyIndicator + LangGraph /api/v1/indicator/classify
- SpearmanUtil 秩相关+Fisher z 聚合(纯函数,含并列秩)
- ReportDateExtractor 真实报告日期提取+历史回填(幂等分批)
- 实体/Mapper 支持统一指标层(cols/新表/幂等upsert)
- 迁移356-362 升级统一指标层(列/键/两新表/维度种子)
- 舌诊 AI 集成 - aikanshe.com 优先,LangGraph 兜底
- 舌诊 AI 集成 - aikanshe.com 优先,LangGraph 兜底
- enhance activity poster with template selection and smaller QR code
- 报告管理展示采集完整度列与明细
- 报告类型管理支持编辑采集指标
- /report/parse 支持 indicators 采集指标约束注入
- 非 DAN 解析下传 expected_indicators 驱动 LangGraph LLM
- 报告管理列表/详情回填采集完整度 collect_validation
- /types/save 校验 expectedIndicators 为 JSON 字符串数组
### Bug 修复
- 以 @Lazy 打破 IndicatorMappingService↔AiGateway 循环依赖,修复应用上下文启动失败
- 修复报告日期回填无限循环(keyset游标+去除no-op写)+ 补回填测试
- 修复 ActivityControllerTest 参数列表(补 roles 参数,解除全量测试编译阻塞)
- IndicatorValueMapper 恢复 @Mapper 注解(与既有 mapper 约定一致;@MapperScan 兜底但保持统一风格)
- AIService 舌诊 JSON 序列化捕获受检异常
- 恢复 PromotionManagement 路由缺失的 path/name(构建阻断回归)
- 采集指标种子改为仅空时写入,保留管理员编辑
### 文档
- 同步指标统一层 9 个新接口契约 + PROJECT-OVERVIEW 状态
- 指标变化曲线·指标速查·关联 - backend/miniapp/webadmin 三份实施计划 + PROJECT-OVERVIEW 同步
- 自审修正 - 复用既有reportDate/collection_date逻辑、迁移编号起点356、API_REFERENCE同步规范
- 修正 indicator_values.source_type 注释与五维/七维不入统一时序的决策一致
- 指标变化曲线·指标速查·指标关联设计规范 v1.0
### 其他
- 未同步测试,导致 src/test 全量无法编译。补 null roles 恢复测试编译。
-
- mvn clean compile 验证门。最小修复:writeValueAsString 包 try/catch,失败返回 null。
-
- - miniapp: TrendChart canvas 组件 + 指标曲线页 + 指标速查页 + 菌群详情变化区块 + pages.json 注册 + utils/api.js 4封装 + 单测
- - webadmin: src/api/indicator.js 6封装 + IndicatorCorrelations/IndicatorMappings 两页 + indicatorSeeds 解析 + 路由注册 + jest 单测 + build 门禁
- - PROJECT-OVERVIEW v2.16 同步:3 份计划索引 + 状态行更新
-
- 2. application.yml:新增 aikanshe 配置块(6参数)
- 3. API_REFERENCE.md:新增 4.36.2 节「舌诊 AI 集成」
- 无需改动 TongueDiagnosisService/HealthReportController,接口契约兼容。
- 配置: export AIKANSHE_APPKEY="your_appkey_here"
- 验证: mvn spring-boot:run → POST /api/health/report/parse-preview?type=tongue
-
- 2. application.yml:新增 aikanshe 配置块(6参数)
- 3. API_REFERENCE.md:新增 4.36.2 节「舌诊 AI 集成」
- 4. specs/2026-10-08-tongue-diagnosis-aikanshe-integration.md:完整设计规格
- 无需改动 TongueDiagnosisService/HealthReportController,接口契约兼容。
- 配置: export AIKANSHE_APPKEY="your_appkey_here"
-
- - Add background color selector for gradient template
- - Reduce QR code size from 150 to 100rpx for activities
- - Auto-detect background color from activity dimension
- - Pass template/bgColor as writable props via event updates
-
## v1.0.1555 (2026-10-09)
### 新功能
- 指标 API 封装 getIndicatorTrend/ChangeRanking/QuickLookup/CorrelationList
- 视图+管理控制器(4+5接口) + 每日校准Job
- IndicatorCorrelationService 关联CRUD+对序强制+Spearman校准
- IndicatorTrendService 曲线/变化排名/速查(含维度评分小节)
- NormalizeIndicatorPipeline 单一写者+三钩子(入库/编辑/食材快照)
- IndicatorMappingService exact→fuzzy→AI→惰性注册 映射解析
- AiGateway.classifyIndicator + LangGraph /api/v1/indicator/classify
- SpearmanUtil 秩相关+Fisher z 聚合(纯函数,含并列秩)
- ReportDateExtractor 真实报告日期提取+历史回填(幂等分批)
- 实体/Mapper 支持统一指标层(cols/新表/幂等upsert)
- 迁移356-362 升级统一指标层(列/键/两新表/维度种子)
- 舌诊 AI 集成 - aikanshe.com 优先,LangGraph 兜底
- 舌诊 AI 集成 - aikanshe.com 优先,LangGraph 兜底
- enhance activity poster with template selection and smaller QR code
- 接入图片识别食材 + 语音自动填入食物清单
- 跨小程序单点登录 sso_ticket 换票与双向免登
### Bug 修复
- 以 @Lazy 打破 IndicatorMappingService↔AiGateway 循环依赖,修复应用上下文启动失败
- 修复报告日期回填无限循环(keyset游标+去除no-op写)+ 补回填测试
- 修复 ActivityControllerTest 参数列表(补 roles 参数,解除全量测试编译阻塞)
- IndicatorValueMapper 恢复 @Mapper 注解(与既有 mapper 约定一致;@MapperScan 兜底但保持统一风格)
- AIService 舌诊 JSON 序列化捕获受检异常
### 文档
- 同步指标统一层 9 个新接口契约 + PROJECT-OVERVIEW 状态
- 指标变化曲线·指标速查·关联 - backend/miniapp/webadmin 三份实施计划 + PROJECT-OVERVIEW 同步
- 自审修正 - 复用既有reportDate/collection_date逻辑、迁移编号起点356、API_REFERENCE同步规范
- 修正 indicator_values.source_type 注释与五维/七维不入统一时序的决策一致
- 指标变化曲线·指标速查·指标关联设计规范 v1.0
### 其他
- 未同步测试,导致 src/test 全量无法编译。补 null roles 恢复测试编译。
-
- mvn clean compile 验证门。最小修复:writeValueAsString 包 try/catch,失败返回 null。
-
- - miniapp: TrendChart canvas 组件 + 指标曲线页 + 指标速查页 + 菌群详情变化区块 + pages.json 注册 + utils/api.js 4封装 + 单测
- - webadmin: src/api/indicator.js 6封装 + IndicatorCorrelations/IndicatorMappings 两页 + indicatorSeeds 解析 + 路由注册 + jest 单测 + build 门禁
- - PROJECT-OVERVIEW v2.16 同步:3 份计划索引 + 状态行更新
-
- 2. application.yml:新增 aikanshe 配置块(6参数)
- 3. API_REFERENCE.md:新增 4.36.2 节「舌诊 AI 集成」
- 无需改动 TongueDiagnosisService/HealthReportController,接口契约兼容。
- 配置: export AIKANSHE_APPKEY="your_appkey_here"
- 验证: mvn spring-boot:run → POST /api/health/report/parse-preview?type=tongue
-
- 2. application.yml:新增 aikanshe 配置块(6参数)
- 3. API_REFERENCE.md:新增 4.36.2 节「舌诊 AI 集成」
- 4. specs/2026-10-08-tongue-diagnosis-aikanshe-integration.md:完整设计规格
- 无需改动 TongueDiagnosisService/HealthReportController,接口契约兼容。
- 配置: export AIKANSHE_APPKEY="your_appkey_here"
-
- - Add background color selector for gradient template
- - Reduce QR code size from 150 to 100rpx for activities
- - Auto-detect background color from activity dimension
- - Pass template/bgColor as writable props via event updates
-
-
-
### 重构
- 管理端列表页表格改自适应高度布局
## v1.0.1554 (2026-10-09)
### 新功能
- IndicatorMappingService exact→fuzzy→AI→惰性注册 映射解析
- AiGateway.classifyIndicator + LangGraph /api/v1/indicator/classify
- SpearmanUtil 秩相关+Fisher z 聚合(纯函数,含并列秩)
- ReportDateExtractor 真实报告日期提取+历史回填(幂等分批)
- 实体/Mapper 支持统一指标层(cols/新表/幂等upsert)
- 迁移356-362 升级统一指标层(列/键/两新表/维度种子)
- 舌诊 AI 集成 - aikanshe.com 优先,LangGraph 兜底
- 舌诊 AI 集成 - aikanshe.com 优先,LangGraph 兜底
- enhance activity poster with template selection and smaller QR code
### Bug 修复
- 修复报告日期回填无限循环(keyset游标+去除no-op写)+ 补回填测试
- 修复 ActivityControllerTest 参数列表(补 roles 参数,解除全量测试编译阻塞)
- IndicatorValueMapper 恢复 @Mapper 注解(与既有 mapper 约定一致;@MapperScan 兜底但保持统一风格)
- AIService 舌诊 JSON 序列化捕获受检异常
### 其他
- 未同步测试,导致 src/test 全量无法编译。补 null roles 恢复测试编译。
-
- mvn clean compile 验证门。最小修复:writeValueAsString 包 try/catch,失败返回 null。
-
- - miniapp: TrendChart canvas 组件 + 指标曲线页 + 指标速查页 + 菌群详情变化区块 + pages.json 注册 + utils/api.js 4封装 + 单测
- - webadmin: src/api/indicator.js 6封装 + IndicatorCorrelations/IndicatorMappings 两页 + indicatorSeeds 解析 + 路由注册 + jest 单测 + build 门禁
- - PROJECT-OVERVIEW v2.16 同步:3 份计划索引 + 状态行更新
-
- 2. application.yml:新增 aikanshe 配置块(6参数)
- 3. API_REFERENCE.md:新增 4.36.2 节「舌诊 AI 集成」
- 无需改动 TongueDiagnosisService/HealthReportController,接口契约兼容。
- 配置: export AIKANSHE_APPKEY="your_appkey_here"
- 验证: mvn spring-boot:run → POST /api/health/report/parse-preview?type=tongue
-
- 2. application.yml:新增 aikanshe 配置块(6参数)
- 3. API_REFERENCE.md:新增 4.36.2 节「舌诊 AI 集成」
- 4. specs/2026-10-08-tongue-diagnosis-aikanshe-integration.md:完整设计规格
- 无需改动 TongueDiagnosisService/HealthReportController,接口契约兼容。
- 配置: export AIKANSHE_APPKEY="your_appkey_here"
-
- - Add background color selector for gradient template
- - Reduce QR code size from 150 to 100rpx for activities
- - Auto-detect background color from activity dimension
- - Pass template/bgColor as writable props via event updates
-
### 文档
- 指标变化曲线·指标速查·关联 - backend/miniapp/webadmin 三份实施计划 + PROJECT-OVERVIEW 同步
- 自审修正 - 复用既有reportDate/collection_date逻辑、迁移编号起点356、API_REFERENCE同步规范
- 修正 indicator_values.source_type 注释与五维/七维不入统一时序的决策一致
- 指标变化曲线·指标速查·指标关联设计规范 v1.0
- 采集指标补齐 实施计划(方案A,P1+P2)
## v1.0.1553 (2026-10-09)
### Bug 修复
- IndicatorValueMapper 恢复 @Mapper 注解(与既有 mapper 约定一致;@MapperScan 兜底但保持统一风格)
- AIService 舌诊 JSON 序列化捕获受检异常
- 修复家庭共餐食材持久化编译错误(selectCount 返回 Long、去除重复迁移方法、迁移354→356)
- add store/user.js, wire App.vue store init, append fatloss API docs
- 最近记录展示全家报告,报告列表默认选中本人
- 基础会员(BASIC) 在会员等级映射表中缺失,导致显示为免费用户
### 新功能
- 实体/Mapper 支持统一指标层(cols/新表/幂等upsert)
- 迁移356-362 升级统一指标层(列/键/两新表/维度种子)
- 舌诊 AI 集成 - aikanshe.com 优先,LangGraph 兜底
- 舌诊 AI 集成 - aikanshe.com 优先,LangGraph 兜底
- enhance activity poster with template selection and smaller QR code
- add all UI pages (weight/diet/exercise/ai-coach/profile/chart/query)
- add remaining pages (ai-coach, profile/goal, weight-chart, food-query)
- add api wrappers and format utils
- init project scaffold
- add controllers for weight/diet/exercise/goal
- add service layer
- add entities and mappers
- 家庭共餐食材推荐持久化到数据库
### 其他
- mvn clean compile 验证门。最小修复:writeValueAsString 包 try/catch,失败返回 null。
-
- - miniapp: TrendChart canvas 组件 + 指标曲线页 + 指标速查页 + 菌群详情变化区块 + pages.json 注册 + utils/api.js 4封装 + 单测
- - webadmin: src/api/indicator.js 6封装 + IndicatorCorrelations/IndicatorMappings 两页 + indicatorSeeds 解析 + 路由注册 + jest 单测 + build 门禁
- - PROJECT-OVERVIEW v2.16 同步:3 份计划索引 + 状态行更新
-
- 2. application.yml:新增 aikanshe 配置块(6参数)
- 3. API_REFERENCE.md:新增 4.36.2 节「舌诊 AI 集成」
- 无需改动 TongueDiagnosisService/HealthReportController,接口契约兼容。
- 配置: export AIKANSHE_APPKEY="your_appkey_here"
- 验证: mvn spring-boot:run → POST /api/health/report/parse-preview?type=tongue
-
- 2. application.yml:新增 aikanshe 配置块(6参数)
- 3. API_REFERENCE.md:新增 4.36.2 节「舌诊 AI 集成」
- 4. specs/2026-10-08-tongue-diagnosis-aikanshe-integration.md:完整设计规格
- 无需改动 TongueDiagnosisService/HealthReportController,接口契约兼容。
- 配置: export AIKANSHE_APPKEY="your_appkey_here"
-
- - Add background color selector for gradient template
- - Reduce QR code size from 150 to 100rpx for activities
- - Auto-detect background color from activity dimension
- - Pass template/bgColor as writable props via event updates
-
- - 新增 DietFamilySelectedIngredient 实体和 Mapper
- - DietIngredientService 改用数据库持久化替代内存 Map
- - suggestIngredients 优先从 DB 加载已有选择
- - refreshIngredients 清空并重新持久化推荐列表
- - add/removeIngredient 直接操作 DB
- - confirmIngredients 保留已选食材(不再清空)
-
### 文档
- 指标变化曲线·指标速查·关联 - backend/miniapp/webadmin 三份实施计划 + PROJECT-OVERVIEW 同步
- 自审修正 - 复用既有reportDate/collection_date逻辑、迁移编号起点356、API_REFERENCE同步规范
- 修正 indicator_values.source_type 注释与五维/七维不入统一时序的决策一致
- 指标变化曲线·指标速查·指标关联设计规范 v1.0
- 采集指标 spec 改为方案A(沿既有 expected_indicators),补齐管理端/展示/驱动解析
- mark completed tasks in fatloss-miniprogram-plan
- add fatloss mini-program implementation plan
- 报告类型采集指标定义与驱动解析设计(方案2 分层,P1+P2 本期)
## v1.0.1552 (2026-10-09)
### 新功能
- 实体/Mapper 支持统一指标层(cols/新表/幂等upsert)
- 迁移356-362 升级统一指标层(列/键/两新表/维度种子)
- 舌诊 AI 集成 - aikanshe.com 优先,LangGraph 兜底
- 舌诊 AI 集成 - aikanshe.com 优先,LangGraph 兜底
- enhance activity poster with template selection and smaller QR code
- 财富中心移除推广入口并统一 CF 值显示
- 我的团队入口合并至推广团队页
- add psychological assessment module (PHQ-9, RSES-7) - New pages: pages/psych-assessment/index & quiz - pages.json registers psych-assessment routes - Dimensions: phq9_score, phq4_score, reses_score
### Bug 修复
- AIService 舌诊 JSON 序列化捕获受检异常
- 家庭收益成员贡献榜使用真实家庭成员
### 其他
- mvn clean compile 验证门。最小修复:writeValueAsString 包 try/catch,失败返回 null。
-
- - miniapp: TrendChart canvas 组件 + 指标曲线页 + 指标速查页 + 菌群详情变化区块 + pages.json 注册 + utils/api.js 4封装 + 单测
- - webadmin: src/api/indicator.js 6封装 + IndicatorCorrelations/IndicatorMappings 两页 + indicatorSeeds 解析 + 路由注册 + jest 单测 + build 门禁
- - PROJECT-OVERVIEW v2.16 同步:3 份计划索引 + 状态行更新
-
- 2. application.yml:新增 aikanshe 配置块(6参数)
- 3. API_REFERENCE.md:新增 4.36.2 节「舌诊 AI 集成」
- 无需改动 TongueDiagnosisService/HealthReportController,接口契约兼容。
- 配置: export AIKANSHE_APPKEY="your_appkey_here"
- 验证: mvn spring-boot:run → POST /api/health/report/parse-preview?type=tongue
-
- 2. application.yml:新增 aikanshe 配置块(6参数)
- 3. API_REFERENCE.md:新增 4.36.2 节「舌诊 AI 集成」
- 4. specs/2026-10-08-tongue-diagnosis-aikanshe-integration.md:完整设计规格
- 无需改动 TongueDiagnosisService/HealthReportController,接口契约兼容。
- 配置: export AIKANSHE_APPKEY="your_appkey_here"
-
- - Add background color selector for gradient template
- - Reduce QR code size from 150 to 100rpx for activities
- - Auto-detect background color from activity dimension
- - Pass template/bgColor as writable props via event updates
-
- - getFamilyId() 通过 userMapper.selectById 查询用户真实 familyId
- - isFamilyAdmin() 检查 user.isFamilyAdmin 字段
- - 修复成员贡献榜展示非本家庭用户的问题
- Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)
- Co-authored-by: Sisyphus
-
- - 移除 SharePoster 组件及其相关死代码(import/注册/数据字段/方法)
- - 移除 fenToYuan/cfToYuan 辅助函数,统一替换为 cfVal 直接展示 CF 值
- - 更新所有金额标签为 CF 单位(累计推荐CF/可支配CF/今日CF 等)
- - 分配弹窗提示文字同步更新
- Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)
- Co-authored-by: Sisyphus
- # Conflicts:
- # cfc-frontend/pages/promotion/index.vue
-
- - pages.json 移除 pages/profile/team-tree 页面注册
- - 删除 pages/profile/team-tree.vue(与推广团队功能重复)
- Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)
- Co-authored-by: Sisyphus
-
### 文档
- 指标变化曲线·指标速查·关联 - backend/miniapp/webadmin 三份实施计划 + PROJECT-OVERVIEW 同步
- 自审修正 - 复用既有reportDate/collection_date逻辑、迁移编号起点356、API_REFERENCE同步规范
- 修正 indicator_values.source_type 注释与五维/七维不入统一时序的决策一致
- 指标变化曲线·指标速查·指标关联设计规范 v1.0
## v1.0.1551 (2026-10-09)
### Bug 修复
- AIService 舌诊 JSON 序列化捕获受检异常
### 其他
- mvn clean compile 验证门。最小修复:writeValueAsString 包 try/catch,失败返回 null。
-
## v1.0.1550 (2026-10-09)
### 新功能
- 迁移356-362 升级统一指标层(列/键/两新表/维度种子)
## v1.0.1549 (2026-10-09)
### 文档
- 指标变化曲线·指标速查·关联 - backend/miniapp/webadmin 三份实施计划 + PROJECT-OVERVIEW 同步
### 其他
- - miniapp: TrendChart canvas 组件 + 指标曲线页 + 指标速查页 + 菌群详情变化区块 + pages.json 注册 + utils/api.js 4封装 + 单测
- - webadmin: src/api/indicator.js 6封装 + IndicatorCorrelations/IndicatorMappings 两页 + indicatorSeeds 解析 + 路由注册 + jest 单测 + build 门禁
- - PROJECT-OVERVIEW v2.16 同步:3 份计划索引 + 状态行更新
-
## v1.0.1548 (2026-10-09)
### 文档
- 自审修正 - 复用既有reportDate/collection_date逻辑、迁移编号起点356、API_REFERENCE同步规范
- 修正 indicator_values.source_type 注释与五维/七维不入统一时序的决策一致
## v1.0.1547 (2026-10-09)
### 文档
- 指标变化曲线·指标速查·指标关联设计规范 v1.0
## v1.0.1546 (2026-10-08)
### 新功能
- 舌诊 AI 集成 - aikanshe.com 优先,LangGraph 兜底
- 舌诊 AI 集成 - aikanshe.com 优先,LangGraph 兜底
- enhance activity poster with template selection and smaller QR code
- 六个维度页传入dimension-code按域筛选推荐商品
- DimensionProducts组件新增dimensionCode按维度取推荐
### 其他
- 2. application.yml:新增 aikanshe 配置块(6参数)
- 3. API_REFERENCE.md:新增 4.36.2 节「舌诊 AI 集成」
- 无需改动 TongueDiagnosisService/HealthReportController,接口契约兼容。
- 配置: export AIKANSHE_APPKEY="your_appkey_here"
- 验证: mvn spring-boot:run → POST /api/health/report/parse-preview?type=tongue
-
- 2. application.yml:新增 aikanshe 配置块(6参数)
- 3. API_REFERENCE.md:新增 4.36.2 节「舌诊 AI 集成」
- 4. specs/2026-10-08-tongue-diagnosis-aikanshe-integration.md:完整设计规格
- 无需改动 TongueDiagnosisService/HealthReportController,接口契约兼容。
- 配置: export AIKANSHE_APPKEY="your_appkey_here"
-
- - Add background color selector for gradient template
- - Reduce QR code size from 150 to 100rpx for activities
- - Auto-detect background color from activity dimension
- - Pass template/bgColor as writable props via event updates
-
- Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)
- Co-authored-by: Sisyphus
-
- Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)
- Co-authored-by: Sisyphus
-
- Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)
- Co-authored-by: Sisyphus
-
- Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)
- Co-authored-by: Sisyphus
-
- Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)
- Co-authored-by: Sisyphus
-
### Bug 修复
- 购买态订单查询改用paid等真实状态枚举
- 维度商品推荐修复订单状态匹配与实物库存口径
- 迁移354补齐product_recommendation_log缺失列并同步schema.sql
## v1.0.1545 (2026-10-08)
### 新功能
- 舌诊 AI 集成 - aikanshe.com 优先,LangGraph 兜底
- 舌诊 AI 集成 - aikanshe.com 优先,LangGraph 兜底
### 其他
- 2. application.yml:新增 aikanshe 配置块(6参数)
- 3. API_REFERENCE.md:新增 4.36.2 节「舌诊 AI 集成」
- 无需改动 TongueDiagnosisService/HealthReportController,接口契约兼容。
- 配置: export AIKANSHE_APPKEY="your_appkey_here"
- 验证: mvn spring-boot:run → POST /api/health/report/parse-preview?type=tongue
-
- 2. application.yml:新增 aikanshe 配置块(6参数)
- 3. API_REFERENCE.md:新增 4.36.2 节「舌诊 AI 集成」
- 4. specs/2026-10-08-tongue-diagnosis-aikanshe-integration.md:完整设计规格
- 无需改动 TongueDiagnosisService/HealthReportController,接口契约兼容。
- 配置: export AIKANSHE_APPKEY="your_appkey_here"
-
## v1.0.1544 (2026-10-08)
### 新功能
- enhance activity poster with template selection and smaller QR code
- 每类报告定义采集指标项并接入采集完整性校验
### 其他
- - Add background color selector for gradient template
- - Reduce QR code size from 150 to 100rpx for activities
- - Auto-detect background color from activity dimension
- - Pass template/bgColor as writable props via event updates
-
- - 幂等补注册 dan_a1/b2/b3/b4/b5/b6/c1 与 gut_flora_beijing 类型行(parser_path 空,不干扰指纹路由)
- - ReportCollectService 采集完成后按定义校验(归一化+包含+CJK二元组重叠匹配),结果写入 health_report_drafts.collect_validation(typeId/expected/matched/pass/missing)
- - schema.sql 同步两处新列
-
## v1.0.1543 (2026-10-08)
### 新功能
- enhance activity poster with template selection and smaller QR code
### 其他
- - Add background color selector for gradient template
- - Reduce QR code size from 150 to 100rpx for activities
- - Auto-detect background color from activity dimension
- - Pass template/bgColor as writable props via event updates
-
### Bug 修复
- 修复B4报告解析——自我概念按「维度 分数」提取6维、自驱力按维度顺序映射我的得分,去除错误兜底
## v1.0.1542 (2026-10-08)
### 新功能
- enhance activity poster with template selection and smaller QR code
### 其他
- - Add background color selector for gradient template
- - Reduce QR code size from 150 to 100rpx for activities
- - Auto-detect background color from activity dimension
- - Pass template/bgColor as writable props via event updates
-
### Bug 修复
- add fallback from product.domain when candidates empty
## v1.0.1541 (2026-10-08)
### 新功能
- enhance activity poster with template selection and smaller QR code
- DAN报告新增按维度重解析接口,修复历史误解析并刷新结果/展示块/汇总
### 其他
- - Add background color selector for gradient template
- - Reduce QR code size from 150 to 100rpx for activities
- - Auto-detect background color from activity dimension
- - Pass template/bgColor as writable props via event updates
-
## v1.0.1540 (2026-10-08)
### 新功能
- enhance activity poster with template selection and smaller QR code
- 我的画像页迁移五维画像并支持全屏编辑,后端新增每日自动更新任务
- 引入企业级设计系统(Ant Design 5 令牌)并应用 flex 撑满布局
### 其他
- - Add background color selector for gradient template
- - Reduce QR code size from 150 to 100rpx for activities
- - Auto-detect background color from activity dimension
- - Pass template/bgColor as writable props via event updates
-
- - OrderManage.vue: 表格改用 .adm-table-wrap 弹性撑满(height=100%),移除 JS 计算的 tableHeight
-
## v1.0.1539 (2026-10-08)
### 新功能
- enhance activity poster with template selection and smaller QR code
### 其他
- - Add background color selector for gradient template
- - Reduce QR code size from 150 to 100rpx for activities
- - Auto-detect background color from activity dimension
- - Pass template/bgColor as writable props via event updates
-
### Bug 修复
- dan报告维度映射支持类型编码(a1/b2/b4等),前端dan_*前缀统一跳转DAN报告页
## v1.0.1538 (2026-10-08)
### 新功能
- enhance activity poster with template selection and smaller QR code
### 其他
- - Add background color selector for gradient template
- - Reduce QR code size from 150 to 100rpx for activities
- - Auto-detect background color from activity dimension
- - Pass template/bgColor as writable props via event updates
-
- - getScoreClass/getStatusText/buildFamilyOverview 等状态判定全部改为 >= 0 边界
- - onLoad 从报告入口进入时默认 sortType='asc',setFilter('unsuitable') 时同步重置 sortType
- - 分类 tab key 从英文 (vegetable/fruit/meat/seafood/grain/dairy) 改为中文 (蔬菜/水果/肉禽/水产/谷物/蛋奶),并新增 getCategoryKeywords() 关键词映射覆盖 PDF/ LangGraph 两套数据源分类命名
- - 修复分类点击无效问题,确保前端过滤能匹配 DB 中存储的中文分类
- closes related category filter bug, aligns with backend semantics
-
### Bug 修复
- ingredient query page - 戒备阈值 <50→<0, 默认正序, 分类点击生效
## v1.0.1537 (2026-10-08)
### 新功能
- enhance activity poster with template selection and smaller QR code
### 其他
- - Add background color selector for gradient template
- - Reduce QR code size from 150 to 100rpx for activities
- - Auto-detect background color from activity dimension
- - Pass template/bgColor as writable props via event updates
-
- - 将 SUM(points) 修正为 SUM(amount),与 points_log 表结构一致
- - 修复任务完成接口 /api/tasks/{id}/complete 在 calculateLatePenalty 路径抛 BadSqlGrammarException
-
### Bug 修复
- 修复 PointsLogMapper.selectSum SQL 占位符转义及字段名错误
## v1.0.1536 (2026-10-07)
### 新功能
- enhance activity poster with template selection and smaller QR code
### 其他
- - Add background color selector for gradient template
- - Reduce QR code size from 150 to 100rpx for activities
- - Auto-detect background color from activity dimension
- - Pass template/bgColor as writable props via event updates
-
### Bug 修复
- 注册/绑定推荐人不再发放CF值,新增首次报告上传任务(300 CF)
## v1.0.1535 (2026-10-07)
### Bug 修复
- 健康首页最近记录只显示当前用户自己的报告
- 商品管理列表撑满视口并消除多级滚动条
### 其他
- getFamilyReports 返回全家全部报告),改回传入当前视图成员 memberId,
- 符合"只有两种情况"的语义:
- - 未切换视图 = 当前登录用户自己的报告(currentChildId/currentMemberId
- 未写入 storage 时回退 userId,后端 getMemberReports 按成员严格过滤)
- - 已切换成员 = 被切换成员的报告
- Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)
- Co-authored-by: Sisyphus
-
- - 表格改用 height=100% + flex:1,仅保留表格自身滚动条
- - 移除 JS 计算 tableHeight 及 window.resize 监听
-
### 新功能
- admin supply-manage auto-set activityProviderStatus for activity_provider
## v1.0.1534 (2026-10-07)
### 新功能
- integrate article recommendation into dimension pages
- include vendorType/activityProviderStatus in login response for frontend permission check
- allow activity_provider to create activities + scene referral binding
- 小程序新增任务提醒配置页(渠道/时机/偏移/开关)
- 任务打卡提醒升级为可配置提醒模块
- 每日任务打卡超时 webhook 提醒
- 新增迁移352移除报告上传权益与配额残留并同步 schema.sql
- 移除报告上传配额,对所有登录用户免费无限
- implement product recommendation engine with persona + association relations (P3) add recommendation rules DB + service + UI ab-test tracking
### 其他
- - 知识库:wiki/raw 原始资料、wiki 页面、结构化知识、构建脚本及 memory 等知识资产
- - 新增 知识库/.gitignore,排除中间产物(_kb_work/.wiki-creator/__pycache__/*.pyc/.obsidian 缓存)
- Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)
- Co-authored-by: Sisyphus
-
- 避免最新上传/归属到其他成员的报告在首页不显示;切换到具体成员或孩子本人登录时仍按成员过滤。
- Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)
- Co-authored-by: Sisyphus
-
- - 新增 pages/reminder-config/index.vue 提醒设置页(渠道多选含未开通态/时机单选/偏移分钟/启用开关)
- - pages.json 注册 reminder-config 分包
- - profile 设置 actionSheet 增加"提醒设置"入口
-
- - 新增 TaskReminderConfigService/Controller(/api/task/reminder-config get/save)
- - 重写 TaskCheckinWebhookReminderTask: 按配置支持的 before_deadline/after_timeout 双窗口, 多渠道分发
- - 新增 WebhookNotificationChannel(wechat) 接入微信待办 webhook; Email 通道骨架(未启用)
- - 站内信(in_app)恒兜底并作幂等标记, 兼容旧 type 判重避免重复推送
- - 无配置用户走默认: wechat+超时60分钟(与线上行为一致)
- - 新增 7 个单测覆盖窗口/渠道/判重/停用场景
-
- - 新增 TaskCheckinWebhookReminderTask:每分钟扫描家长执行型待打卡任务,提醒时间(deadline)过 1 小时未完成则推送 webhook
- - 幂等:user_notifications 标记,同任务同日仅推一次;失败下一分钟自动重试
- 模板任务数据(9 条健康打卡)一次性直接落库,不写入代码。
-
- 表示该order_id在微信订单库中从未创建成功(并非临时查询失败)。
- 原逻辑将所有errcode!=0一律return null, 导致超时任务永远跳过不关单,
- 死单永不清理且每单每分钟刷2条WARN(今日已5200+条)。
- - queryOrder: 单独识别268490002返回status=-1(本地扩展状态) + INFO日志
- - VirtualPayTimeoutTask三个handler: status=-1归入明确未支付置cancelled分支
- - 已用真实paid单(ORD1785990942621001DCC2)实测接口正常, 无误杀风险
-
- Co-authored-by: Sisyphus
-
- Co-authored-by: Sisyphus
-
- Co-authored-by: Sisyphus
-
- Co-authored-by: Sisyphus
-
-
- Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)
- Co-authored-by: Sisyphus
-
- add: care_family 运营资料 + cfContent 微信贴图话题发布 skill
### Bug 修复
- 健康首页最近记录默认展示全家报告
- query_order返回268490002数据不存在视为未支付关单
- 移除会员对比表与升级弹窗中的报告上传配额文案
- 微信支付 v3 回调通知加入白名单并修正 notify-url
- 报告列表默认显示当前登录用户而非全部
- body-detail navigation to unregistered pages; resolve action-detail merge conflict
### 文档
- add activity share referral design spec
## v1.0.1533 (2026-10-07)
### Bug 修复
- 后台会员等级写入家庭维度事实源,修复健康方案生成误报未升级
### 其他
-
## v1.0.1532 (2026-10-07)
### Bug 修复
- 修复远程 b3e18f84e 引入的 ProductOrderService 编译错误
### 其他
- - getEligibleMemberPrice 方法被插入到类中错误位置, 提前用 } 闭合类,
- 导致原"7.组装返回"代码段孤立在类外 (class/interface/enum expected)
- - 方法内引用未定义的 userId, 应为参数 buyerId
- 修复: 恢复"6.更新订单时间→7.组装返回"方法完整结构,
- getEligibleMemberPrice 移到类内末尾, userId 改为 buyerId
-
- 会员可见级别模型: 增加所有用户档(含未登录)+BASIC独立档位
- FREE=1 BASIC=2 FAMILY=3 PROVIDER=4 PREMIUM=5 LIFETIME=6,
- BASIC 从与 FREE 同级调整为独立档位(FREE 与 FAMILY 之间)
- - 前端: ProductEdit/CategoryManage 可见级别下拉增加"所有用户(含未登录)"
- 选项(值空串,提交转null), 显示全部级别含FREE; ProductManage
- levelLabel NULL 显示"所有用户"
- - schema.sql: membership_levels.level_order 注释同步
-
## v1.0.1531 (2026-10-07)
### Bug 修复
- 会员判定取个人与家庭身份中更高级别,防止家庭同步覆盖更高个人会员
### 其他
- max 比较取更高者,覆盖全部用户侧调用方(折扣/可见等级/权限/赠礼前置校验等)
- - resolveEffectiveLevel: level_order 比较,平级时优先非 FREE(当前 FREE=BASIC=1 防同级覆盖)
- - syncMembershipToFamilyMembers/syncMembershipForNewMember: 家庭同步只升不降,
- 成员已有更高级别个人身份时保留,避免覆盖
- - downgradeFamilyMembers: 按家庭历史最高 level_order 守卫,仅降级不高于该级别的成员,
- 保留 LIFETIME/PREMIUM 等纯个人身份
- - 新增 MembershipServiceTest 17 用例(纯 Mockito)
-
## v1.0.1530 (2026-10-07)
### Bug 修复
- min_visible_level 空串归一化为 NULL,避免管理端清空可见级别导致商品对所有用户不可见
## v1.0.1529 (2026-10-07)
### 样式
- 商品管理页企业级视觉重构
### 其他
- - 筛选区改为「标签+控件」结构,去除 el-card 内套 filter-bar 的卡中卡阴影
- - 数值列右对齐+等宽数字+售价千分位;状态标签标准化为浅底深字+同色点
- - 操作列由 280px 缩减为 176px 并降为文本按钮,主色覆盖率收敛至 5% 内
- - 新增批量选中提示条;弹窗区块标题/圆角/分割线统一;表格高度改为响应式
- Co-Authored-By: WorkBuddy
-
## v1.0.1528 (2026-10-06)
### Bug 修复
- team 页面 onLoad/onShow 首次加载守卫,消除审计 LIFECYCLE_DOUBLE 报错
- 编辑报告时同步更新 report_date 字段
### 新功能
- 跨家庭报告转移申请,同MD5报告需原家庭同意
## v1.0.1527 (2026-10-06)
### Bug 修复
- 报告列表补家庭隔离,修复解绑时"报告不属于该家庭"
### 其他
- 因此会把其他家庭的报告带进成员列表。实测家庭72成员返回7条中有5条来自
- 家庭67/70;小程序照单显示"取消归属",点击后在 reassignReport 权限校验
- (报告必须属于该家庭)处抛异常。列表侧与权限侧必须遵守同一条家庭边界。
- - getMemberReports 在归一化 id 集合时同步解析成员所在家庭,
- 查询追加 family_id = ? 约束;无法解析家庭时返回空列表,
- 与 /report/list "无家庭信息返回空列表" 的既有语义一致
- - 该方法的另两个调用方(FamilyMemberNutritionProfileService 营养画像)
- 同步受益,避免营养画像跨家庭取报告
- - 同步修复 HealthReportServiceTest 中 2 条被上次提交破坏的断言
- (旧成员重算已由 refreshFromGutReport 改为 rebuildFromMemberReports;
- pom 全局 skipTests=true 导致当时未被发现)
- - 新增 getMemberReports_constrainsToMemberFamily 回归测试
- 实测 member 21 列表由 7 条收敛为 2 条(均 family_id=72),越界为空;
- 报告42 解绑/重绑均返回 200 且净状态不变。
-
## v1.0.1526 (2026-10-06)
### 新功能
- beautify action-detail (行) page — enhanced visual design with scores, gradients & hierarchy
### 其他
- - Gradient accent bar on all sections (brand green #10B981)
- - Unified section-title-wrap with green left border
- - Score explanation: ≥80 good, ≥60 warn, <60 bad
- - Header subtext merged into title-wrap for consistent layout
- - Visual hierarchy improvements throughout
-
## v1.0.1525 (2026-10-06)
### 重构
- 整体美化智维度页面 - 修复幽灵样式/注释/统一视觉语言
## v1.0.1524 (2026-10-06)
### Bug 修复
- 修复报告改绑维度评分重复主键与脏数据残留
### 其他
- health_dimension_scores 上有 uk_member_dim_date 唯一键,
- 同一成员重复刷新即抛 Duplicate entry 导致整个改绑事务回滚。
- - saveScore 改为按 (member_id, dimension, assess_date) upsert,
- 使 10 处 refreshFromGutReport 调用点可重复执行
- - 新增 rebuildFromMemberReports:清除成员全部 REPORT 源维度分后,
- 按其当前绑定的有效报告重新派生
- - reassignReport 及报告编辑/解绑三处旧成员调用改用重建,
- 此前是拿已不属于自己的报告再插一遍,既残留脏数据又撞唯一键
- - 新增 getMemberBoundReports:严格按 subject_id 过滤,
- 避免 getMemberReports 带出 subject_id 为空的未绑定报告
- 实测解绑->重绑后评分与基线完全一致,无重复键。
-
## v1.0.1523 (2026-10-06)
### Bug 修复
- 调整归属按钮移至滑动操作区,与删除按钮并列显示
### 其他
- Co-authored-by: Sisyphus
-
## v1.0.1522 (2026-10-06)
### Bug 修复
- team-system 页面注册移至 vendor 子包,修复编译失败
### 其他
- Co-authored-by: Sisyphus
-
## v1.0.1521 (2026-10-06)
### Bug 修复
- 修复套餐子商品添加按钮 TypeError(this 为 null)
### 其他
- Vue updateListeners 用 createFnInvoker 包装后以 context=null 调用
- (invokeWithErrorHandling(fns, null, ...) -> handler.apply(null, args)),
- ESM 严格模式下 this 保持 null,点击时读取 this.bundleItems 抛
- TypeError: Cannot read properties of null。
- 改为内联调用 @click="method()",编译器生成 function($event){return method()},
- 表达式处于 render 的 with(this) 作用域内,标识符解析为 vm 上的方法,this 正确绑定。
- 同文件另 3 处同模式裸绑定(addSelectedGuide/addOnlineSlot/handleSave)一并修复。
-
## v1.0.1520 (2026-10-06)
### Bug 修复
- 加固成员归属校验,避免 family_member_id 为空时 NPE
### 其他
- 当 family_member_id 为 NULL 时抛 NPE 并被兜底为 500,掩盖了本应返回的 400 业务提示
- (如"需先完成前置任务")。改为 Objects.equals 判空安全比较。
-
## v1.0.1519 (2026-10-05)
### Bug 修复
- 周期实例透传 family_member_id + 迁移348 回填存量
### 其他
- 今日任务列表(列表按该字段过滤),completeTask 也会抛 NPE。存量 174 个实例中
- 90 个为 NULL,含既有模板实例,属既存缺陷一并修复。
- 迁移348 按模板回填,模板缺失时以 child_id 兜底。
-
## v1.0.1518 (2026-10-05)
### Bug 修复
- hasTaskForDate 排除模板行,修复方案当日服务任务不生成
### 其他
- 导致首个实例永不生成,"采购完成即激活服务任务"在方案批准当天失效(次日自愈)。
- 存量模板同样存在该潜在缺陷,一并修复。
-
## v1.0.1517 (2026-10-05)
### Bug 修复
- 修复模板未闭合的 view 标签导致的编译失败
### 其他
- Co-authored-by: Sisyphus
-
- - report-detail.vue: 报告日期输入框去除 tongue 类型限制
- - format.js: 新增 formatDate/formatDateTime 工具函数
- Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)
- Co-authored-by: Sisyphus
-
### 新功能
- 报告归属调整与日期格式化
## v1.0.1516 (2026-10-05)
### Bug 修复
- 限制提醒窗口与单次发送量,避免历史积压批量误发
### 其他
- - 单次调度最多发送50条,防止选数异常形成短信轰炸
-
## v1.0.1515 (2026-10-05)
### Bug 修复
- 打通方案→采购→服务→打卡→CF值→提醒全流程
### 其他
- 依赖逐项配对(每个使用任务绑定其前面最近的购买任务),修复多商品共用首个锚点
- - D2 周期服务任务写成 is_template=1 模板,交 RepeatTaskGenerator 按日生成实例
- - D3 新增 health_plans.total_days,驱动方案截止日期与周期生成边界;/save 支持入参
- - D4 新增 TaskReminderScheduledTask(每日09:00)+ task_reminder 模板 + 迁移345/346/347
- 迁移347 用 LEFT JOIN 自连接修正 MySQL 1093;回填存量依赖并置 locked
- - D5 打卡审核通过后发放 CF 值(user_platform_balance + family_platform_balance),按 task.points 1:1,幂等去重
- - D6 结构化 planJson 支持 action_type=use;懒回填保真,使用任务不再被丢弃
-
## v1.0.1514 (2026-10-05)
### 重构
- 移除智页面底部四个快捷操作按钮
## v1.0.1513 (2026-10-05)
### 新功能
- 新增供应商团队客户归属系统
### 其他
- 2. 后端新增SupplyCustomerRelation实体/Mapper/Service/Controller
- 3. ProductOrderService订单完成时自动绑定客户归属关系
- 4. 新增供应商团队系统页面pages/vendor/team-system
- 5. 新增供应商团队客户页面pages/vendor/team-customers
- 6. utils/api.js新增供应商团队相关API封装函数
- 7. pages.json注册新页面路由
-
- 重新设计 身维度身体指页:顶部关键指标卡片+健康概览+雷达趋势图+报告导航按钮
## v1.0.1512 (2026-10-05)
### Bug 修复
- 修复远程提交3处编译错误 - ProductOrderService 漏注入 supplyCustomerRelationService / SupplyTeamController var改显式类型 / SupplyCustomerRelationService 移除不存在的 FamilyMember.getRole()
## v1.0.1511 (2026-10-05)
### 新功能
- add batch shelve + category selection for product management
### 其他
- * Backend: POST /api/admin/product/batch-shelve with {productIds, shelve}
- * ProductService.batchAdminShelve() validates all products are in approvable status before bulk update
- * Frontend: ProductManage.vue - multi-select table row + dropdown '批量上架/下架' with confirmation
- * api/admin.js: batchShelveProduct()
- - Task 2: Category selection on product edit page
- * ProductEdit.vue adds categoryId field to form, loaded via getCategoryTree(true)
- * UI uses el-option-group grouped by parent category, searchable/filterable
- * On save/edit, categoryId is included in payload, enabling frontend mall category filtering
- - Docs: PROJECT-OVERVIEW.md and API_REFERENCE.md updated with new endpoints
-
## v1.0.1510 (2026-10-05)
### Bug 修复
- 删除重复的 methods 块,修复 'Unexpected end of input'
- 重构模板为单根元素,修复 'should contain exactly one root element'
### 其他
- 但 L298 又出现了一个相同的 methods: { ... } 块,导致整个 script 语法结构断裂:
- L139: methods: { ← 第一个 methods 块(正确)
- ...
- L297: },
- L298: methods: { ← 重复,整块内容照抄了 L139–L297
- ...
- L509: }
- L510: }
- L511: }
- L512:
- Node 报 'Unexpected end of input'(L422),是因为重复块内部的多层闭括号
- 把 methods 对象的闭合、export default 的闭合都提前结束了,导致后续
- 和 style 被当作 script 的一部分解析。
- 修复:删除 L298–L510 的重复块,在原 methods 块末尾补充 }; 闭合。
- Co-authored-by: Sisyphus
-
- Vue 单根元素要求,编译报 'Component template should contain exactly one root element'。
- 修复:将 save-bar 移入条件渲染的 section 内(v-if="renderedSnapshot"),
- 外层 成为唯一根元素。
- Co-authored-by: Sisyphus
-
## v1.0.1509 (2026-10-05)
### 重构
- 移除孤儿 DanShop 模块 DDL(danshop_* 十张空表无代码引用)
## v1.0.1508 (2026-10-05)
### 新功能
- 我的分享海报改为五维能量数据卡
### 其他
- - 新增五维能量数据卡(canvas 绘制:综合分大字 + 五维彩色圆/分数/进度条)与未解锁全景时的品牌渐变卡
- - profile.vue 接入 getEnergySandbox('family'),移除旧 share-qr-modal 实现;浮标样式由 emoji 改为 CSS 绘制二维码图形
-
- fix(index-home): 删除 loadNotifications 后遗留的悬空 promise 链
- }).catch(function() {}) 与 },使整页 script 无法解析:
- }).catch(function() {})
- },
- }).catch(function() {}) <- 悬空,无对应的 Promise 链
- }, <- 多余的方法闭合
- // ===== 能量/积分/CF值变更通知 =====
- 该语法错误在 HEAD 中已存在,且 392480520 的两个父提交同样损坏。此前一直
- 未暴露,是因为差量编译从未重新解析此文件;本次重新编译才报出:
- Module build failed ... 语法错误: Unexpected token, expected "," (1137:5)
- 无任何逻辑缺失,纯语法残留,故仅删除这两行,未改动方法体。
- Co-authored-by: Sisyphus
-
## v1.0.1507 (2026-10-05)
### Bug 修复
- ProductEdit.vue addBundleItem 防止 null 报错
### 其他
- - 防止 TypeError: Cannot read properties of null (reading 'bundleItems')
-
## v1.0.1506 (2026-10-05)
### 文档
- 记录健康报告归属重分配设计文档与实现计划 本次变更包括: 1. specs/2026-10-05-health-report-reassign-design.md: 功能设计规格(接口、流程、权限、风险、验收标准) 2. docs/superpowers/plans/2026-10-05-health-report-reassign-plan.md: 7 个任务的实施计划(Controller、Service、查询修复、前端、测试、文档) 3. PROJECT-OVERVIEW.md v2.15: 更新版本号与状态栏,标注健康报告归属重分配已实施(全栈已完成)
### 新功能
- 管理端报告归属管理页改用 Element UI 组件 该页面从 Arco Design 迁移至 Element UI 规范,新增家庭选择过滤、归属状态标签、归属成员展示、刷新功能等。展示列表新增「调整归属」操作入口,点击后弹出归属成员选择器。
- replace user-facing '孩子' terminology with '成员'/'家庭成员' across frontend - assessment flow, family member pages, health questionnaires, activity pages, and UI text updates per product decision that system has no 'child' concept; users see only self + family members, child status derived from relationship; internal entity/DB references (Child entity, child_id columns) preserved unchanged
## v1.0.1505 (2026-10-04)
### 新功能
- Add article type and fix search bindings
## v1.0.1504 (2026-10-04)
### 新功能
- Remove custom page title from health plan summary, use pages.json configured title
## v1.0.1503 (2026-10-04)
### 新功能
- portrait-edit UI redesign - remove AI generation, enlarge textarea, fix save button to bottom
## v1.0.1501 (2026-10-04)
### Bug 修复
- env-version default develop->release,修复 getwxacode 41030 invalid page rid [skip ci]
### 文档
- 记录任务 9 计划缺陷 26 并同步 PROJECT-OVERVIEW 进度
## v1.0.1500 (2026-10-04)
### 新功能
- 新增审核工作台 8 个API 封装
- 新增我的服务家庭与客户家庭成员查询端点
- 新增客户家庭方案审核 4 端点,含 planId IDOR 反查防护
- approveAndPublish 返回 taskGenerated,任务生成失败不再静默
### 文档
- 任务 8 后端整体验证通过(32 用例全绿)并同步进度
- 记录任务 7 计划缺陷 24/25 并同步 PROJECT-OVERVIEW 进度
- 记录任务 6 计划缺陷 23 并同步 PROJECT-OVERVIEW 进度
- 记录任务 5 计划缺陷 21/22 并同步 PROJECT-OVERVIEW 进度
### Bug 修复
- 迁移343 health_report_drafts 补 member_id 列(commit 21f8f6740 遗漏迁移脚本)
## v1.0.1499 (2026-10-04)
### 文档
- 记录任务 4 计划缺陷 20 并同步 PROJECT-OVERVIEW 进度
## v1.0.1498 (2026-10-04)
### Bug 修复
- 修复 HealthPlanReviewGuardTest 测试用例
## v1.0.1497 (2026-10-04)
### Bug 修复
- rejectPlan 增加状态守卫,新增 getPlanForFamily 防止 IDOR 越权
## v1.0.1496 (2026-10-04)
### Bug 修复
- GuideFamilyTaskController 7 个端点接入绑定校验,修复跨家庭越权
- confirmBind 重绑时复位 status 为 binding,修复解绑后无法重新绑定
- 修复 ProductControllerTest 与 OrchestrationEngineTest 的签名漂移
- wechat env-version release -> develop to resolve 41030 invalid page rid error
### 新功能
- 新增 GuideFamilyAccessGuard 统一家庭访问授权判定
### 文档
- 新增规划师审核工作台实现计划并同步 PROJECT-OVERVIEW
## v1.0.1495 (2026-10-04)
### Bug 修复
- 修复后端编译错误 - 通知功能语法错误 + 日志变量遮蔽 + KeyPersonService 缺 logger
### 其他
- 2. PointsService: 局部变量 PointsLog log 遮蔽 SLF4J logger → 改名 plog
- 3. EnergyService: deductEnergy 引用不存在的 sourceType 变量 → 固定为 'manual'
- 4. KeyPersonService: 补充 @Slf4j(新增能量奖励日志需要)
- 修复后 mvn clean compile 通过(BUILD SUCCESS)
-
## v1.0.1494 (2026-10-04)
### Bug 修复
- 修复远程提交遗漏的编译错误(sourceType/log/log) [skip ci]
## v1.0.1494 (2026-10-04)
### Bug 修复
- 注册 report-detail 页缺失的 ReportBlocksRenderer 组件
### 其他
- 且文件顶部已有对应 import:
- import ReportBlocksRenderer from '../../components/report-blocks-renderer.vue'
- 但 components 选项里只注册了 FeedbackPopup,ReportBlocksRenderer 被漏掉。
- 小程序中未注册的组件不会渲染,健康报告详情页的 blocks 区始终空白。
- components: { FeedbackPopup }
- -> components: { ReportBlocksRenderer, FeedbackPopup }
- 组件文件存在(components/report-blocks-renderer.vue,name 与注册名一致),
- blocks 已在 data 中定义。
- Co-authored-by: Sisyphus
-
## v1.0.1493 (2026-10-04)
### Bug 修复
- 移除 pages/membership 下无对应 .vue 的失效页面注册
### 其他
- 但两个 .vue 文件均不存在,且全仓库无任何跳转引用这两条路径:
- - pages/membership/ 实际仅 benefits / index / pay / result / upgrade 五个文件
- - 两条注册与 pages/profile 下的同名注册重复
- 指向不存在文件的注册会触发小程序「Page has not been registered yet」,
- 并与 pages/profile 下的有效注册重复占用路径。移除后pages.json 恢复与实际文件一致。
- Co-authored-by: Sisyphus
-
- unpackage/ 已由既有 **/unpackage/ 覆盖。 [skip ci]
-
## v1.0.1492 (2026-10-04)
### 重构
- remove copy button from share modal, only share poster
## v1.0.1491 (2026-10-04)
### 新功能
- 章鱼图感恩记录增强 - 关键人新字段/手机号匹配/能量奖励/自动感恩记录
### 其他
- - first_meet_time 相识具体时间(date picker)
- - referrer_id 介绍人(从现有关键人下拉选择,可为空仅可选)
- - system_user_id 匹配到的系统用户ID(持久化匹配状态)
- 2. 手机号匹配系统用户:
- - 新增 POST /api/octopus/key-person/match-by-phone
- - 新增 POST /api/octopus/key-person/bind-system-user(持久化绑定)
- - 前端 octopus-add-effect.vue 增加手机号匹配输入框 + KP 匹配按钮 + '✓ 系统用户'徽标
- - 章鱼图弹窗关键人列表显示系统用户徽标
- 3. 行维度能量奖励:
- - 每填一条感恩记录 +1 点行维度能量,逢5条再+1(KeyPersonService.addEffect)
- 4. 自动感恩记录(CF 触发):
- - CfCommissionService 推荐人分润成功后自动创建 OctopusEffectRecord
- - 将买家自动建为邀请人关键人,CF金额作为成效金额
- 5. 数据库迁移342:octopus_key_person 添加 first_meet_time/referrer_id/system_user_id 列(schema.sql 同步)
- 验证:后端编译通过(仅剩既有 McpController 缺失 McpAuthService 的预存错误);前端语法 OK;API 去重审计 0 error
-
## v1.0.1490 (2026-10-04)
### 重构
- move share QR to floating button on profile page - remove invite share menu item from ProfileMenu - remove share.vue page and its registration - add floating QR code button in profile-main/profile.vue - add share poster modal with QR code, copy and share actions - add support for ref code on homepage onLoad
## v1.0.1489 (2026-10-04)
### 新功能
- 家庭能量/积分/CF值变更通知 + 消息历史中心
- add share referral code page to profile
### 其他
- - 新增消息历史页面支持筛选查看全部/能量/积分/CF值/系统
- - 后端 EnergyService/PointsService/PlatformPointsService 集成通知发送
- - 新增 energy_change/points_change/cf_change 通知模板种子数据
- - ProfileMenu 新增消息历史入口
-
- 早于 @getphonenumber 回调。原先 :disabled 只受 loading 约束,而 loading 要等
- 回调进函数才置 true —— 授权弹窗弹出前的几百毫秒内按钮仍可点,用户「以为没反应」
- 就连点,每次点击都真实消耗一次平台调用配额,最终触发微信限频:
- [渲染层错误] invoke getPhoneNumber too frequently
- JS 层的 if (!this.agreed) return 拦不住已发生的调用 —— 只能事后弹 toast。
- - 新增 tapLock,@tap 瞬间上锁,:disabled 改为 !agreed || loading || tapLock
- - 未勾选协议时按钮直接禁用,无效点击从源头不发生
- - getPhoneNumber 开头释放 tapLock,并移除原有 `if (this.loading) return`
- (loading 正是在该函数内才置 true,保留会把首个合法点击也拦掉)
- - 3 秒兜底解锁 + onUnload 清理定时器,避免异常路径下按钮永久锁死
- Co-authored-by: Sisyphus
-
- 槽位的 .center-btn(五维圆形按钮)及 openDimPanel/closeDimPanel,五维入口
- 因此无法触达,dim-fan-overlay 沦为死代码。
- - 恢复 .center-btn / .center-btn-inner 样式与 5 等分布局(左右各 2 Tab)
- - 恢复 openDimPanel / closeDimPanel 与 leftTabs / rightTabs computed
- - 补回 closeDimPanel:模板 @click 此前引用了已删除的方法,一旦弹窗触发即报错
- - 保留 984c16cef 的「统一角色入口」决策:不再有 teacher 专属 TabBar 分支
- - :key 维持 index。两个 v-for 编译为各自独立的 block wx:for($root.l0 /
- $root.l1),key 只需在列表内唯一;改用 item.pagePath 会因该属性实际挂在
- item.$orig 上而取不到值,导致 wx:key 重复,渲染层抛 FLOW_CREATE_NODE
- Co-authored-by: Sisyphus
-
### Bug 修复
- 手机号快捷登录按钮点击瞬间上锁,避免触发微信授权限频
- 恢复底部中间五维大按钮 + 五维横排弹窗
- 移除推荐人卡片,在用户信息栏显示推荐人,去掉家长标签
- McpToolRegistry toolSchema 参数 name 缺失导致 properties 为空 [skip ci]
## v1.0.1488 (2026-10-03)
### Bug 修复
- 补全提交遗漏的 McpAuthService(MCP 认证服务)[skip ci]
- 家庭挑战功能修复与待同意状态流转实现
- 阅读计时和知识测评适配所有登录用户
- HomeBannerManage 上传成功/失败提示 this.. 语法错误修复为 this.$message [skip ci]
### 新功能
- 增加 MCP (Model Context Protocol) 服务端实现
- 体验会员补充 referral_commission 权益 + 前端动态加载权益列表
- 完成阅读且获得CF值后从文章列表中隐藏
### 其他
- - 新增 MCP 协议 HTTP 端点 POST /api/mcp,实现 JSON-RPC 2.0 + Streamable HTTP 传输
- - 新增 13 个工具供 AI 助手调用:成员列表、今日任务、健康报告状态、AI 对话、活动/文章/商品搜索、用户概览、待办/待审批心愿、能量概览、家庭概览、联系人搜索
- - 认证方式:通过 application.yml 中 mcp.api-key 配置(默认空值,开发无感知),通过 Mcp-Api-Key header 传递
- - 支持已有 JWT/Interceptor:/api/mcp/** 加入 PUBLIC_PATHS 放行
- 新增/修改文件:
- - config/McpConfig.java (新)
- - service/mcp/McpAuthService.java (新)
- - controller/mcp/McpController.java (新)
- - controller/mcp/McpToolRegistry.java (新)
- - application.yml (增 mcp.api-key)
- - config/JwtInterceptor.java (加 /api/mcp/** 至公开路径)
-
- - MembershipService: BASIC 可用功能加入 referral_commission
- - schema.sql: membership_levels 种子数据同步
- - membership/index.vue: 动态加载权益功能列表(免费用户展示 BASIC 体验会员功能)
- - utils/api.js: 新增 getMembershipBenefits 接口封装
- - ContentRecommendService: 改用 selectCompletedArticleIdsByChild 查询已读文章(与文章列表过滤逻辑一致)
-
- - 挑战页点击已存在挑战跳转至活动首页(错误URL) → 改为打开详情弹窗
- - 首页家庭挑战待同意状态卡片无法点击 → 添加整卡@cardClick事件并传递challengeId
- - 编辑挑战任务无法修改参与成员 → 移除v-if=editMode限制,openEditModal预填充memberIds,submitForm编辑时也传participantMemberIds
- 功能新增:
- - 邀请参与人时任务状态为pending,设置回复时效(24/48/72h可选)
- - 超时未回复的pending成员自动置为rejected
- - 除发起人外全部拒绝 → 挑战状态变为not_launched(未成功发起)
- - pending挑战详情页展示截止时间/超时标签
- 后端:
- - schema.sql + DatabaseInitializer: 新增respond_deadline字段
- - FamilyChallenge实体: 新增respondDeadline属性
- - createChallenge: 支持respondDeadlineHours参数(默认48h)
- - updateChallenge: 支持pending状态编辑 + participantMemberIds更新(方案2A:active不可改)
- - respondChallenge: 惰性检查deadline超时
- - 新增expirePendingChallenge方法处理超时
- - getChallengeHistory纳入not_launched状态
- 前端:
- - challenge-manage.vue: 添加详情弹窗(含同意/拒绝/编辑/删除按钮),添加回复时效选择器(24/48/72h),auto-open通过URL参数?id=xxx
- - FamilyChallengeCard.vue: 整卡@click+('cardClick'),pending状态展示剩余天数/超时标签
- - index-home.vue + parent-index.vue: 绑定@cardClick → goChallengeManage(ch.id)
-
- - ArticleService.getPublicList: 新增 memberId 参数,权限过滤后移除已读完+得CF的文章
- - ArticleController.list: 读取 body.memberId(回退 currentMemberId)并传入 service
- - article-center/index.vue: 传 memberId 给列表接口,知识分享页隐藏已完成文章
- - mind-detail/articles.vue: 同上,心智知识页同步过滤
- - ArticleControllerTest: 适配 getPublicList 新增 memberId 参数
-
- - 匿名用户可浏览文章,读满时长后提示登录后完成知识测评并跳转登录
- - 答题接口 getActiveMemberId() 优先 currentChildId,否则用 userId
- - 移除 FREE 会员限制,所有登录用户均可参加文章知识测评
-
## v1.0.1487 (2026-10-02)
### Bug 修复
- 并发 401 改为排队重放,避免在途静默续期被自身打断
- 修复页面生命周期重复跳转导致的 routeDone 报错
### 其他
- onboarding/progress 等)。修复前 _handle401 在 _reloginLock 为真时直接调
- _clearAuthAndRedirect():第 1 个 401 刚启动 silentRelogin()(uni.login 异步),
- 第 2~N 个 401 立刻抹掉 token 并预约 1500ms 后 reLaunch 登录页,在途续期被打断,
- 表现为控制台只有 401、silentRelogin 无任何日志、用户被弹回登录页。
- - 并发 401 入 _pending401 队列,续期成功后统一重放;成败仅由发起续期的
- 那个 401 判断
- - 重放带 _noRelogin:重放仍 401 则直接失败,避免续期/重放 ping-pong 死循环
- - silentRelogin 无 openid 分支补 warn 日志(此前静默返回 null,无法定位)
- 测试:concurrent 401s queue behind one renewal、replayed request that still 401
- fails without triggering another renewal(后者覆盖死循环防护)。
- 已验证回归有效性:临时还原旧逻辑后新用例即以线上症状失败。
- Jest 178/0,audit 0 error。
-
- 页面在生命周期钩子中重复发起跳转,框架对已销毁的 webview 调用 routeDone。
- - splash/index: onShow 每次都新建 2s reLaunch 定时器且 onUnload 未清理;改为
- _hasLaunched 一次性守卫 + onUnload 清理定时器
- - profile-extra/{create-child,edit-child,children}: onShow 自动跳转与按钮
- goToFamilyMembers 各发一次 redirectTo,统一收敛到 redirectOnce() 守卫
- - rewards/rewards: teacher 分支 redirectTo 增加 _redirected 守卫,
- loadRewards() 仍保持每次 onShow 刷新
- 其余 5 处 onLoad redirectTo 为每实例仅执行一次的跳转桩,无并发风险,未改动。
- 全量注册页扫描:HIGH=0,无异步回调内的裸跳转。
-
- - 移除雷达图(canvas 卡片及相关方法)
- - 让首次使用的家长一眼看懂结果代表什么、接下来做什么
-
### 新功能
- 自检结果页新增「怎么看这个结果」引导卡
- 补全9.9体验会员功能 + 升级流程优化 - upgrade.vue: 添加体验会员(BASIC) compare 表列 + 基本功能描述 - upgrade.vue: 默认 selectedLevel 升级至下一级(FAMILY→PREMIUM) - upgrade.vue: 按钮显示 '续费' 而非 '下一步' 于 renew 当前等级
- 活动搜索 keyword 支持 + 产品搜索 API + 封面上传 + 小程序页面选择器
## v1.0.1486 (2026-10-01)
### 重构
- 组件下沉到页面级目录
### 其他
- components/ 子目录(action-detail / ai / discover / family / health /
- home-pages / member-detail / mind-detail / profile / promotion / shop /
- wealth),并同步更新引用方与 manifest.json。
- 目的:让组件跟随页面一起进入对应分包,避免被提升进主包,缩减主包体积。
- 组件解析已校验:所有模板标签均可通过显式 import 或同名 .vue 解析,
- 无悬空引用。audit-duplicate-api-calls.js 通过(0 error / 87 warning,
- 与重构前基线一致)。
-
## v1.0.1485 (2026-10-01)
### Bug 修复
- 废弃裸 openid 换 token 接口,静默续期改走 code2Session
### 其他
- 证明。而 openid 并非密钥:它会随登录响应返回、明文存于小程序本地 storage、并可能
- 经日志或截图泄露。任何拿到他人 openid 的人都能直接换取该账号的合法 token,等同
- 于完全冒充该账号。
- 按 AGENTS.md「废弃接口标记 410 Gone 并注释说明,不直接删除」,保留路由与注释并
- 返回 410,待线上旧版本小程序全部升级后再移除路由。UserService#autoLoginByOpenid
- 标记 @Deprecated。
- 替代路径:前端 uni.login() 取微信签发的一次性 code,服务端 code2Session 换
- openid。code 单次使用、5 分钟过期,且能证明调用方持有该微信设备,不可伪造,同样
- 零交互静默完成。本地 openid 仅用于判断「本设备曾登录过」,绝不作为凭证上送。
- 其他修复:
- - App.vue 冷启动即恢复登录态:原先在 splash 分支提前 return,导致普通冷启动(非
- 分享/小程序码进入)完全拿不到任何续期机会
- - 移除 develop 环境下对 verifyStoredToken/tryAutoLogin 的屏蔽,否则开发版无法验证
- 续期逻辑
- - 401 重放改传未拼接 query 的原始路径,避免 URL 出现 ?a=1&a=1 重复参数
- - 新增 _noRelogin:续期请求自身返回 401 时直接失败,防止递归续期/误清登录态
- - 启动窗口内(pages/login 为分包,首次访问前尚未下载注册)只清登录态不跳转,避免
- 「Page has not been registered yet」
- - JWT 有效期 1 天 -> 30 天,配合静默续期用户几乎无需手动重新登录
- 验证:前端 jest 176 项全部通过;后端 mvn clean compile(release 8)BUILD SUCCESS
-
## v1.0.1484 (2026-09-30)
### Bug 修复
- schema.sql guide_popup_step desc 保留字加反引号 [skip ci]
## v1.0.1484 (2026-09-30)
### Bug 修复
- 迁移334 desc 保留字报错 + 启动期定时任务竞态保护 [skip ci]
## v1.0.1484 (2026-09-30)
### 其他
- 从 Git 取消跟踪但保留本地文件,并新增 .gitignore 规则防止被再次添加
- - fix-hbuilderx-scoped.js: 硬编码 macOS 路径的死代码,Windows 环境下从不可用,无任何代码引用
- - 本 commit 不含任何页面源码改动:排查 14 个页面退化为 13 字节 Component({}) 的问题时,
- 已确认 pages.json 注册与全部 264 个页面源码均正常,根因是 unpackage/ 下残留的
- webpack 增量缓存(optimization.noEmitOnErrors=false 导致构建错误被静默吞掉),
- 清空 unpackage 后重新编译即全部恢复
- Co-Authored-By: Sisyphus (Anthropic)
-
## v1.0.1484 (2026-09-30)
### 新功能
- 首页广告栏配置功能 - 新增 home_banners 表及配套后端接口、管理端页面、小程序组件
## v1.0.1483 (2026-09-29)
### Bug 修复
- 修正 growth/profile/index.vue 悬空 import 路径
### 其他
- - format.js: '../../utils/format.js' -> '@/utils/format.js'(该页在 pages/growth/profile/ 深 3 层,原路径少一级 ../)
- - 验证:全项目 387 文件/660 条本地 import 悬空 0;348 个 .vue 结构扫描 0 问题
- Co-Authored-By: Sisyphus (Anthropic)
-
## v1.0.1482 (2026-09-29)
### Bug 修复
- 修复 team.vue 模板未闭合导致编译失败 + onLoad/onShow 双重调用
## v1.0.1481 (2026-09-29)
### 新功能
- 赠会员进度接口补充 remaining 字段与实付口径文案
### 其他
- - MembershipController 计算 remaining = max(0, threshold - accumulatedAmount)
- - cart/checkout 改读后端 remaining,消除前端重复业务计算
- - checkout 补充「仅原价实付订单计入」说明文案
- - API_REFERENCE 章节号 4.38→4.43 避免重复,补 remaining 字段与无家庭返回说明
-
## v1.0.1480 (2026-09-29)
### 新功能
- 购物车/结算页展示赠会员累计进度
### 其他
- 金额、阈值、已赠送状态
- - GiftMembershipProgress.threshold 标记 @TableField(exist = false),
- 避免非数据库列被拼进 SELECT 报 Unknown column
- - cart.vue / checkout.vue 增加进度条、已累/还差金额、达标提示
- - API_REFERENCE.md 补充新接口说明
-
### Bug 修复
- 修复月度曲线月份边界计算错误 + 阈值默认值改1980元
## v1.0.1479 (2026-09-28)
### 新功能
- 购物车功能完善 - CartItemDTO和CartService改造
## v1.0.1478 (2026-09-28)
### 新功能
- 补任务编排流程任务+保单上传AI解析+统一TabBar+服务中心页(TASK-SYS-248)
## v1.0.1477 (2026-09-28)
### 文档
- 注册零填写设计升级为全栈完成(v2.14)
- 注册零填写实施完成,PROJECT-OVERVIEW同步v2.14
- 注册零填写实施计划(8 Tasks)
### 新功能
- 注册零填写-添加成员手机号已注册时提示邀请加入
- 注册零填写-backfill白名单增加realName; 修复远程CommissionService编译缺陷(Calendar import/Long->int/getReferrerId)
- 注册零填写-profile-field-usage映射表补全(realName+各字段场景)
- 注册零填写-接受邀请已登录跳join-form替代user-edit
- 注册零填写-新增接受家庭邀请页join-form(真实姓名+家庭身份必填)
- 注册零填写-user-edit停用新用户流程仅保留编辑用途
- 注册零填写-登录成功直接进首页,家庭邀请改跳join-form
## v1.0.1476 (2026-09-28)
### 新功能
- 商品赠送会员-计算giftAmount并累加触发赠送
- 完整实现商品赠送会员功能
## v1.0.1475 (2026-09-28)
### 新功能
- 注册零填写设计规格(注册直接进首页+接收家庭邀请独立页+功能→信息字段映射表+添加成员手机号→邀请加入)
## v1.0.1474 (2026-09-27)
### 新功能
- 更新益生元相关文章,引用瓜尔豆胶vs菊粉新内容
- 新增瓜尔豆胶 vs 菊粉科普文章 - sales/guar-vs-inulin.html:新增益生元对比科普页,8维对比表、适用人群分析、组合方案、科学循证 - sales/index.html:更新分类计数、快速跳转链接、meta description - sales/AGENTS.md:目录结构和文章清单更新
## v1.0.1473 (2026-09-24)
### 新功能
- 商品赠送会员功能完整实现
## v1.0.1472 (2026-09-24)
### Bug 修复
- CommissionSummaryDTO 增加 totalEarnings 字段,修复 wealth 页累计收益显示为0
### 其他
- totalCommission,导致 undefined || 0 显示为 0。新增同值字段保持兼容。
-
## v1.0.1471 (2026-09-24)
### 新功能
- 价格显示到角、家庭成员上限命名、虚拟支付降级普通支付
## v1.0.1470 (2026-09-24)
### Bug 修复
- shortcut save 兼容前端 Boolean/Number 两种 locked/sortOrder 类型
## v1.0.1469 (2026-09-24)
### Bug 修复
- 修正编排画布任务模板列表接口调用(task-templates/list → task-templates)
## v1.0.1468 (2026-09-24)
### Bug 修复
- 迁移326 修正菜单表名/menu→sys_menu + 字段映射(parent_id/sort/visible)
## v1.0.1467 (2026-09-23)
### Bug 修复
- 未配置时保持默认6格,不按频度重排
- guide_popup引导弹窗表迁移333-336并入runSystemMigrations无条件执行 + getValue缓存null防护
- 迁移316-328移出seedGutFloraFingerprints早返回之后,getValue加unless保护防缓存null异常
### 其他
- 快捷区固定显示默认 6 个:任务/互动/天盘/成员/圈子/商城,
- 不再按使用频度混入其他应用。
-
## v1.0.1466 (2026-09-23)
### Bug 修复
- 孤儿页清理——补注册 12 个被引用但未注册页面 + 删除 5 个重复遗留页面
### 其他
- - pages/family: address-edit / manual-score-entry / mbti-entry / mbti-test / mbti-result / mbti-profile
- - pages/member-detail/member-detail(被 FamilyEnergyBar、parent-index 引用)
- - pages/profile/service-role-apply(新 6 角色版,被 ProfileMenu/vendor/butler/nutritionist/guide 5 处引用)
- - pages/match/street-match(新增子包)
- - pages/assessment/upload-report
- - pages/health/bodyfat-confirm
- - pages/growth/profile/index
- 删除(重复/遗留/依赖不存在 API):
- - pages/health/teacher-select.vue(重复 teacher-service)
- - pages/mind-extra/articles.vue(遗留,article-center 取代)
- - pages/activity/registrations.vue(依赖 adminActivity* API 前端不存在)
- - pages/teacher/appointments.vue(依赖 getGuideAppointments 前端不存在)
- - pages/member-detail/service-role-apply.vue(旧 3 角色版,被 profile 版取代)
- 其他:
- - api.js: 补 MBTI 4 个 + manual-score 1 个缺失导出(后端 Controller 均存在)
- - mind-detail/index.vue: 修复指向已删 /pages/mind/emotion-report 的悬挂导航
-
## v1.0.1465 (2026-09-23)
### Bug 修复
- cognitive-hall.vue goReport routes to /pages/wisdom-detail/cognitive-report (was referencing now-deleted /pages/wisdom/cognitive-report); deleted 13 duplicate orphan files in mind/ wisdom/ body/
## v1.0.1464 (2026-09-23)
### Bug 修复
- member-detail-sections navigation - wisdom-section routes to /pages/assessment/results; mind-section routes to /pages/action-detail/contact-detail (both previously pointed to non-existent pages)
- nav.js goDimension removed broken mind/body/wisdom mappings; login.vue tabBarPages removed non-existent /pages/mind/index /pages/body/index /pages/wisdom/index entries
- energy goDimension switch fallthrough - add break statements after each case so each dimension navigates to its correct page instead of always going to wealth
## v1.0.1463 (2026-09-23)
### 新功能
- beautify action-detail (行) page with enhanced visual design
### 其他
- - Enhanced shadows and depth with pseudo-elements
- - Improved border-radius to 24rpx throughout
- - Active state transforms (scale effects) on cards
- - Better typography hierarchy with letter-spacing
- - Enhanced dialog/popup styling with gradient headers
- - func-grid with improved spacing and shadow
- - Consistent green theme throughout following design system
-
## v1.0.1462 (2026-09-22)
### Bug 修复
- 修复 :key 表达式违规(editor.vue+food-query.vue 改用方法调用)
- 修复 editor.vue :key 表达式违规(改用方法调用)
## v1.0.1461 (2026-09-22)
### 文档
- 弹窗引导页配置化实现计划
## v1.0.1460 (2026-09-22)
### 文档
- 新增弹窗引导页配置化设计文档 + 更新项目全景索引
## v1.0.1459 (2026-09-22)
### Bug 修复
- 修复 tasks.vue switchTab 方法重复代码段导致的编译错误
- 隐藏 AI 询问按钮 - 临时移除 askAI 按钮
### 重构
- 移除 teacher-home 页面,rewards 重定向调整为成长规划师中心
### 新功能
- 报告反馈合并快速分析 - AI解答+结果可查
### 其他
- - feedback-popup 重写:疑问/建议双类型 + AI 解答内联展示 + 免费版每日1次提示
- - 新增 my-feedback 页:我的反馈记录列表(含 AI 解答状态)
- - 后端 report_feedback 表(迁移327) + submit/list 接口 + AiGateway 解答,失败落库未失败状态
- - 移除 reportQuickAnalyze 前端调用,API_REFERENCE 同步 4.37 节
-
## v1.0.1458 (2026-09-22)
### 新功能
- add emotion impact annotations to gut flora indicators on mind page
### 其他
- serotonin/5-HT → mood stability, dopamine → pleasure/motivation,
- GABA → relaxation/stress relief, tryptophan → sleep/mood,
- melatonin → sleep regulation, cortisol → stress level
- - Display '影响情绪稳定/影响愉悦·动力' etc. below each indicator name
- - Fix value display bug: backend uses indicatorValue, frontend was reading broken ind.value
- - Add indicatorBarWidth() and formatIndicatorValue() helper methods
- - Add CSS for new gut-indicator-impact label (pink #FF6B9D for mind page)
-
## v1.0.1457 (2026-09-22)
### 新功能
- 应用库自定义快捷方式+使用频度追踪
- add cognitive impact annotations to gut flora indicators on wisdom page
### 其他
- - 新建 pages/home/app-library 应用库配置页(已在首页区置灰+可配置区切换+恢复默认)
- - 16个应用入口页注入 reportAppEnter 埋点(任意入口进入计数)
- - pages.json 注册 home 分包
-
- - Display impact label below each indicator name in 肠胃与认知 section
- - Fix value display bug: backend uses indicatorValue, frontend was reading broken ind.value
- - Add indicatorBarWidth() and formatIndicatorValue() helper methods
- - Add CSS for new gut-indicator-impact label
-
## v1.0.1456 (2026-09-21)
### Bug 修复
- seedDiscountRulesMenu 的 count 改用 Integer
- 语音/图片打卡无需强制文字内容
### 其他
- 用 int 接收后再与 null 比较会触发 "不可比较的类型: int和" 编译错误。
- 改为 Integer 接收,null 判断即成立。
-
### 新功能
- 任务编排引擎与执行服务
## v1.0.1455 (2026-09-21)
### 文档
- 首页快捷方式自定义+应用库+频度追踪设计规格
## v1.0.1454 (2026-09-21)
### 新功能
- 首页引导配置化
- 食材推荐高频入口前置,合并页统一导航
### 其他
- (icon/title/desc/isIntro)、展示位置(首页/孩子端)、版本号(version)。
- 小程序 index-home/child-index 异步拉取配置并按版本比对决定是否展示,
- 无配置或接口失败时回退到硬编码默认步骤。
- 后端复用 sys_config 表(key=onboarding_guide_config),新增 AdminGuideConfigController
- (管理端 get/save)和 GuideConfigController(小程序 current)。
- DatabaseInitializer 迁移318预置默认配置。
-
- - 成长 Tab 饮食推荐 / 食材戒备卡均改跳合并页 food-query
- - 菌群报告页戒备入口改跳 food-query(带 reportId/memberId,进入默认戒备模式)
- - food-query.vue 重写:支持成员切换、排序选择、红绿适合/戒备配色、家庭总览聚合
-
## v1.0.1453 (2026-09-21)
### Bug 修复
- 修复结算页配送方式 change 处理器缺失方法头导致的编译错误
## v1.0.1452 (2026-09-20)
### Bug 修复
- 成员列表 isAdmin 按成员本人是否为创建者下发,成员视角限制二次切换
### 其他
- 修复创建者请求时所有成员 isAdmin 均为 true 的误判(影响创建者/管理员标识等展示)
- - 切换规则确认:所有登录用户均可切换为不可登录成员(不依赖 isAdmin),
- 不可登录成员视角(currentView=member)下隐藏全部切换入口,仅可退出切换
- - isFamilyAdmin(index-home/parent-index)适配新 isAdmin 语义:改为查自己
- (isSelf)是否为创建者,不再依赖列表首元素
-
## v1.0.1451 (2026-09-20)
### 新功能
- 限时折扣管理菜单种子 + Layout侧边栏入口(迁移326)
## v1.0.1450 (2026-09-20)
### 新功能
- 会员中心支持原价展示与编辑,后端补齐原价字段保存
## v1.0.1449 (2026-09-20)
### 新功能
- 报告上传统一指纹自动识别,注册 dan_a2 类型并补充采集管道
### 其他
- - HealthReportDraft 增加 memberId 归属成员字段;createDraft 支持 fileHash + memberId;新增 updateReportType
- - ReportCollectService 指纹识别分流 dan_a2 采集管道
- - 前端 report-upload.vue 去掉手动选择报告类型,统一上传由后台自动识别,需指定归属成员
-
### Bug 修复
- 修复认知能力测评页 import 路径错误(单文件页面 ../utils/api.js 而非 ../../)
## v1.0.1448 (2026-09-19)
### Bug 修复
- 恢复仅不可登录成员可切换视角(业务规则确认:可登录成员不允许切换)
### 其他
- - listMembers / updateParentMember 家长段 isSwitchable 恒 false(家长均为可登录用户)
- - switchToMember 恢复 openid 校验:可登录成员 throw '该成员可通过微信登录,不能切换为TA的身份';source='parent' 分支同样拒绝
- - toFamilyMemberVO 恢复原签名与 openid 判定(撤销 601bcf083 的加宽)
- - 前端 store 切换守卫文案与 ProfileHeader 注释同步恢复原语义
-
## v1.0.1447 (2026-09-19)
### 新功能
- add seven-dimension cognitive game assessment
### 其他
- - Frontend: language-test.vue new page, cognitive-hall.vue portal, pages.json registers both, cognitive-report.vue updated to 7 dimensions
-
## v1.0.1446 (2026-09-19)
### 新功能
- 允许切换到可登录成员视角,统一 isSwitchable 口径
### 其他
- - switchToMember 成员段返回 nickname 改用 resolveMemberNickname(可登录成员显示 users 表昵称)
- - 前端 store 切换守卫文案与 ProfileHeader 注释同步,移除'可通过微信登录不能切换'的旧提示
-
## v1.0.1445 (2026-09-19)
### Bug 修复
- 家庭成员管理页 isAdmin 类型比较修复,管理员删除/编辑按钮恢复显示
### 其他
- - 列表过滤自身成员同样按 String 归一(m.userId === userId 类型敏感)
-
## v1.0.1444 (2026-09-19)
### Bug 修复
- includeFamily 接口只返回 members 并统一成员显示名来源
### 其他
- - resolveMemberNickname 改为优先 users 表昵称:同一人同时存在于两表时,与 getVisibleMembers 家长段口径一致,避免「我的家庭」与成员管理页名称不一致
- - utils/api.js 同步更新接口注释
-
## v1.0.1443 (2026-09-19)
### Bug 修复
- 饮食推荐控制器 familyId 改 required=false,无家庭时返回 noFamily 而非抛 ServletRequestBindingException
## v1.0.1442 (2026-09-19)
### Bug 修复
- 菜单生成切换非推理模型(agnes-2.5-flash)并加max_tokens=3000,耗时从60-96s降至~13s;容器内存限制6g→8g解决ChromaDB启动OOM
## v1.0.1440 (2026-09-19)
### 新功能
- 家庭成员管理支持家长账号编辑/移除/切换及名称一致性修复
### 其他
- - updateMember 新增 updateParentMember 分支: 家长账号可编辑昵称/性别/生日/头像/手机号
- - 新增 resolveMemberNickname: family_members.nickname 为空时回退 users 表真实昵称
- - family-members.vue: 名称兜底链与我的家庭页一致, canEditMember 放开 parent 来源
- - FamilyMemberStrip.vue: canSwitch/canRemove 放开 source 限制
- - interaction-log.vue: .type-item 加 box-sizing 修复四列折行
-
## v1.0.1439 (2026-09-19)
### Bug 修复
- 迁移323-325移至runSystemMigrations,修复因早返回导致永不执行的happened_at/article_id问题
## v1.0.1438 (2026-09-19)
### 新功能
- 行页面整体美化
### 其他
- 2. 章鱼图添加入口从'记录成效'改为'感恩记录',并跳转至新建的维护列表页
- 3. 三个图添加入口按钮统一美化(渐变圆角 + 彩色阴影)
- 4. 章鱼图 Canvas 背景添加低透明度章鱼触手+头部装饰
- 5. 新增 octopus-effects-list.vue:感恩记录维护页(列表展示/删除/FAB 添加)
- 6. 修复 octopus-add-effect.vue 关键人'能添加但不能选'bug:补 onShow 刷新
- - 新增:pages/action-detail/octopus-effects-list.vue
- - 修改:OctopusDiagram.vue / pages.json / index.vue / octopus-add-effect.vue
-
## v1.0.1437 (2026-09-19)
### Bug 修复
- selectedMembers 规整为标准结构-兼容 memberPicker 仅返回 id/nickname 的情况
## v1.0.1436 (2026-09-19)
### 新功能
- 文章答题出题/提交/双奖励/认知雷达接口改造
- 文章答题弹窗适配新接口并展示CF值
- AiGateway 新增文章答题出题方法
- 注册文章答题出题路由与提示词
- 新增文章答题出题 graph
- 文章答题记录表迁移与实体字段调整
### 文档
- 更新文章答题功能实施状态
### Bug 修复
- 移除无 log4j 依赖的无效 @Log4j 注解,恢复编译
## v1.0.1435 (2026-09-19)
### 文档
- 文章阅读答题奖励+认知雷达设计规格与实现计划
## v1.0.1434 (2026-09-18)
### Bug 修复
- InviteController 登录态校验防御 null userId
- checkpointer 改用 AsyncSqliteSaver 修复 chat 端点异步调用报错
### 其他
- 但 checkpointer 原用同步 SqliteSaver,LangGraph 抛 'SqliteSaver does not support
- async methods',导致后端 AiGateway 收到 500 返回 null,前端提示 'AI 服务暂不可用'。
- - checkpointer.py: 改用 AsyncSqliteSaver,新增 init_checkpointer() 在 startup 事件
- 循环内初始化(AsyncSqliteSaver 绑定 get_running_loop,不能在临时 loop 创建)
- - main.py: startup 调用 await init_checkpointer()
- - requirements.txt / requirements_frozen.txt: 新增 aiosqlite 依赖
-
## v1.0.1433 (2026-09-17)
### Bug 修复
- 创建任务页输入框高度不足、截止时间选择器列数不匹配
## v1.0.1432 (2026-09-16)
### 新功能
- PortraitController 新增 /generate /regenerate 端点(AI 画像生成/重画入口)
- 用户画像 AI 生成/重画 - 接口扩展+前端入口+计划文档
- Java 侧画像 AI 生成网关 + AIService + AIBehaviorController
- Python 侧新增 portrait 生成/重画 FastAPI 路由
- Python 侧新增 portrait_generation_graph AI 生成/重画用户画像 LangGraph
### 其他
- - POST /api/user/portrait/regenerate: 参考旧画像重画,体现变化与延续
- - 复用 getPortrait 返回 renderedSnapshot,portraitPrompt 覆盖为本次结果
-
- - portrait-edit.vue 增加 AI 生成/重画按钮及加载态
- - api.js 新增 generatePortrait/regeneratePortrait 封装
- - 补充完整实施计划文档 docs/superpowers/plans/2026-09-13-user-portrait-ai-generation.md
-
## v1.0.1431 (2026-09-16)
### 新功能
- 新增 recommendation_rules 推荐规则表(迁移316-317)
- add product recommendation rule engine design and plan design: unified recommendation rule engine for 5 business rules plan: 6-phase implementation roadmap with milestones
## v1.0.1430 (2026-09-16)
### 文档
- 新增运营文案(个人号种草/便秘腹泻账号方案与竞品分析/小红书知识图谱/竞品搜索原始数据)
### 重构
- 报告详情快速分析合并到有疑问或建议入口
## v1.0.1429 (2026-09-16)
### Bug 修复
- 首页「逛一逛」引导条跳转任务中心而非知识中心
## v1.0.1428 (2026-09-16)
### 新功能
- 舌诊图片持久化 + parsePreview member_id nullable
- 修复舌诊照片上传分流 — 支持相册上传 + member_id可空 + confirm补填
## v1.0.1427 (2026-09-16)
### 新功能
- 舌诊照片上传走专用舌诊流程,自动识别舌头图片分流
## v1.0.1426 (2026-09-15)
### 新功能
- 根级/规划师/营养师/健康页全列排序 - 所有数据列补齐 sort-header(27 页)
- admin 列表页全列排序 - 给所有数据列补齐 sort-header(46 页)
### 其他
- Co-authored-by: Sisyphus
-
- Co-authored-by: Sisyphus
-
## v1.0.1425 (2026-09-15)
### Bug 修复
- SortUtil 加固 - 列名白名单防 SQL 注入 + clearOrderBy 清除已有 ORDER BY 防双排序语法错误
- ReportParser 3 个列表端点(types/imports/unknown-clusters)接入 sort 排序参数
### 其他
- Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)
- Co-authored-by: Sisyphus
-
## v1.0.1424 (2026-09-15)
### 新功能
- 运势算法接入真实八字/五行数据
### 其他
- 聚合 family_member_attributes.wuxingElements JSON,按成员数取平均,
- 替代原来的硬编码 {木:20, 火:20, 土:20, 金:20, 水:20}
- - FortuneServiceImpl.getChineseDate(): 用与 FamilyMemberAttributeService
- 一致的干支算法计算当日干支(2000-01-01 为甲子日参考),替换原硬编码 '甲子'
- - FortuneServiceImpl.generatePlaceholderFortune(): dominantElement 优先使用
- 家庭真实最强五行,而非哈希随机值
- - memberType 查询改为先查 child 再查 parent(与 TianpanService 一致)
- - lambda 捕获 validCount 改为 final memberCount 避免编译错误
-
## v1.0.1423 (2026-09-15)
### 文档
- 新增品牌资产目录(浠艾福 CareFamily 标志 SVG/PNG、标志设计文档 v1.0/v1.1、logo 预览页与生成脚本 gen_trace.py)
## v1.0.1422 (2026-09-15)
### Bug 修复
- 修复文章详情页 v-for 与 :key 属性粘连导致的模板编译失败(缺空格引号断裂)
## v1.0.1421 (2026-09-15)
### 新功能
- 家庭天盘新增周/月/周报接口并对接前端
### 其他
- - MindFortuneController 新增 3 个接口:
- - POST /api/mind/fortune/week — 本周7天运势
- - POST /api/mind/fortune/month — 本月运势
- - POST /api/mind/fortune/reports — 历史周报列表
- - FortuneService 新增 getFamilyFortuneBatch 批量查询
- 前端:
- - family-dashboard.vue 三个 load 方法从 mock 改为真实接口
- - api.js 新增 getWeekFortune/getMonthFortune/getFortuneReports
-
## v1.0.1420 (2026-09-15)
### 新功能
- 新增向量知识库维护功能
### 其他
- - Java: 新增 KnowledgeBaseVectorController,代理调用 LangGraph
- - 前端: 新增 VectorKnowledgeBase.vue 页面,包含统计卡片、文档列表(分页/筛选/搜索)、编辑弹窗、全量同步按钮
- - 菜单: 知识中心下新增「向量知识库」入口
- - 兼容新旧 ChromaDB metadata 字段(source / type)
-
## v1.0.1419 (2026-09-15)
### Bug 修复
- 身页面问卷评估接口失败不显示虚假分数
- 心页面家庭天盘占位数据清空假文案
### 其他
-
- 保留中性默认值(平/平静/65),避免接口失败时显示虚假运势建议
-
## v1.0.1418 (2026-09-15)
### Bug 修复
- 移除 recordRead 中重复的 minSeconds 变量声明
## v1.0.1417 (2026-09-15)
### Bug 修复
- meal_configs 唯一键改用生成列 config_date_eff 修复 COALESCE 索引语法
### 其他
- 迁移314 的 UNIQUE KEY uk_config (family_id, COALESCE(config_date, ...)) 每次启动都报语法错误,
- 导致唯一约束从未建立, 存在重复共餐配置风险。
- 改为 STORED 生成列 config_date_eff (COALESCE(config_date, '9999-12-31')) 承载相同语义,
- 唯一键建立在生成列上, 同时补齐缺失的 idx_config_date 索引。
-
## v1.0.1416 (2026-09-15)
### Bug 修复
- 设置菜单由 7 项缩减为 6 项,修正 actionSheet url 映射并移除失效的「设置密码」项
### 新功能
- 团队入口迁入成就网格并改页面标题为「我的团队」,团队树改为扁平渲染并补充等级人数统计
## v1.0.1415 (2026-09-15)
### Bug 修复
- 智/心页面硬编码/模拟数据清理
### 其他
- - family-dashboard.vue:
- - loadTodayFortune() 接入真实 /api/mind/fortune 接口
- - 移除 loadWeekFortuneData/loadMonthlyFortuneData/loadWeeklyReports 的随机 mock 生成(后端暂无对应接口,不再展示假数据)
- - 删除 generateMockReportContent 纯 mock 方法
-
## v1.0.1414 (2026-09-15)
### 其他
- 上传报告分类
## v1.0.1413 (2026-09-15)
### Bug 修复
- 修正知识库同步删除前缀与镜像版本, dan 知识库入库 MEDIUMTEXT
### 其他
- microbiome/dan_knowledge, 修复旧块永删不掉导致 ChromaDB 膨胀的问题
- - docker-compose: langgraph-svc 镜像 v8 -> v9 (重新构建, 含修正代码)
- - schema.sql: dan_knowledge_base.content TEXT -> MEDIUMTEXT (支持长知识内容)
- - 同步验证: article 543 / microbiome 25586 / dan_knowledge 1886 块全部入库
-
## v1.0.1412 (2026-09-15)
### 新功能
- 官网slogan改为「一个人的主动,全家人的健康」并扩展品牌主张文案
## v1.0.1411 (2026-09-15)
### Bug 修复
- 财富页邀请人数显示0 + 孩子页硬编码数据接口化
### 其他
- - 孩子页 badgeCount / taskPercent 接入真实接口(/api/badges/statistics/child、/api/daily-task/overview)
- - deltaPercent 硬编码 5.2 → 0,条件渲染避免显示假数据
- - 新增 loadChildData() 获取孩子视角真实数据
-
## v1.0.1410 (2026-09-15)
### 新功能
- 推荐人支持按家庭成员维度查询,切换视角时显示当前成员的推荐人
## v1.0.1409 (2026-09-15)
### 新功能
- 升级页档位按实际价格动态显示,无价格则隐藏
## v1.0.1408 (2026-09-15)
### Bug 修复
- recordRead 补设 articleId + 迁移回填老数据 NULL article_id
## v1.0.1407 (2026-09-15)
### Bug 修复
- 修复 ChromaDB 数据膨胀导致的 gunicorn OOM 循环
### 其他
- 282 万条 embedding 到内存 (13GB) 引发 OOM
- - retriever.initialize: 改为 upsert 语义(先删 type=article 旧索引再写入), 避免
- 每次 worker 启动重复追加累积
- - docker-compose: langgraph-svc 加 mem_limit 4g 硬限制, 防止异常膨胀吃满宿主机
- - requirements_frozen: numpy 降级 1.26.4 (2.5.x 移除 np.complex_, tensorflow 不兼容)
- 效果: embeddings 282万条(23.5GB) -> 2.6万条(286MB), worker 内存 13GB -> 1GB
-
## v1.0.1406 (2026-09-14)
### 重构
- 彻底删除 children 表及相关代码,迁移至 family_members
### 其他
- - 清理 AccountCleanupService/TaskStatsService/GrowthTaskService/DatabaseSyncService 死引用
- - DatabaseInitializer 清理 4 处 children 残留迁移,新增迁移320(幂等迁移数据 + DROP TABLE)
- - 修复 ChildBadgeMapper.selectFamilyRanking、GameRecordMapper.selectLeaderboard 两个查询 children 表的遗留 bug
- - 解决既存 git stash 冲突标记(迁移318 DOA 三表 + 系统提示词菜单 + 迁移319 health_plan 合并保留)
- - schema.sql 三处迁移编号 299→320,清理过时注释
- - 同步 AGENTS.md 更新 children 已删除口径
-
## v1.0.1405 (2026-09-13)
### Bug 修复
- 修复家庭成员列表 generationToLevel 负数字面量对象 key 导致的编译失败(-1/-2/-3 改字符串 key)
## v1.0.1404 (2026-09-13)
### Bug 修复
- 上传非PDF文件时采集链路提前拦截,避免PyPDF2 EOF错误
### 其他
- 在collect()入口和detect()增加魔数预检,非PDF直接标记失败。
-
## v1.0.1403 (2026-09-13)
### Bug 修复
- 修复 savePrompt 更新时 version 为 null 导致 NPE,从数据库读取现有版本号
### 新功能
- 系统提示词版本管理 - 修改前自动备份历史版本,支持查看版本列表与回滚
## v1.0.1402 (2026-09-13)
### Bug 修复
- 移除后端重复reportId解析 + 前端getMyMembership防抖
- 修复 AI 聊天页模板多根元素与成员详情页重复 :memberId 属性导致的编译失败
## v1.0.1401 (2026-09-13)
### Bug 修复
- healthcheck timeout 5s -> 10s(模型加载慢时避免误报 unhealthy)
## v1.0.1400 (2026-09-13)
### 样式
- report-confirm 补充报告快速分析浮层样式
## v1.0.1399 (2026-09-13)
### 新功能
- report-confirm 新增报告快速分析浮层(支持 draftId)
- 报告快速分析浮层扩展至报告确认页
- gut-flora-detail 新增报告快速分析浮层(支持 reportId/draftId)
## v1.0.1398 (2026-09-13)
### 新功能
- api.js reportQuickAnalyze 新增可选 draftId 参数
## v1.0.1397 (2026-09-13)
### 新功能
- AIChatController 支持 draftId 参数的快速分析
- FamilyContextService 新增 buildContextFromDraft 支持草稿上下文
- 全部提示词迁移到Java后端可配置
### Bug 修复
- 问卷超时调整 + 加载文案优化
- 恢复updateMember丢失的generationLevel/peerType透传,修正管理员权限判断
### 其他
- - 问卷加载提示改为"AI正在根据双方情况生成问卷,请稍候(约需1-2分钟)..."
- - 家庭成员添加页/列表页适配关系类型展示优化
-
- - FamilyMemberService.updateMember修正权限判断:管理员可编辑所有成员(含关联账号),普通用户仅可编辑不可登录成员
-
- - src/侧:问卷/舌诊prompt_template透传链路完整
- - DEFAULT_PROMPTS[analysis/recommend]升级为graph完整版,避免短版静默覆盖
- - health_plan_graph key分离为health_plan_graph/health_plan_graph_regenerate,与adapter.py解耦
- - 5处except回退分支加logger.warning可观测日志
- - 新增seed_system_prompts.sql:26条INSERT,含占位符契约注释
-
## v1.0.1396 (2026-09-13)
### 文档
- 修正实现计划(ObjectMapper注入、行号对齐、template插入位置)
### 新功能
- 对话 checkpointer 从 MemorySaver 改为 SQLite 持久化,重启不丢会话
## v1.0.1395 (2026-09-13)
### Bug 修复
- remove duplicate BigDecimal import
## v1.0.1394 (2026-09-13)
### 新功能
- 每日打卡用 Redis SETNX 幂等,防止重复提交重复发积分
### Bug 修复
- 修复 BeijingNutritionService 编译错误(恢复误删的 isWeekend 方法 + 补 BigDecimal import + 类闭合括号)
## v1.0.1393 (2026-09-13)
### 新功能
- 新增 RedisLockUtil 分布式锁,支付回调防并发重复处理
## v1.0.1392 (2026-09-13)
### 新功能
- 排行榜改用 Redis Sorted Set,游戏积分榜+推荐榜双写降级
## v1.0.1391 (2026-09-13)
### 新功能
- 启用 Spring Cache + RedisCacheManager,缓存系统配置与营养分类/品牌列表
- 商品类目分级与会员级别可见性(min_visible_level/level_order/shop_categories),管理端同步支持
### 文档
- 报告快速分析扩展实现计划
### 重构
- 多页面 v-for :key 统一改为索引绑定,删除冗余 getXxxKey 方法
### Bug 修复
- 菌群报告详情补齐未呈现数据(性别/年龄/AI解读)并统一手风琴统计口径
- 报告上传从聊天选取支持图片/文件二选一,避免 type=all 默认停在图片 tab
- 修复共餐配置页 script 结构损坏导致的编译失败(重复 onLoad、tipText 逃逸出 methods、括号错乱)
## v1.0.1390 (2026-09-13)
### 新功能
- 验证码改用 Redis 存储(TTL 5分钟,一次性),Redis 异常时回退数据库
- WechatService access_token 改用 Redis 缓存,多实例共享避免重复请求微信
## v1.0.1389 (2026-09-13)
### 新功能
- RateLimitInterceptor 改为 Redis 滑动窗口限流,支持多实例共享并保留内存降级
## v1.0.1388 (2026-09-13)
### 新功能
- 五维手动填分 + MBTI 完整体系(后端/小程序/管理端)
### 其他
- - MbtiController: MBTI 测评入口/提交/结果页
- - ManualDimensionScoreController: 家长手动填家庭成员五维分数(0-100)
- - MbtiProfileController: 16型人格画像管理
- - 数据库: mbti_questions / mbti_results / mbti_profiles 三表 + 种子数据
- - 小程序: mbti-entry / mbti-test / mbti-profile / mbti-result / manual-score-entry 5页
- - Web管理端: MbtiProfiles.vue + mbti.js API
- - 计划文档: docs/superpowers/plans/2026-09-10-manual-dimension-mbti-plan.md
-
## v1.0.1387 (2026-09-13)
### 新功能
- 小程序「我的」页设置菜单新增「我的画像」入口
### 其他
- - urls 映射添加 6 -> '/pages/profile/portrait-edit'
- - 用户路径: 我的 -> 设置 -> 我的画像 -> portrait-edit.vue
-
## v1.0.1386 (2026-09-13)
### Bug 修复
- 修复 DatabaseInitializer git 冲突标记残留及预存注释行 try{ bug,编译失败
## v1.0.1385 (2026-09-13)
### 新功能
- 菜单管理图标字段改为可视化图标选择器(282个Element图标+搜索+清除)
## v1.0.1384 (2026-09-13)
### 新功能
- 菌群报告详情页重构 - 去掉疾病风险手风琴和病原菌入口,修复报告日期显示,新增报告总结描述
## v1.0.1383 (2026-09-13)
### 文档
- add vendor order review spec, plan, and API reference entries
- 登记DOA接口+统一能登录/不能登录用户口径规范
### 重构
- clean up review logic (remove unused var, fix computed, add log separators)
### 新功能
- add vendor order review page and entry
- add vendorId to order detail response for permission check
- 新增doa-stage-detail详情页+实体memberUserId字段
- 新增doa-week-edit周计划复盘编辑页
- 新增doa-stage-create创建阶段页
- 新增doa-index家庭总览页
- 前端API封装+页面注册+挑战页双tab入口
- 新增DoaController(/api/doa 七接口)
- 新增DoaService(创建阶段/家庭总览/详情/周计划/周复盘)
- DoaStage新增memberUserId非表字段(为Task8代管详情准备)
- 新增DoaStage/DoaGoal/DoaWeek实体与Mapper
- 迁移314创建DOA三表(doa_stage/doa_goal/doa_week)
### Bug 修复
- 修复远程预存编译错误(BasicQuotaService/Collections import缺失)+ 迁移318花括号对齐
- 挑战页双tab改用doa-前缀类名避免类名冲突
- checkStageMemberPermission 空指针绕过同源修复
- 修复代管校验空指针绕过与 weekStart Locale 依赖
### 其他
- 原条件直接跳过校验,非家庭成员可为任何成员(含可登录成员)创建阶段。
- 收紧为 isSelf = selfMemberId != null && equals(memberId),null 视为非本人,
- 不可代管可登录成员。
- 2. weekStart():补 setFirstDayOfWeek(MONDAY),避免 en_US/C 等周日起始
- Locale 下 set(DAY_OF_WEEK, MONDAY) 使周日滚到下周,导致 week1 起点
- 晚于 stage.startDate。
-
## v1.0.1382 (2026-09-12)
### 新功能
- BASIC体验会员 (9.9元/月) 核心实现
### 其他
- - 后端: BasicQuotaService/ActivationQuotaService + 4业务入口配额扣减
- - 定时任务: BasicQuotaScheduledTasks(月度刷新+到期提醒)
- - Controller: BasicQuotaController + AdminBasicQuotaController
- - 前端: QuotaProgressBar/UpgradeGuideModal组件 + 会员页/升级页BASIC支持
- - AI对话页集成配额显示和软引导
-
- plan: BASIC体验会员实施计划(9.9元/月)
## v1.0.1381 (2026-09-12)
### Bug 修复
- 免费用户生成方案付费墙改为家庭会员或购买健康启航计划二选一,前端弹三选一引导购买后自动继续生成
## v1.0.1380 (2026-09-12)
### 新功能
- 章鱼图成效录入支持发生时间(happened_at)
## v1.0.1379 (2026-09-12)
### 新功能
- 家庭邀请分享卡片(暖灶风格,500x400px canvas 生成 imageUrl)
### 文档
- 更新PROJECT-OVERVIEW.md新增DOA规格与数据表
- add DOA family goal implementation plan (tasks 1-11)
- add DOA family goal design spec
## v1.0.1378 (2026-09-12)
### Bug 修复
- 审批加入时创建者切换家庭前置校验——原家庭仅一人免转让;多人时错误信息指向申请人并给转让指引
## v1.0.1377 (2026-09-12)
### 其他
- - 删除 pages.json 中 market/index 和 market/detail 注册
- - 删除 api.js 中死代码:getPublicPackages、purchasePackage、getPackageByShareCode
- - MarketController packages/* 和 share/* 接口标记 410 废弃
- (套餐购买已统一合并到组合商品 bundle 链路,走 /api/product/order/*)
- 保留 MarketController plans/* 接口(计划管理仍在使用)
-
## v1.0.1377 (2026-09-12)
### 文档
- 新增参考资料 ABC记录表
## v1.0.1376 (2026-09-11)
### 新功能
- 章鱼图录入成效时支持关联关键人(多选+角色标记)
## v1.0.1375 (2026-09-11)
### 新功能
- 章鱼图成效类型改为系统自动计算(金额大/频次高/新成交)
## v1.0.1374 (2026-09-11)
### Bug 修复
- 迁移278-313抽出独立方法 runSystemMigrations,避免被 sys_menu 空表条件静默跳过
### 其他
- 修复:将迁移278-313提取为独立方法 runSystemMigrations(),由 runMigrations() 无条件调用,确保每次启动都补齐生产库缺列。
- 生产库已手动 ALTER 补齐以下缺失列:
- - resource_items: connection_type, priority, value_score, last_interaction_at, interaction_count
- - health_report_drafts: file_hash
-
## v1.0.1373 (2026-09-11)
### 其他
- 登录异常报错问题
## v1.0.1372 (2026-09-11)
### Bug 修复
- 共餐配置保存改批量单次调用并修复双编码导致无法显示选中成员
### 其他
- - 前端 meal-config.vue saveConfig 单次批量调用、不再二次 stringify、成功后 navigateBack
- - DatabaseInitializer 迁移310 用 JSON_UNQUOTE 修复历史双编码 participant_member_ids
- - 补充 API_REFERENCE.md /config/save 批量格式文档
-
- 登录异常报错问题
## v1.0.1371 (2026-09-11)
### Bug 修复
- DietMealConfigService 参数空值校验防 NPE(date_type/meal_type/participant_member_ids 必填)
### 其他
- 菌群报告解析成功
## v1.0.1370 (2026-09-11)
### 新功能
- 系统提示词管理菜单
- 链路追踪 + LLM 可观测性(X-Request-ID trace_id + 日志落盘 + token 监控)
### 其他
- - Layout.vue 配置中心菜单新增「系统提示词」入口(perm: system:base)
-
- - cfc-langgraph RequestLogMiddleware 读取 trace_id 并写入日志
- - log_config.py 新增可选文件落盘(LOG_FILE 环境变量,默认关闭)
- - llm/client.py 新增 LLM 调用监控(prometheus: 调用次数/耗时/token 用量)
-
## v1.0.1369 (2026-09-11)
### Bug 修复
- 报告采集 prompt 缺少 agent 字段导致模型被覆盖
- 修复 ResourceService 中 PearlInteractionLogMapper 的 Bean 名冲突
### 其他
- 导致推理被全局 primary agent(Sisyphus/ultraworker)覆盖,
- 走 cursor-gateway/gpt-5.6 账户,返回 402 余额不足错误。
- 修复:在 prompt body 补加 body.put("agent", "report-collect"),
- 确保每次推理都锁定到 report-collect agent,使用 agnes-2.5-flash。
-
- 自动注入的 InteractionLogMapper Bean 默认名称 collision,
- 启动时报 BeanNotOfRequiredTypeException。
- 修复:将字段名改为 pearlInteractionLogMapper,消除名称冲突,
- 符合 AGENTS.md DI 规范(字段名与类型默认 Bean Name 一致)。
-
## v1.0.1368 (2026-09-11)
### 新功能
- 个人维度指标雷达图三层显示(实际值/人群位置/家庭占比)
### 其他
- - HealthDimensionController 新增 /api/dimension/radar-data 接口,一次性返回三组数据
- - DimensionScoreService/Impl 新增 calcPopulationScore/calcFamilyAverageScore 等 4 个方法
- - DatabaseInitializer 新增 seedMindActionWealthNorms(),向 health_norm_reference 插入 26 个心/行/富维度常模(4 年龄段 × 性别 all,P5-P95)
- - 前端:
- - RadarChart.vue 核心增强:新增 populationScores prop(蓝色虚线第三层)、familyScores(灰色虚线第二层)、图例区分
- - body-detail/wisdom-detail/energy/mind-detail/action-detail 5 个页面接入新接口,传递 scores/populationScores/familyScores
- - utils/api.js 新增 getRadarData 封装
- - 效果:身/智/心/行 四维雷达图同时显示个人实际值、同龄同性 P50 人群位置、家庭成员平均分
-
## v1.0.1367 (2026-09-11)
### 新功能
- 饮食记录重设计 - 周历、食材预警、营养汇总、高频食材、当日记录、补打支持
## v1.0.1366 (2026-09-11)
### Bug 修复
- gut-flora-foods-detail 成员 Tab 的 key 改为方法调用修复非 h5 警告
### 其他
- 新增 getMemberKey(item) 方法统一生成成员 key(:class 内联表达式不受限未改)
-
## v1.0.1365 (2026-09-11)
### 新功能
- 报告详情页新增快速分析浮层(免费版单次/付费版多轮)
- api.js 新增 reportQuickAnalyze 封装
- 新增报告快速分析端点 /api/ai/report/analyze(免费版Redis每日1次+付费版多轮)
- 引入 Redis 依赖与 RedisTemplate 配置(报告快速分析计数用)
### 其他
- - data quickAnalyze 状态对象(show/sending/messages/inputText/conversationId/usedToday)
- - computed quickQuestions(3 个预设快捷问题)
- - methods: openQuickAnalyze/closeQuickAnalyze/sendQuickQuestion/sendQuickAnalyze
- - 模板:悬浮 FAB 按钮(仅 view 模式)+ 浮层(消息区/chips/输入框)
- - 样式:fixed 定位 FAB + overlay + panel,flexbox 布局
-
- - report/analyze:会员级别检查 + 免费版 Redis INCR 每日1次(fail-open)+ 免费版移除 conversationId 锁死多轮
- - 调 aiService.sendMessage(含记忆层+镜像),出参 stripTaskMarkers
-
## v1.0.1364 (2026-09-11)
### Bug 修复
- meal-config 删除通配符选择器修复 WXSS 编译错误
### 其他
- 其余元素已显式声明 box-sizing,删通配符无副作用
-
## v1.0.1363 (2026-09-11)
### 新功能
- 饮食推荐食材查询页重写 - 成员切换、状态标签、分数进度条、变化箭头、趋势图、按推荐值排序
## v1.0.1362 (2026-09-11)
### Bug 修复
- 修复行维度页模板多根 + 章鱼图/珍珠图页面注册错位,恢复编译
### 其他
- (提交 2b1fcdc96 引入的重复 /view 导致多根报错)
- - pages.json 将 pearl-add-resource/octopus-add-effect/octopus-add-key-person
- 从 pages/assessment 分包移到正确位置 pages/action-detail 分包
- (文件实际位于 action-detail,误注册导致 main.js 编译找不到页面)
-
## v1.0.1361 (2026-09-10)
### Bug 修复
- 移除 pages/growth 分包残留的 growth-emotion-checkin 路由注册(页面已并入 mind-detail 情绪打卡),修复 HBuilderX 编译找不到文件
## v1.0.1360 (2026-09-10)
### Bug 修复
- 移除不可行的会员订单归属校验 + 修复前端 add-effect 页面(toggleType/导入)
## v1.0.1359 (2026-09-10)
### 新功能
- 关键人拓展章鱼图全链路上线(替换旧章鱼图 + 成效/关键人/分析/拓展 + 三层Canvas)
- 提醒列表页 + PearlController 5 接口补齐 + pages.json 路由修正
- 登记资源页 25 类连接类型分组选择器
- PearlDiagram 两层同心圆重构 + 父组件 overdueMap 集成
- 前端 API 方法与提醒页路由注册
- 每日定时生成互动提醒任务
- 新增 3 实体 + 3 Mapper(octopus_effect_record/octopus_key_person/octopus_effect_key_person)
- ResourceService 25组聚合/互动/提醒/价值分
- ResourceItem 实体新增社会连接字段
- ConnectionType 枚举与互动/提醒实体 Mapper
### 文档
- API_REFERENCE 同步珍珠图 25 类与新增接口
### 其他
- db: 迁移305-307 关键人拓展 3 表(octopus_effect_record/octopus_key_person/octopus_effect_key_person)
## v1.0.1358 (2026-09-10)
### 新功能
- 复用现有 TongueDiagnosisAgent 路由,补全视觉 LLM 实现走 LangGraph
### 其他
- - src/graphs/tongue: load_image 支持 data URL
- - src/app.py: 移除与 app/api/tongue.py 冲突的死路由
- - AiGateway.analyzeTongue: 改 multipart 表单提交(file+user_id),解包 data
- - AIService/TongueDiagnosisService: 传字节而非 base64
- - compose: image v7
-
## v1.0.1357 (2026-09-10)
### 文档
- 报告快速分析实现计划 + PROJECT-OVERVIEW 索引更新
### 其他
- - 复用 aiService.sendMessage(含记忆层+镜像),LangGraph 零改动
- - 免费版 Redis INCR 每日 1 次 fail-open,付费版多轮
-
## v1.0.1355 (2026-09-10)
### 新功能
- 舌诊迁移至 LangGraph(glm-5 视觉模型),废弃 Dify 舌诊
### 其他
- - llm/client: 新增 get_vision_llm() 复用网关 key,默认 glm-5(实测 MiniMax 后端 DNS 不可达)
- - AiGateway: 新增 analyzeTongue(imageBase64) 调 LangGraph 舌诊
- - AIService.sendTongueDiagnosis: 改走 AiGateway,删除 Dify 调用
- - TongueDiagnosisService: parsePreview 读取 MultipartFile 转 base64
- - application.yml: 删除 dify.tongue-api-key 配置
-
## v1.0.1354 (2026-09-10)
### Bug 修复
- 戒备食材链路修复——caution-detail key 编译报错 + gut-flora 按报告主体传参
### 其他
- 微信小程序模板编译器不支持,改为 getMemberKey(item) 方法调用
- - gut-flora-detail 戒备食材数量与戒备页跳转按报告 subjectId 传参,
- 修复家长账号查询不到孩子推荐指数的问题
-
## v1.0.1353 (2026-09-10)
### Bug 修复
- 修复 tianpan 首页 loading-overlay 选择器丢失导致的 CSS 编译失败
### 其他
- - 补回选择器,恢复正常编译(SyntaxError Unexpected })
-
## v1.0.1352 (2026-09-10)
### Bug 修复
- 修复健康报告解析入库失败(draftId 84 两个根因)
### 其他
- 防止 opencode 回退解析产出的超长 status 导致 'Data too long for column status'
- - DatabaseInitializer 迁移307: health_gut_flora.bacteria_name 改为可空(LLM 偶发缺菌种名触发 NOT NULL 冲突)
- - DatabaseInitializer 迁移308: health_indicators.status 放宽到 VARCHAR(100)
- - schema.sql 同步 bacteria_name NULL + status VARCHAR(100)
-
## v1.0.1351 (2026-09-10)
### Bug 修复
- 健康页推荐阅读增加更多入口,修复字段风险详情溢出
### 其他
- - parent-index 推荐阅读区块增加'更多'入口
- - gut-flora-risks-detail 增加 content-inner 包裹修复 scroll-view 内容溢出
- - growth-main 饮食推荐入口回归 /pages/diet/index
-
- - 成长页心情记录入口跳转至 mind-detail 情绪打卡页并透传 memberId
- - 情绪打卡页新增近期心情历史列表(/api/mind/checkin/list 前5条),兼容 Plutchik 与成长页情绪词表
- - 修复提交成功后跳转死链 /pages/mind/emotion-trend 与趋势页返回死链 /pages/mind/emotion-checkin
- - 情绪趋势页支持 memberId 参数兜底与成长页情绪词表标签映射
-
### 新功能
- 情绪打卡合并成长页心情记录,支持近期心情历史查看
## v1.0.1350 (2026-09-10)
### Bug 修复
- 修复 ContactHelpLogService Map.of() Java9+ 语法及 Comparator 类型推断问题
## v1.0.1349 (2026-09-09)
### 新功能
- 关系三图——章鱼图(谁帮过我)/珍珠图(我有什么)/能力图(谁会什么) 全链路上线
## v1.0.1348 (2026-09-09)
### Bug 修复
- 情绪识别 DeepFace 置信度归一化 + 权重预置
### 其他
- - detector_backend 用 opencv(内置 Haar Cascade,无需额外 mediapipe 依赖)
- - Dockerfile: 预置 DeepFace FER 权重到镜像(避开 GitHub 下载限速)
- - docker-compose.yml: pin 镜像 v3
- - 新增 .dockerignore 加速构建
-
## v1.0.1347 (2026-09-09)
### Bug 修复
- 修复 onLoad/onShow 生命周期双发 guard 变量名对齐规范
- 修复删除推荐码后 logout 方法合并错误
### 新功能
- 新建 team-tree 页面 + pages.json 注册 + API_REFERENCE 更新
- 新增我的推荐人卡片与团队层级入口
- 新增 getTeamConsumption、getMyReferrer、getTeamTree
- 删除富页面推荐码横条
- 新增 /api/commission/team/consumption、/my-referrer、/team/tree 接口
- 实现 getTeamTree 树形扁平数据(含 memberConsumption、myCfEarnedFromMember)
### 其他
- - 注册 team-tree 到 pages/profile root
- - 更新 API_REFERENCE.md 新增 4.21 扩展说明及 3 个新接口
- - 修复 wealth/index.vue 删除推荐码后 logout 语法错误
-
### 重构
- getTeamList memberConsumption 对齐 getTeamTree 使用 Integer 类型
## v1.0.1346 (2026-09-09)
### 新功能
- 新用户引导页强化 - 从痛点切入强调'看见和了解'
- 报告编辑页支持成员选择/重选/解绑 + 删除重算维度
### 其他
- - OnboardingGuide: 家长端新增第1步痛点开场'你真的了解孩子的状态吗?',子步骤强调'五维沙盘看见全家''小任务大改变''心愿墙看得见努力';孩子端新增'你的每一点成长,都被看见'
- - 首页Hero/登录页: slogan统一改为痛点钩子'孩子的情绪、习惯、能力,你真的看见了吗?',sub-slogan强化痛点叙事'情绪低落没察觉、习惯变化没注意、能力短板没发现——问题爆发才着急。先看见,先了解,不等问题发生。'
-
- - /report/edit 移除 subjectId 必填,支持 null(解绑)/ 0(不变)/ 正值(绑定或切换)
- - updateReportFromPayload 按 subjectId 语义重算维度分:
- * 正值:绑定或切换成员,重算新成员 + 原成员(含食材推荐)
- * null:解绑,重算原成员(移除报告影响)
- * <=0:保持不变(子页面局部编辑不触碰绑定)
- - deleteReport 删除后重算原绑定成员的维度分(含食材推荐)
- - 新增 FoodRecommendService 注入(@Lazy 打破循环依赖)
- 前端:
- - report-detail.vue saveEdit 未选成员传 null(解绑),面板加「不绑定成员」选项
- - gut-flora-detail.vue draft 模式补成员选择面板 + doConfirm 传 subjectId
- 行为:未选成员 → 报告不纳入任何用户/家庭维度计算;选中 → 纳入并重算;删除 → 重算
-
## v1.0.1345 (2026-09-09)
### 新功能
- 知识中心改名知识分享 + 卡片显示阅读次数总时长
- 实现 getMyReferrer 获取我的直推人信息
- 实现 getTeamConsumption 团队消费统计(按 referral_tree level 聚合,fulfillStatus=completed)
- 注入 ProductOrderMapper、ReferralTreeMapper 到 CommissionService
### 其他
- - article-center/index.vue: 导航栏标题/注册标题改为知识分享,卡片 footer 新增 ⏱ 总时长
- - discover/index.vue: 区块标题改为知识分享,推荐卡片 meta 新增 👁 阅读次数 + ⏱ 总时长
- - 新增 formatDuration() 前端格式化:<60分钟显示分钟,≥1小时显示小时+分钟
-
### Bug 修复
- 修复预存编译错误(HealthReportDraft 重复字段、DatabaseInitializer 缺 logger)
## v1.0.1344 (2026-09-09)
### 文档
- 团队层级树实现计划(13 Tasks,后4+前7)
## v1.0.1343 (2026-09-09)
### 新功能
- 菌群详情页标签增加分类数量统计,列表人群/检出/丰度/正常单行展示
### 其他
- Co-authored-by: Sisyphus
-
## v1.0.1342 (2026-09-09)
### 文档
- 修正团队层级设计 - 订单状态字段/树响应字段/UI实现
- 团队层级树与推荐关系可视化设计文档
### 其他
- - 树响应 nodes[] 新增 memberConsumption、myCfEarnedFromMember 字段
- - 根节点('我')不包含在 nodes 数组中
- - 更新 UI 实现代码片段(无根节点、flex column-reverse、L1为起点)
- - audit 通过(0 error)
-
- - 更新 PROJECT-OVERVIEW.md 记录
- - 涵盖:富页面去推荐码、我的页面推荐人卡片+团队入口、树形页面从下往上生长、团队消费额分级统计(默认3级可配)、直推成员消费/CF明细、4个后端接口新增/扩展
- - audit 通过(0 error)
-
## v1.0.1341 (2026-09-09)
### Bug 修复
- 首页分享卡片去掉不存在的 imageUrl 避免空白
### 其他
- 改为不指定 imageUrl,微信自动截取当前页面截图作缩略图。
-
## v1.0.1340 (2026-09-09)
### 文档
- 同步天盘接口文档
### Bug 修复
- recalibrate接口补充权限检查
- 上传报告支持聊天记录选取图片,移除从文件夹选取入口
- family-members 移除多余括号修复编译错误
### 新功能
- 新增家庭传统命理页面+入口卡片
- 天盘首页canvas节点标注生肖灵数+成员弹窗增强
- 扩展天盘服务支持五维基础分展示和重算接口
- 新增五维基础分计算服务FamilyMemberDimensionBaseScoreService
- 新增五维基础分表及迁移305
## v1.0.1339 (2026-09-09)
### 新功能
- 新增5个认知测试页面 + 自测提交API
### 其他
- - CognitiveService.submitSelfTestScore() 支持无档案时自动建表
- - 前端新增 5 个认知测试页:逻辑推理/感知觉/记忆力/空间思维/加工速度
- - 训练中心入口新增 5 个测试卡片
- - 健康页面 tab 顺序调整为:健康/认知/财富/社会性/心理
-
## v1.0.1338 (2026-09-09)
### 文档
- 更新天盘设计——五维基础分改为落库+重算接口
- 家庭天盘传统文化+五维基础分设计文档
## v1.0.1337 (2026-09-09)
### 新功能
- 情绪识别接入 DeepFace (LangGraph + 后端接口)
### 其他
- - cfc-backend: 新增 EmotionRecognitionController(文件上传/URL 两种方式)
- - cfc-backend: AiGateway 新增 analyzeEmotion / analyzeEmotionByUrl 方法
- - docs: 新增舌诊情绪识别技术选型报告,更新 API_REFERENCE.md
-
## v1.0.1336 (2026-09-08)
### 新功能
- 报告解析迁移到 LangGraph - 新增 LangGraphReportParseService
### 其他
- - ReportCollectService: 已知类型解析改走 langgraph_script,空回退 opencode
- - ReportFingerprintService: 脚本缺失日志降为 debug
-
## v1.0.1335 (2026-09-08)
### Bug 修复
- 统一文章/商品/活动页海报入口按钮为「生成海报」胶囊样式
### 新功能
- ReportCollectService 大改 + 五维维度白名单校验(DimensionCodes)
### 其他
- - DimensionCodes: 五维维度码白名单校验,防止 JSON 路径注入导致 500
- - ActivityService/ProductService/ArticleService/TaskService/ContentRecommendService: 相关适配改动
-
## v1.0.1334 (2026-09-08)
### 新功能
- 互动记录支持照片/视频/音频附件上传及多项优化
### 其他
- 后端 interaction_logs 加 photo_urls/video_url/audio_url 列,迁移303)
- - 互动记录:修复保存失败(fromMemberId==toMemberId 后端拒绝,改为
- 当前用户发起/toMemberId=选定成员,互动对象列表过滤本人)
- - 家庭成员页:列表隐藏当前登录用户(filteredMembers)
- - 成员选择进入记录互动时隐藏互动对象选择器,默认选定的成员
- - relation-detail 互动记录入口修正路由(family→action-detail)
- - 报告上传:合并 DAN 与健康报告上传页,指纹自动识别类型,取消手动
- 选择报告类型/维度,新增从聊天/拍照/文件夹三种上传方式
- - 推荐人绑定:bindReferralIfNotSelf 防自邀打扰(缓存本人邀请码,
- 邀请码==本人时静默跳过),登录/分享/新用户流程接入
- - 家庭邀请冷启动识别 token/familyInviteCode 参数,放行落地页
- - user-edit 新用户流程:家庭身份选择置顶、提交申请/跳过悬浮底部
- - invite/join 先初始化登录状态再校验家庭邀请
- - 录入页面 & 深层分享参数兜底 & 会员升级等文案微调
-
- - user-edit.vue: 3个提交按钮加 :disabled,saveUserInfo/submitTeacherInfo/joinFamilyAction 加 early-return 守卫
- - audit script: 守卫白名单补充 _pageShown,修复 report-list.vue 误报 ERROR
-
- 登录异常报错问题
### Bug 修复
- LoginResultDTO 补 phone 字段修复编译错误
- 登录/资料页防重复提交 + 修复重复调用审计
## v1.0.1333 (2026-09-08)
### Bug 修复
- 家庭成员管理页过滤本人、展示与当前用户的关系标签
### 其他
- - family-members.vue: 成员数/空态改用 filteredMembers
- - UserService.getVisibleMembers: 查询 viewerFm,为 parent 源成员补算 relativeLabel(丈夫/妻子/儿子/女儿等)
-
## v1.0.1332 (2026-09-08)
### 新功能
- 成长页跳转带 memberId + 食材页分类/排序/溢出修复
- 健康报告食材推荐接口支持 memberId 查询孩子视角
### 其他
- Co-authored-by: Sisyphus
-
- Co-authored-by: Sisyphus
-
## v1.0.1331 (2026-09-08)
### 文档
- 新增运营方略(1+N矩阵)与同类账号探索报告 - 品牌定位与竞品依据
- 新增官方号搜索收割内容第一批 - 5篇用户视角SEO布局
- 发布指南新增内容创作第一原则 - 讲用户想听的(4信号源+主语转换法+自检清单)
## v1.0.1330 (2026-09-08)
### 新功能
- 成员被邀请走时原家庭付费会员权益合并到邀请人家庭
## v1.0.1329 (2026-09-08)
### Bug 修复
- AiGateway 超时分离 - connect 快速失败 + read 覆盖 LLM 推理耗时
- 会员升级自动发JOIN券/用户列表倒序/商品券支付可选/兑换提醒移至支付
### 其他
- - application.yml: 新增 python.read-timeout-ms: 120000
- - 前端 api.js: request 支持 timeout 选项(不混入 query),问卷接口加 130s 超时
-
- grantFamilyJoinCoupons 发放 JOIN 赠券(幂等防重), 记录发券结果
- - AdminController /users: 无 sort 参数时默认 orderByDesc(createdAt) 倒序
- - CouponService.toCouponVO: 补 productId 字段, 前端可按商品匹配券
- - checkout.vue: ownedCoupons/availableCoupons 对 PRODUCT 券按当前商品
- productId 匹配(原来一刀切过滤非 ALL 券导致商品券选不到); 新增
- affordableExchangeCoupons - CF 不足时不再显示兑换提醒
- - product-detail.vue: 移除商品页积分兑换优惠券区块, 兑换提醒移至支付时
- (无对应券+CF 足够才提示)
-
## v1.0.1328 (2026-09-07)
### Bug 修复
- 修复已绑定推荐人重复提示与新用户信息补充页问题(boundInviteCode防重+新用户流程隐藏浠宝福宝选择+家庭身份选择回显)
## v1.0.1327 (2026-09-07)
### 新功能
- 登录后首页接入新手引导(成长礼包进度条+首次登录3步引导浮层+添加成员引导)
### 其他
- 登录异常报错问题
## v1.0.1326 (2026-09-07)
### Bug 修复
- 修复邀请码解析失败导致分享推荐人无法绑定
### 其他
- 前端 7 处却按对象取 res.data.referralCode/code,恒为空导致分享 path
- 拼不出 inviteCode,新用户打开无码注册后无推荐人。新增
- extractReferralCode 统一解析(兼容字符串/对象),并修正 share-mixin
- 默认分享 path 死路径 /pages/index/index -> /pages/index-home/index。
-
- 菌群检测问题
## v1.0.1325 (2026-09-07)
### Bug 修复
- 管理端接口权限加固 - 用户/孩子/任务模板端点校验平台角色
### 其他
- - /users /users/create /users/{id} 等 13 个管理端点加 @RequestAttribute role/roles 校验
- - 防止匿名或 C 端角色越权调用管理接口
-
## v1.0.1324 (2026-09-07)
### Bug 修复
- 分享文章/小程序冷热启动捕获邀请码,新用户注册登录后自动绑定推荐人
## v1.0.1323 (2026-09-06)
### Bug 修复
- 首次注册完善信息页移除会员提醒并放开全部补充字段
### 其他
- - 会员锁定提示加 !isNewUserFlow 条件,注册流程不再推送开通会员
- - 移除所在地区对新用户的必填星号,所有字段保持可选
-
## v1.0.1322 (2026-09-06)
### Bug 修复
- FamilyMember.memberType 标记 @TableField(exist=false) 不落库
### 其他
- - DatabaseInitializer: 补充生产库对账记录(member_type 手工 ALTER 说明)
-
## v1.0.1321 (2026-09-06)
### Bug 修复
- 未登录点分享内容不再弹登录失效 + 新用户注册后绑定推荐人
### 其他
- - user-edit 新用户流程保存后消费 inviteCode 绑定推荐人,修复注册后推荐人丢失
-
## v1.0.1320 (2026-09-06)
### 文档
- 新增小红书运营方略 - 人群拓展与内容策略 + 运营知识库(营销逻辑/品牌升级/科学种草实战)
## v1.0.1319 (2026-09-06)
### 新功能
- 登录前首页重构 - 首屏呈现平台定位/价值主张/三步上手引导
## v1.0.1318 (2026-09-06)
### Bug 修复
- 操作日志列表排序生效 + 搜索框高度调整
### 其他
- - UserOperationLogService.queryLogs 加 sortSpecs 参数,显式 SortUtil.applySort
- (不再依赖 SortContext ThreadLocal 时序,确保排序可靠生效)
- - OperationLogs.vue 搜索表单加 size=small 统一高度
-
## v1.0.1317 (2026-09-06)
### Bug 修复
- 落地页按格式分流校验邀请令牌与短邀请码
### 其他
- 按格式分流:32位hex走 validateInvitation,否则走 validateFamilyCode。
-
## v1.0.1316 (2026-09-06)
### 新功能
- 首页 Next Best Action 引导条 - 解决首屏'不知道该干啥'
## v1.0.1315 (2026-09-06)
### 文档
- 补充家庭成员切换/回收箱接口文档
### 新功能
- 新增主动退出与回收箱回收接口
- 邀请切换改为单成员切换语义并接入非微信限制
- 实现成员切换/退出/回收核心逻辑
- 新增收回家庭人口券方法支持成员被踢出时回收
- 迁移300为family_members添加status列支持回收箱
## v1.0.1314 (2026-09-05)
### 新功能
- onboarding读取侧完整迁移——getProgress读tasks表+claim自动发放+模板种子数据
## v1.0.1313 (2026-09-05)
### Bug 修复
- TaskService 注入 UserService 加 @Lazy 打破循环依赖
- OnboardingService 注入 TaskService 加 @Lazy 打破循环依赖(userService↔onboardingService↔taskService)
- 修正 DatabaseInitializer 候选记录第3条迁移编号引用(298→299)
- 清理 DatabaseInitializer 排查残留注释(PROBE)与迁移294重复日志行
### 其他
- 导致应用启动失败 APPLICATION FAILED TO START,加 @Lazy 打破
-
## v1.0.1312 (2026-09-05)
### Bug 修复
- 清理 DatabaseInitializer 迁移299残留垃圾行 + npm 构建版本更新
## v1.0.1311 (2026-09-05)
### 新功能
- 商品详情页迁移至 discover-detail + 微信订单中心商品明细
### 其他
- - 后端: PaymentService 支持微信订单中心商品明细(goods_detail)展示
- - 活动/会员/商品订单支付描述优化(用真实名称替代固定文案)
-
## v1.0.1310 (2026-09-05)
### 文档
- 用户身份标识 userId/memberId 使用指南(rebase 带入的远程文档)
- 统一任务系统实施完成,更新项目全景索引
### 新功能
- 前端统一任务中心——tasks.vue聚合进度型任务,daily-tasks.vue重定向
- FamilyContextService AI任务查询改查tasks表(source_type=ai)
- 一次性迁移——growth_task DAILY定义迁入admin_task_templates(旧表只读保留)
- 新人引导复用任务模板+落tasks表(source_type=onboarding,顺序链前置解锁)
- GrowthTask DAILY/AI任务迁入TaskService(tasks表统一执行),旧Service委托+废弃
- CreateTaskDTO支持source_type/is_daily_progress/target_value透传
- admin_task_templates新增onboarding_sequence字段(新人引导复用任务模板)
- tasks表新增is_daily_progress/target_value字段,source_type扩展(统一任务系统)
## v1.0.1309 (2026-09-05)
### 文档
- 添加测评案例与参考资料 PDF(吴一墨/廖云泽菌群检测、方案)
### 其他
- - manifest.json: 移除 lazyCodeLoading 配置
-
-
- - join.vue: onLoad 解析邀请 token(含 scene invite= 前缀),被邀请用户跳转 user-edit 完善家庭身份并提交加入申请
- - login.vue: 登录完成后检测待处理家庭邀请,直接跳转 user-edit 续接流程
- 后端:
- - CommissionService: 新增 bindReferrerByUserId 幂等绑定方法(已有推荐人忽略),抽取 applyReferralSideEffects 复用副作用
- - FamilyJoinRequestService: 审批通过后绑定平台推荐人为邀请人的上级推荐人(仅 token 路径、已有推荐人不动、邀请人无推荐人则跳过、失败不阻断审批)
- - 新增 FamilyJoinRequestServiceReferrerBindTest 5 用例覆盖需求规则
-
- - CircleService/CirclePostService: 待审核成员查询、成员审批逻辑
- - circles.vue: 圈子列表页完善(待审核审批交互)
- - circle-feed.vue: 圈子动态页增强
- - parent-index.vue: 圈子排名改为先取圈子列表再查排名
- - api.js: 新增 getPendingCircleMembers / approveCircleMember
- - docs/analysis: 圈子功能分析文档
-
### Bug 修复
- 切 Tab 返回时同步 currentRole 登录态
- 家庭邀请分享流程修复 + 平台推荐人绑定规则(需求)
### 新功能
- 圈子成员待审核审批 + 圈子排名接入首页(前后端)
## v1.0.1308 (2026-09-05)
### Bug 修复
- Critical 修复——isSwitchable 设置 + ProfileHeader 走新切换流程
- 退出切换密码校验失败时补充用户提示
### 重构
- switchToChildWithCheck 文案与注释对齐 member 语义
- children 表下线,ChildMapper 标注废弃,AccountCleanup 迁移至 family_members
- role=child 判断清理(历史兼容注释 + InviteCard role 改为 parent)
- FamilyMemberStrip 切换入口仅对不可登录成员开放
- 切换视图统一 member 语义,退出切换接入密码校验
### 新功能
- 存量 role=child 账号强制迁移为成员模型(迁移298)
- 切换入口确认提示 + 退出切换统一密码校验
- 恢复退出切换接口 switch-back-verify(带密码校验)
- 新增切换保护密码设置接口 set-switch-password
- phoneLogin 复用无 openid 的预留成员用户并补 openid
- addMember 同步创建无 openid 的 user 记录(不可登录成员)
- switchToMember 仅允许切换不可登录成员
- FamilyMemberVO 新增 isSwitchable 字段
- FamilyMember 新增 memberType 成员类型字段与可切换判定
### 文档
- executorType/creatorType/memberType 业务字段注释统一为『非登录用户』语义
- 成员模型重构——清理孩子/child角色定义实现计划
## v1.0.1307 (2026-09-05)
### Bug 修复
- 修复选择规划师页调用available-guides缺少packageId报错
### 其他
- packageId 缺失报错,且返回字段 guideId/nickname 与页面模板 id/name 不匹配)。
- 改用后端已有的 /api/health-plan/available-teachers 接口,返回 id/name/isBound
- 等字段,与页面模板完全匹配。api.js 新增 getAvailableTeachers(familyId) 封装。
- Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)
- Co-authored-by: Sisyphus
-
## v1.0.1306 (2026-09-05)
### Bug 修复
- 最终审查6项修复——废弃旧方法/修正迁移296/补充状态机测试/更新注释
- cancelPlan级联清理方案未完成任务
- purchasePackage补幂等复用并生成任务,消除active空壳
### 测试
- 统一任务生成器幂等/生成/级联清理单元测试
### 新功能
- 迁移296/297修正存量健康/认知训练方案任务source_type
- 认知训练方案任务补设source_type=training_plan可溯源
- 健康方案任务source_type改为health_plan,消除与plan的ID域冲突
- 状态机收敛generated→active,confirm改走applyAndActivate
- 新增统一任务生成器generateTasksFromTemplate
### 重构
- activate改用统一任务生成器,删除重复模板生成逻辑
## v1.0.1305 (2026-09-04)
### 新功能
- 迁移295补齐task_plan_instances审核/确认/激活列
- 后台全部列表页支持点击列头排序
### 其他
- - SortInterceptor 从缓存 body 读 sort 写入 SortContext(原只读 URL query,
- 前端发 body 永远读不到),激活代码库 307 处已有 SortUtil.applySort 无参调用
- 前端:
- - SortMixin 补 onSortToggle 方法(修复 20 个文件 onSortToggle is not a function)
- - SortMixin 新增 reloadAfterSort,兼容 loadList/loadData/loadTasks/loadPlans
- 四种加载函数名,解决点击表头不刷新问题
- - 107 个列表页接入 SortMixin(admin/teacher/nutritionist/root 各模块)
- - 3 个位置参数 API 封装(guidePackage/guideTask/teacherMessage)加可选 sort 参数
- 跳过:配置页/详情页/组件/仪表盘/树形表等非列表页(23 个)
-
## v1.0.1304 (2026-09-04)
### 文档
- 方案转任务统一设计 + 实现计划(source_type拆分 + 统一生成器 + 状态机收敛)
### 其他
- - CommissionService/UserService: 用户不存在场景补充 warn 日志
- - DatabaseInitializer: 生产库对账候选风险记录(注释)
- - AGENTS.md: 环境区分说明(测试库 vs 生产库)
- - cfc-web: 版本号 1.0.1300 + CHANGELOG 更新
-
## v1.0.1303 (2026-09-04)
### 文档
- 新增 xhs-daily-report 计划文档
- 新增小红书便秘腹泻帐号起号方案与计划
- 新增小红书内容 D33/D34 与发布检查清单
### 新功能
- 日报采集点赞/收藏/分享字段,统计未回复评论数
- 长任务进度上报与无限等待,bot 接入进度回调
### Bug 修复
- 修复家长成员VO缺少memberId/name字段,导致生成方案页面无法正确识别家长成员
## v1.0.1302 (2026-09-04)
### 文档
- 统一任务系统实现计划(9任务:数据层/服务层/迁移/前端)
## v1.0.1301 (2026-09-04)
### 文档
- 统一任务系统设计规格(多套任务体系合并为单表 tasks)
### 新功能
- 调研页多成员 tab 页签样式 + 进入问卷时初始化当前成员表单
## v1.0.1300 (2026-09-04)
### 新功能
- 美化方案制定页 - 目标输入框加大、下一步按钮缩小、空成员跳转成员管理页
## v1.0.1298 (2026-09-04)
### 新功能
- 合并重复的文章列表页为知识中心,统一入口到 article-center
### 其他
- 废弃 mind-extra/articles 和 mind-detail/articles,6 处入口重定向并删除注册
-
## v1.0.1297 (2026-09-04)
### Bug 修复
- moveSortOrder 排序方向与 getFeatured 对齐(published_at DESC)
### 新功能
- 文章推荐排序——精选顺序可定义(sort_order + 上移/下移)
### 其他
- - getFeatured/getPublicList 改按 sort_order ASC 排序
- - toggleFeatured 设为精选时追加队尾,不抢占既有顺序
- - 新增 POST /api/admin/articles/move 上移/下移 + 全局重编号
- - 管理端 ArticleManage 精选行显示上移/下移 + 序号徽章
-
## v1.0.1296 (2026-09-04)
### 文档
- 文章推荐排序实现计划
### 新功能
- 后台家庭成员改为仅区分管理员/成员
### 其他
- - AdminController.getFamilyMembers 返回统一 members 列表(合并 family_members + users 家长),保留 parents/children 兼容字段
- - 新增 setMemberAdminRole 接口:设/撤管理员,users 来源成员自动建记录持久化角色
- - Families.vue 查看成员弹窗合并为单一列表 + 角色标签/操作按钮
-
## v1.0.1295 (2026-09-04)
### 文档
- 文章推荐排序实现计划
### Bug 修复
- 修复4个后台列表页点击排序失效,清理2个页面的死SortMixin代码
### 其他
- 导致 AdminRecipe、AdminCoupon、AdminAssessmentOrder、AdminTask、
- AdminSubscription 五个接口排序不生效。
- 后端修复(5个文件):
- - AdminRecipeController / AdminCouponController / AdminSubscriptionController:
- 从@RequestBody读sortSpecs,调用SortUtil.applySort(wrapper, sortSpecs, null)
- - AdminRecipeController / RecipeService:新增listByMealType(mealType, sortSpecs)重载,
- 原无参方法保留供MealRecommendService调用
- - AdminController.getTasks() / getAssessmentOrderList():同模式替换SortUtil.applySort(wrapper)
- - CouponService:新增listAll(sortSpecs)重载,使用QueryWrapper+SortUtil
- 前端修复(2个文件):
- - AssessmentOrders.vue / SubscriptionManagement.vue:
- 移除死SortMixin(无排序触发逻辑),清理sort-header/sort-tag CSS
-
## v1.0.1294 (2026-09-04)
### Bug 修复
- 移除 HealthReport 重复的 reportFormat 字段,修复 Lombok 编译失败
- 登录页改浅色背景深色文字单页布局,首页移除主动健康闭环与五维能量区块
### 文档
- 文章推荐排序(精选顺序可定义)设计规格
## v1.0.1293 (2026-09-04)
### 文档
- 文章推荐排序(精选顺序可定义)设计规格
### Bug 修复
- 迁移290修正(6表21列) + 迁移292 health_status 补 member_id 成员级归档
- 迁移290修正 - 实体补@TableField列名映射 + schema同步 + auto bump
## v1.0.1289 (2026-09-04)
### Bug 修复
- 迁移290 批量补齐12表33列真实缺列(防Unknown column)+ auto bump
### 样式
- 右上角个人/全家切换按钮更醒目(渐变胶囊+阴影+放大)
### 其他
- redesign: 重构登录前首页与登录页,引入主动健康闭环×五维框架
### 新功能
- 个人/全家切换移到控件右上角,替换原徽章文案
- 首页能量沙盘个人/全家切换始终显示,成员<2时点全家弹提示引导添加
### 文档
- 添加 log-to-human 团队级技能文档
## v1.0.1288 (2026-09-04)
### 样式
- 右上角个人/全家切换按钮更醒目(渐变胶囊+阴影+放大)
## v1.0.1287 (2026-09-04)
### 其他
- redesign: 重构登录前首页与登录页,引入主动健康闭环×五维框架
## v1.0.1286 (2026-09-03)
### 新功能
- 个人/全家切换移到控件右上角,替换原徽章文案
### 文档
- 添加 log-to-human 团队级技能文档
## v1.0.1285 (2026-09-03)
### 新功能
- 首页能量沙盘个人/全家切换始终显示,成员<2时点全家弹提示引导添加
## v1.0.1284 (2026-09-03)
### Bug 修复
- health_reports 补 report_format 列(迁移289)+ auto bump
## v1.0.1284 (2026-09-03)
### Bug 修复
- health_reports 补 report_format 列(迁移289)+ auto bump
## v1.0.1284 (2026-09-03)
### 新功能
- 健康报告收集功能 - ReportCollectService + draft 草稿 + 小程序上报页面
- 能量沙盘个人/全家切换移到右上角,单成员时弹提示引导添加
- extend search to title+summary+tags; fix compile errors in FoodRecommendService and HealthReportController
- 家庭运营增加优惠券列表和使用记录(后端/family-coupons + /family-coupon-usage,前端弹窗展示)
- 管理端商品编辑页新增可选赠品配置区块
- 优化谷禾菌群报告详情页展示与饮食推荐
- 小程序商品详情赠品选择区 + checkout 透传 giftItemIds
- createMultiItem 单商品路径支持赠品(抽取 processGifts 共享方法)
- handlePaymentSuccess 追加赠品发放逻辑
- create 流程注入赠品校验与 product_order_gifts 记录
- 新增管理端赠品配置接口(/api/admin/product-gift/save + /list)
- 新增 ProductGiftService(配置保存/查询逻辑)
- 新增三张赠品表实体类与Mapper接口
- 建三张赠品相关表迁移(product_gift_configs/items/order_gifts)
### 其他
- 知识中心-知识分类,修复视频上传异常问题
- 知识中心-知识分类,修复视频上传异常问题
- 知识中心-知识分类,修复视频上传异常问题
- 修复视频上传异常问题
- 优化修复
- - FoodRecommendService: add missing import java.math.BigDecimal
- - HealthReportController: remove undefined 'parsed' reference in buildPayloadFromLgData
-
- 切换开关仅依赖 hasMultipleMembers(有 2+ 成员时显示),
- familyUnlocked 仍作为 prop 保留,不影响 GateLock 门禁展示。
-
- - child-index: loadData 中 getChildren() 改为 getFamilyMemberList({visibleOnly:true}) 一次调用,同步设置 familyMembersVisible,跳过后续 loadFamilyMembersVisible()
- - parent-index: dashboard 成功路径同步设置 familyMembersVisible + _membersVisibleSet,降级路径合并 getFamilyMemberList+getChildren 为单次调用并派生 children
-
- - 首页 index-home: checkMemberStatus 移入 loggedInInitDone 守卫,onLoad/onShow 用 _onLoadFired 防首次双发
- - 首页 index-home: loadFamilyFeed 循环前过滤孩子成员,避免对家长发起 getTaskHistory
- - 全页面: energy/hierarchy/share/survey-history/parent-index/join/notification/onboarding/address/cart/checkout/shop-index/daily-tasks/service-tasks/teacher-home/wealth-cf 统一 _onLoadFired 模式
- - parent-index: dashboard 降级路径同步设置 familyMembersVisible,避免重复请求 getFamilyMemberList
- - utils/api.js: 全局请求去重(同 URL+method+body 3 秒窗口复用 Promise),401 重放跳过去重
- - utils/api.js: getChildren/getUserBadges/getGrowthReport/getTaskHistoryByCategory 等别名统一委托规范函数
- - 新增 scripts/audit-duplicate-api-calls.js CI 审计脚本(0 error)
- - AGENTS.md: 新增规则 1-4 + 4a/4b/4c(生命周期双发、同接口单封装、N+1 过滤、getChildren 废弃)
-
- - 疾病风险内联展示并颜色区分(注意/低风险),修复详情页与风险页统计不一致
- - 疾病风险页知识库入口改为 ? 图标放疾病名之前
- - 菌群详情页修复分类 tab 过滤(中文 category 映射英文 key)
- - 菌群风险分组(肥胖/抑郁/过敏等)改手风琴展示
- - 饮食推荐页:去重标题、按推荐值分级背景色(<-30红/>30绿/每10一档)、去蛋白能量固定信息、增加食材搜索、复用知识库弹窗
- - 成长页饮食推荐复用食材页,不传 reportId 取最新建议
-
- feat(product-gift): 商品详情附带当前用户等级赠品配置
- - 涵盖:数据库迁移、实体/Mapper、ProductGiftService、管理端接口、
- 下单校验+写记录、支付成功发放、商品详情装配、小程序前端、管理端前端
-
- - 3张新表:product_gift_configs / product_gift_items / product_order_gifts
- - 与现有 product_gift_rules(赠送会员)完全独立
- - 赠品类型:商品 或 CF值,按会员等级配置,用户可多选
- - 下单时写入订单赠品记录(fulfilled=0),支付成功后发放
- - 更新 PROJECT-OVERVIEW.md §4.2 电商与供应体系,记录新设计稿
-
### Bug 修复
- 补全 reportFormat 字段到 Payload DTO 和 HealthReport 实体,修复编译失败
- self-check-result :key 移除字符串拼接表达式 'ma'+i,避免非 h5 平台编译警告
- 移除能量沙盘切换开关的 familyUnlocked 门禁条件
- 根治 family/member/list 与 tasks/history 重复调用——index-home loadFamilyFeed 改为只查第一个孩子、parent-index/child-index 合并 getChildren+loadFamilyMembersVisible 为单次 getFamilyMemberList
- 根治重复API调用——首页合并 family/member/list 与 membership/my、全页面 onLoad/onShow 防双发 + 请求层 3 秒去重 + getChildren 废弃委托
- processGifts 下单时复核赠品商品库存
- 修复 toggleGift 后多余逗号语法错误
- class 改用 _selected 状态字段,移除方法调用
### 重构
- 清理遗留项(未用注入/静默catch/Set去重/UUID导入/参数校验/Javadoc)
### 文档
- 商品可选赠品功能实施计划
- 商品可选赠品功能设计稿(product-gift-selection-design)
## v1.0.1283 (2026-09-02)
### 新功能
- 饮食推荐幂等保存(同日同mealType更新)+ 前端配套 + bump
### Bug 修复
- 移除 ProductEdit.vue 中误粘贴的 AI 规划 Markdown 文本,修复构建失败
- 健康报告列表删除按钮改为左滑出现,修复未注册组件导致按钮显示在行上方
## v1.0.1282 (2026-09-02)
### Bug 修复
- 饮食推荐查询改为 selectList 避免 NPE + auto bump version
- 会员中心等级列表/统计/升级记录N+1三处修复
- 废弃旧套餐支付链路,修复组合商品 bundle 部分扣减 bug
- 修复最终审查问题(幂等唯一索引兜底 + NPE判空 + delete参数校验 + 前端路由/时间格式)
- CfCommissionServiceTest 改调生产 CfReferralService.matchRateTier(注入 mock Mapper,消除 test-the-copy 反模式)
- PromotionTierService.refreshRate 无匹配时重置 tier 为 R0
- 修复 CfCommissionService.getSysBps 空 catch 违反规格
- 修复推荐树 level 倒置 + referral_tree 唯一键改为 (parent_id, child_id) 联合
### 其他
- (listMembershipLevels/getMembershipStats 走拦截器返回已解包 {code,data},
- 误按裸 axios 判定 res.data.code) 导致等级配置列表永远为空、统计卡不更新
- - StatsController: freeCount 查询 .or() 位置错误导致恒为 0,改为嵌套 and(w->eq.or.isNull)
- - upgrade-records 后端批量填充 userName,消除前端逐条调 user/search 的 N+1 请求
- - 删除测试中引用不存在方法 getAdvicesForLowScores 的死桩,恢复 testCompile
-
- - PackagePurchaseController.createOrder/getOrder:返回 410 标记废弃
- 保留 getPackagePrice/getAvailableGuides(测评链路 VirtualPayService 复用)
- - 删除 PackagePaymentService + PackagePaymentServiceInterface(已无调用方)
- - ProductOrderService.handlePaymentSuccess 加 @Transactional,
- 修复 bundle 多子商品库存扣减部分失败残留(原子性保障)
- - PackagePaymentController /wechat params 空格路径 bug 修复
- - 清理前端废弃 API createPackageOrder 及对应测试用例
-
- 优化修复
- 优化修复
- 优化修复
### 文档
- API 文档补充 CF 分佣/转让/阶梯配置接口 + 单元测试
- 修正任务1 schema.sql 同步为两张新表(cf_rate_tier/cf_transfer_record)
### 新功能
- 小程序推广中心切换到 CF 分佣接口(团队规模/比例/流水/钱包)
- 管理端 CF 返佣阶梯配置接口(list/save/delete)
- CF 成员间转让接口(同家庭校验 + 双账本 + 流水)
- 用户查询接口(团队规模/返佣比例/CF汇总/流水)
- 全部订单结算迁移到 CfCommissionService(统一 CF 值分佣),废弃旧佣金调用
- 推荐绑定物化推荐树 + 团队规模全层级统计 + 阶梯比例刷新(替代 promotion_tier_config)
- CfCommissionService 统一分佣核心(双返/只返推荐人/同家庭上溯/阶梯比例)
- CfReferralService 推荐树物化 + 全层级团队规模 + 阶梯比例匹配
- PlatformPointsService.earn 增加 (ref_type, ref_id) 幂等去重
- 新增 cf_rate_tier 与 cf_transfer_record 实体/Mapper
- 数据库迁移:cf_rate_tier/cf_transfer_record 建表 + promotion_tier 精简 + coupon 加 family_id
## v1.0.1281 (2026-09-02)
### 其他
- 内容: 评论通知相关收尾 - opencode_client 过滤纯空白回复; listener 转发消息到 opencode 会话生成回复; vbs 注释编码修正
- 内容: 评论通知改造: 评论数增量检测+读取新评论+opencode生成针对性回复建议, 无新增不推送; 修复 xhs_feishu/opencode_client import 时劫持 stdout 导致输出关闭
- 内容: 评论通知按笔记生成针对性回复建议
- 内容: 评论通知加回复建议 + 三张整页截图 + 字段顺序修正
- 内容: 三张整页截图(首页/笔记/账号概览) + 评论通知改简洁文本 + 字段顺序修正
- 内容: 修正笔记列表字段顺序(阅读/评论/点赞/收藏/分享)
- 内容: 添加评论检测脚本和启动脚本
- 内容: 修复数据采集双周期 + 截图上传 + 近30日tab点击等待
- 内容: 修复数据采集近7日/近30日双周期 + 截图上传修复
- 内容: 添加机器人启动脚本(bat/vbs)供计划任务调用
- 内容: 修复机器人reply接口多余receive_id_type参数
- 内容: 小红书数据机器人双向监听(飞书长连接WebSocket版)
- 内容: 修复日报脚本运营文案目录路径计算
- 内容: 小红书创作者中心每日日报采集与飞书推送模块
## v1.0.1280 (2026-09-02)
### 文档
- 饮食页面换一批/生成食谱端到端修复实现计划
### 其他
- Co-authored-by: Sisyphus
-
- Co-authored-by: Sisyphus
-
- Co-authored-by: Sisyphus
-
- Co-authored-by: Sisyphus
-
### 新功能
- 前端生成食谱/换一批取值修复 + 添加食材弹窗搜索
- 生成食谱使用所选食材+共餐参与者,归一化LangGraph菜单
- 换一批seed生效 + 食材搜索接口
### Bug 修复
- 修复知识库弹窗长文本超出右边界
## v1.0.1279 (2026-09-02)
### 新功能
- 美化菌群报告疾病风险页并补充疾病知识库,手风琴标题去掉有效保留异常/共
## v1.0.1278 (2026-09-01)
### 文档
- 修正实现计划占位(getEffectivePpoint 签名/转让幂等键/家庭券库独立Controller)
## v1.0.1277 (2026-09-01)
### Bug 修复
- 迁移编号 269 与 sleep_record 冲突,重编号为 278
### 新功能
- 优惠券全链路改为家庭维度
### 其他
- - 6条发放路径全部改为发到家庭(Admin/JOIN/POPULATION/PERIODIC/EXCHANGE/CF_EXCHANGE)
- - CouponService 内部改为读 family_coupon,保留 API 路径与响应字段不变
- - AdminCouponController 新增 /issue-family,/issue 改为 familyIds
- - 家庭管理页新增发放优惠券弹窗,批量发放与发券记录改为家庭维度
-
## v1.0.1276 (2026-09-01)
### Bug 修复
- 修复 P1-2 自检上下文在 Pydantic 层被静默丢弃
### 文档
- CF值分佣体系重构实现计划(cfclub分支)
### 其他
- - T1 数据库迁移(cf_rate_tier/cf_transfer_record 建表 + promotion_tier 精简 + coupon family_id)
- - T2 新实体/Mapper(CfRateTier / CfTransferRecord)
- - T3 PlatformPointsService.earn 幂等补丁
- - T4 CfReferralService(推荐树物化 + 全层级团队规模 + 阶梯匹配)
- - T5 CfCommissionService 统一分佣核心
- - T6 推荐绑定物化 + PromotionTier 精简 + refreshRate 刷等级比例
- - T7 7 处订单结算迁移点切换
- - T8 旧佣金体系废弃标记
- - T9 用户查询接口(团队规模/比例/流水/汇总)
- - T10 CF 转让接口
- - T11 优惠券绑定家庭 + 家庭券库
- - T12 管理端阶梯配置接口
- - T13 小程序推广中心前端改造
- - T14 测试与 API 文档更新
-
## v1.0.1275 (2026-09-01)
### Bug 修复
- 会员中心补listMembershipLevels导入 - 修复等级配置表加载ReferenceError, 等级标签补PREMIUM
- 用户管理会员等级下拉改为后台动态加载5级, 优惠券管理等级选项同步动态化
## v1.0.1274 (2026-09-01)
### 新功能
- CF值分佣体系重构设计(cfclub分支)
### 其他
- 设计范围:
- - 全部订单统一走 CF 值分佣,废弃旧佣金体系
- - 纯团队规模阶梯分佣(cf_rate_tier 动态可配置)
- - 同家庭互推上溯到第一个非同家庭引荐人
- - 返佣返个人 CF 钱包,兑换优惠券挂家庭
- - 新增 CfCommissionService + cf_transfer_record
- - 用户可查团队规模与返佣比例
- - 订单迁移点 7 处 + 前端改造方案
-
## v1.0.1273 (2026-09-01)
### 新功能
- 中间页展示自检趋势 AI 解读(P1-1)
- 结果页改 AI 解读 + 生成计划按钮 + 问问AI(P0-1/P0-2/P1-2)
- 新增 generateSelfCheckPlan/getSelfCheckTrendAnalysis API
- AIChat sendMessage 支持 selfCheckId 注入上下文(P1-2)
- 新增 /generate-plan + /trend-analysis 接口 + HealthPlanService.generateFromSelfCheck
- 新增 MemberChipPicker 多选成员选择组件,修复 health-plan-summary 缺失组件编译失败
### Bug 修复
- 删除 WuxingSourcingService 死 import
## v1.0.1272 (2026-09-01)
### 新功能
- 清理 WuxingSourcingService 静态表 + submitSelfCheck 接 AI
## v1.0.1271 (2026-09-01)
### 新功能
- AiGateway 新增 generateSelfCheckAdvice/generateSelfCheckTrend
- WuxingSourcingAdviceVO 改造为 AI 建议 VO + SelfCheckAnalysisService
- 新增 self_check 路由模块并注册到 main
- 新增 self_check_trend_graph 趋势分析实现
- 新增 self_check_analysis_graph + llm.client 薄包装
### 文档
- PROJECT-OVERVIEW 添加 AI 集成实现计划索引
- 五维自检 AI 结合 P0+P1 实现计划
- PROJECT-OVERVIEW 添加 AI 集成规格索引
- 五维自检 AI 集成 P0+P1 设计稿(纯AI建议+计划生成+趋势+Chat注入)
- 优惠券全链路改为家庭维度设计文档
### Bug 修复
- 迁移编号 273/274 → 276/277,避开并发 dan_report/users 迁移占用
## v1.0.1270 (2026-08-31)
### 其他
- 优化修复
## v1.0.1269 (2026-08-31)
### Bug 修复
- 登录前健康页去掉五维自检上方五个功能卡片,首页登录按钮去掉协议提示
## v1.0.1268 (2026-08-31)
### Bug 修复
- 修复 preferences.wxml 编译错误 - :key 移除带字符串参数的方法调用,避免 data-event-opts 解析失败
## v1.0.1267 (2026-08-31)
### 新功能
- 家庭邀请新流程(短邀请码落地页 + 首登绑定邀请人)+ 分享补邀请码/朋友圈
## v1.0.1266 (2026-08-31)
### Bug 修复
- 重命名迁移编号 269/270 → 273/274,避免与 run() 主流程 innate portrait 迁移冲突
## v1.0.1265 (2026-08-31)
### 其他
- Co-authored-by: Sisyphus
-
### 新功能
- 支持 retake 参数获取轮换题库
## v1.0.1264 (2026-08-31)
### 新功能
- 会员中心等级配置添加编辑功能
### 其他
- - 新增编辑弹窗,支持修改等级名称/描述/价格/上限/开关/权限
- - 后端已有 /api/admin/membership/level/update 接口
-
## v1.0.1263 (2026-08-31)
### 新功能
- 首页入口显示自检总分 + 跳转中间页
- 注册 self-check-entry 页面;结果页「重新自检」改跳中间页
- 新增自检中间页 self-check-entry.vue
- 新增 getSelfCheckStatus 和 ignoreSelfCheck API 方法
- 新增 /status 和 /ignore 接口;/questions 支持 retake 参数
- Service 层抽题/状态/忽略/计分改造
### Bug 修复
- 修复 pickQuestions 回退补题条件取反 + 清理 questionMap 死代码
## v1.0.1262 (2026-08-30)
### 新功能
- 新增 self_check_ignores 表和 question_ids_json 列(迁移269/270)
- 能量沙盘支持我的/全家本地切换,后端一次返回个人+全家数据
### 文档
- 五维自检15天复检周期实现计划
- 五维自检规格自检修复 + 更新 PROJECT-OVERVIEW 索引
- 五维家庭自检15天复检周期+首页分数+题目轮换设计
### 其他
- - wuxing-sandbox 新增 personalData prop,个人模式优先取指定成员数据,切换视角零请求
- - 首页/家长/孩子三个页面缓存两份数据,onSandboxViewChange 本地切换不再重新请求
- - 成员移出家庭后恢复到其自建家庭(families.creator_id),family-members 文案改为删除成员
-
## v1.0.1261 (2026-08-30)
### 新功能
- 会员中心改为三个 Tab 页(等级配置/升级记录/会员维护)
## v1.0.1260 (2026-08-30)
### Bug 修复
- 手风琴异常统计口径改为白名单
### 其他
- - 原来 'status !== '正常'' 会将未知/英文状态误判为异常(如 PHYLUM/CLASS 等层级行的空 status)
- - _cssForStatus 增加中英文双语言映射,与 report-confirm 保持一致
-
### 文档
- DAN报告按类型分别处理实施计划
- 记录DAN报告按类型分别处理实施计划
### 新功能
- DAN报告详情页复用blocks渲染器,按类型分别展示
- DAN报告详情接口按类型重算blocks(历史数据生效)
- DAN报告按category分组组装blocks(类型分别处理)
## v1.0.1259 (2026-08-30)
### 新功能
- 肠道菌群报告/健康报告列表/首页优化
### 其他
- - 报告日期仅显示 yyyy-MM-dd,去掉时间部分
- - 指标名称前添加 '?' 知识库按钮,点击弹出说明
- - 补全缺失数据:shannonIndex 徽章、healthRating 评级行、指标单位 unit、症状 symptoms
- - 修复报告解读框死代码:后端返回 reportInterpretation.gutAgeAssessment
- - 健康报告列表 (report-list.vue):
- - 滑动删除功能修复:移除组件层 @click 冲突,仅用 #right slot 实现左滑出现删除
- - 点击卡片正常跳转详情
- - 首页 (index-home/index.vue):
- - 新增 onShareAppMessage/onShareTimeline 分享配置
- - 后端 HealthReportService:
- - getReportDetail 新增 reportInterpretation 字段,基于 gutAge/gutType 生成评估文案
-
## v1.0.1258 (2026-08-30)
### Bug 修复
- 菌群报告异常指标统一红色显示
### 其他
-
## v1.0.1257 (2026-08-30)
### 新功能
- 用户管理列表新增会员级别和推荐人列,编辑支持修改推荐人
### 其他
- - 列表新增 referrerName 列(通过searchUsers解析referrerId显示推荐人名称)
- - 编辑弹窗新增推荐人下拉选择(远程搜索昵称/手机号/ID)
- - 新增 resolveReferrerNames 批量解析方法,loadUsers后自动调用
-
- 防止编辑旧格式报告(菌X构成/中文level)时原样写回脏数据
- - getReportDetail: 读回时加 normalizeGutFloraRead 后处理,
- 一次性兼容归一化前入库的历史数据(无需迁移脚本)
- - normalizeFloraLevel 的 category 参数保持传入以维持语义完整性
- 至此方案A覆盖完整主链路:
- 上传/确认入库(write)✅
- 编辑保存(write)✅
- 再次查看展示(read)✅
-
### Bug 修复
- 修复编辑路径与读路径的菌群分类归一化缺口
## v1.0.1256 (2026-08-30)
### Bug 修复
- 修复最终审查发现 - progressPercent/loading死代码/样式细节
- 菌群分类层级表归一化 category/level 与前端对齐
### 重构
- 重新设计会员中心页面 - 消除所有 levelCode 空值访问风险
### 其他
- - 所有表格数据源使用 safeLevels/safeMaintainUsers 过滤,杜绝 undefined.levelCode
- - 升级路径用 el-tag 路径样式展示
- - 权限详情对话框重构为 el-descriptions 布局
- - 空状态用统一 .empty-state class
- - loadOverview 合并 getMembershipStats + /api/admin/membership/overview 两次请求
-
- - 后端 normalizeFloraLevel:'门/纲/目/科/属/种' → PHYLUM/CLASS/ORDER/FAMILY/GENUS/SPECIES
- - 新增 HealthGutFlora.LEVEL_PHYLUM 常量(北京报告特有门级)
- - 前端 gut-flora-species-detail.vue 新增 '菌门' tab 及 PHYLUM 映射
- - 修复募极/北京格式分类层级在前端 taxonomy 标签页显示为空的问题
-
## v1.0.1255 (2026-08-30)
### 样式
- 饮食偏好调研 暖灶暖橙主题样式
### 新功能
- 饮食偏好调研 Step2口味偏好+Step3健康目标chip交互
- 饮食偏好调研 重构为3步引导问卷 - 数据层+进度条+Step1忌口过敏
## v1.0.1254 (2026-08-30)
### 文档
- 修复饮食偏好调研计划 :key 表达式违规 - 改方法调用 getChipKey
### 其他
- redesign: 重写登录前首页与登录页,清晰传达产品价值
## v1.0.1253 (2026-08-30)
### Bug 修复
- 修复健康报告列表非菌群报告无法进入详情页
### 其他
- - 原 tongue 分支指向废弃页 tongue-index(会重定向到上传页);未知类型分支路径 /pages/body/health-report 不存在导致 navigateTo 失败
- - nutrition-profile.vue: 修正 /pages/body/health-report 错误路径为 /pages/body-detail/health-report
-
## v1.0.1252 (2026-08-30)
### 新功能
- 共餐配置页暖灶主题美化
- 删除查看我的测评方案入口及相关跳转逻辑
### 其他
- - pages/health/report-confirm.vue: 删除报告确认后的 planId 跳转至 health-plan-summary 逻辑
- - pages/health/report-detail.vue: 删除报告入库后的 planId 跳转至 health-plan-summary 逻辑
-
## v1.0.1251 (2026-08-30)
### 其他
- 优化修复
## v1.0.1250 (2026-08-30)
### 文档
- 饮食偏好调研页面重新设计 实现计划(3任务:数据层+Step1/Step2+Step3/暖灶样式)
- 修正饮食偏好调研规格——移除死代码systemGoals区块
- 饮食偏好调研页面重新设计 设计文档(3步引导问卷+暖橙主题+补全mustEat/cookingMethods)
### 新功能
- .coupon.non-member-could-claim-membership-coupon
## v1.0.1249 (2026-08-30)
### 文档
- 会员中心重设计+用户管理会员功能扩展 设计文档与实现计划
- 先天画像体系实现完成 - 更新API文档与项目概览
### 新功能
- 小程序先天画像轨迹页+心维度首页入口+补create接口
- 小程序先天画像API封装+页面注册+报告页
- 管理端先天画像权重配置+数字能量配置页 + 路由菜单
- 管理端先天画像配置Controller(来源权重+数字能量详细配置+缓存失效)
- 先天画像innate_portrait_graph LangGraph + API路由
- AiGateway generateInnateReading 真实HTTP实现
- calcInnateScore 可配置权重+数字能量参与
- calcInnateScore 支持可配置权重+数字能量参与+缓存失效
- 先天画像4个接口(portrait/reading/numsoul/trajectory)
## v1.0.1248 (2026-08-29)
### 新功能
- 完善健康启航计划(199会员打卡21天)三大核心功能
### 其他
- - 新增 generatePurchasePayParams() 虚拟支付下单参数生成
- - 新增 HQ 前缀订单发货/退款/iOS退款问询回调处理
- - 新增 /api/purchase/pay-params 接口获取支付参数
- - 支付成功自动发放 300 CF 基础奖励
- 2. ChallengeService 补充 streakDays 返回
- - getChallengeProgress() 新增返回 streakDays 字段
- - 前端闯关进度页可直接展示连续打卡天数
- 3. 打卡自动同步闯关进度机制
- - 新增 ChallengeService.syncStreakProgress() 方法
- - 集成到 DailyCheckinService/EmotionCheckinService/FinanceCheckinService
- - 打卡完成自动更新 streak_3days/streak_7days/streak_21days 任务进度
-
## v1.0.1247 (2026-08-29)
### Bug 修复
- 会员费虚拟支付开关最终审查修复
- 强制出站HTTPS使用TLSv1.2 - 规避微信边缘终止TLSv1.3握手导致code2Session偶发失败
- 会员维护弹窗等级下拉增加safeLevels过滤 - 防御levels含null/undefined导致白屏
### 其他
- - 新增 null 缺省虚拟支付路由测试
- - 新增 PaymentServiceORDRoutingTest 覆盖 ORD/PO/其他前缀回调路由
- - 简化 orderNo 断言为 startsWith
- - 移除 pay.vue else 分支重复 orderNo 赋值
-
- - DatabaseInitializer迁移268为coupon表加status列, schema.sql同步
- - CouponService所有用户侧查询/领取/使用/兑换/自动发放过滤停用券
- - PointsExchangeService/FamilyPlatformPointsService兑换入口加停用校验
- - AdminCouponController新增POST /api/admin/coupon/toggle-status
- - CouponManagement.vue修复假状态列+新增停用/启用按钮
- - coupon.js新增toggleCouponStatus封装
-
### 新功能
- InnatePortraitService 先天画像聚合服务 + AiGateway generateInnateReading stub
- 优惠券停用/启用功能 - 新增status字段+迁移268+toggle-status接口+管理端按钮
## v1.0.1246 (2026-08-29)
### 新功能
- pay.vue 支持 payType 分流,新增普通微信支付路径
- handleWechatNotify 增加 ORD 前缀路由到会员开通回调
- Controller 改为调用 createOrderWithPayType,支持 openid 参数
- 优化免费会员家庭挑战创建流程
### Bug 修复
- trial 分支改调 createOrderWithPayType,返回 payType=none
### 其他
- - openCreateModal 细分场景:
- - 免费会员且仅 1 成员(自己) -> 引导先添加孩子 (showAddChildPrompt)
- - 其他成员不足 -> 通用添加成员引导 (showMemberPrompt)
- - 新增 goToAddChild:直接跳转到添加孩子页面
- - 提示文案明确告知:免费会员只能添加 1 位孩子,挑战创建后可切换到孩子身份同意参与
-
## v1.0.1245 (2026-08-29)
### Bug 修复
- Native支付关联买家userId + 恢复公告列表接口
### 其他
- - NoticeController: 恢复 /api/notices/list 接口(原410废弃)
-
### 新功能
- 数字能量计算器 NumSoulCalculator + 单元测试
- 先天画像Mapper和DTO
- 先天画像3个实体类(来源权重/报告缓存/数字能量配置)
- 迁移270-272 创建先天画像三张新表(来源权重/报告缓存/数字能量配置)
## v1.0.1244 (2026-08-29)
### Bug 修复
- 打破 MembershipService↔VirtualPayService 循环依赖
### 其他
- 在启动期强制互相实例化导致 Spring Boot 2.7 拒绝启动(循环依赖默认禁止)。
- 解决方案:在 MembershipService 的 VirtualPayService 注入点加 @Lazy,
- 启动期注入代理,运行时才解析真实 bean,打破循环。
- 参考:Spring 5.3 的 ResourceElement 支持 lazyLookup,与 @Resource 兼容。
-
## v1.0.1243 (2026-08-29)
### Bug 修复
- 小程序前端 GET 请求全部改为 POST + 成长打卡页美化与自动返回
### 其他
- - 前端: 7 处 GET→POST (api.js, service-tasks/chat/execution/rating/invite.vue)
- - 成长打卡页美化 (diet/exercise/sleep/emotion-checkin.vue):
- * 统一卡片式布局、导航栏、表单/标签/媒体工具栏/提交按钮样式
- * 打卡成功后 800ms 自动 navigateBack 回成长页
-
## v1.0.1242 (2026-08-29)
### 文档
- 会员费虚拟支付开关实现计划
### Bug 修复
- 菌群报告手风琴加有效/异常指标数量
### 其他
- Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)
- Co-authored-by: Sisyphus
-
## v1.0.1241 (2026-08-29)
### 文档
- 更新 PROJECT-OVERVIEW 规格索引
- 会员费虚拟支付开关设计文档
### Bug 修复
- sleep_record 时间列改TIME类型 + 新增迁移269(幂等) 同步schema.sql
- 睡眠打卡时间字段改Date+自定义反序列化器解析HH:mm修复java.sql.Time解析失败
- 测评方案列表familyId三路回退(查询参数/JSON body/JWT)修复缺参500
- 北京营养分析totalCount改Long写入并用Number读取修复ClassCastException
- JWT白名单改路径边界匹配防止verify-password被前缀放行 + 补登录必需拦截
- 菌群报告页圆环折行、quick-nav 显示关注数、饮食推荐走 /api/health/foods、菌群详情页标签折行
### 其他
-
- 2) gut-flora-foods-detail.vue: loadData 改用 getHealthFoods(reportId),不再依赖 report 详情里的 foods+KB 合并。
- 3) gut-flora-species-detail.vue: tabs 从 scroll-view scroll-x 改为 flex-wrap 折行(无横向滚动);默认 tab 从 core 改为 all(避免页面没内容)。
- Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)
- Co-authored-by: Sisyphus
-
## v1.0.1240 (2026-08-29)
### 新功能
- 优化家庭挑战创建流程,增加成员数量前置校验和友好提示
### 其他
- - submitForm 新增客户端校验:选择成员 < 2 时阻止提交并提示友好信息
- - 新增 goToAddMember 方法:引导用户前往家庭成员页添加成员
- - 避免后端 500 错误'家庭挑战至少需要2名成员参与'直接暴露给用户
-
## v1.0.1239 (2026-08-29)
### Bug 修复
- 统一文章/商品/活动推广分享邀请人参数 + 兼容旧分享链接
- 五维自检未传familyMemberId时自动解析为当前用户本人
### 其他
- - 三个详情页: onLoad 显式处理 inviteCode + 海报二维码 scene 带 &ref= 邀请码
- - promotion/index.vue: onShareAppMessage 带上 inviteCode=分享码(与 invite.vue 一致)
-
- 按 userId 修改 memberLevel(含 LIFETIME 置空到期时间)与 referrerId,
- 等级变化写入 MemberUpgradeRecord(upgradeType=admin)
- - 用 LambdaUpdateWrapper 显式 SET,修复 referrerId 清除(null)不生效的 bug
- - MembershipCenter.vue 新增「会员维护」卡片:搜索用户 → 修改等级/推荐人
- - 修复会员中心打不开:loadLevels/loadUpgradeRecords 过滤 null 元素,
- 所有表格 scoped slot 加空值保护(row 为 null 时不再抛 TypeError)
-
- 根因:submitSelfCheck/submitSubDimensionCheck 直接存储 dto.familyMemberId,
- 前端提交问卷时不传该字段,导致自检记录与返回VO的 familyMemberId 为 null,
- 前端 joinMicroAction 无法拿到 memberId。
- 修复:familyMemberId 为空时,按 userId 自动解析用户本人对应的家庭成员(注册时已自动创建)。
-
### 新功能
- 后台会员维护功能 - 修改会员等级/推荐人 + 修复会员中心打不开
### 文档
- 先天画像体系实现计划(7阶段15任务,含数字能量TDD与权重替换改造)
- 修复先天画像设计规格5处缺陷(复用calcInnateScore/数字能量mind_base/权重替换/报告表职责/配置表关系)
- 星座/八字/数字能量引入心维度先天画像体系设计
## v1.0.1238 (2026-08-28)
### Bug 修复
- 恢复健康方案组件原貌,移除远程误加的FamilyMemberStrip成员条
### 其他
- Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)
- Co-authored-by: Sisyphus
-
## v1.0.1237 (2026-08-28)
### Bug 修复
- 修复最终审查3处Minor偏差(副标题人数/nav-icon-wrap重复/status-accepted暖蓝)
- 移除食谱页未使用的 iconCls 死代码
- 生成食谱按钮文字改白色(修复样式覆盖冲突)
### 新功能
- 食谱推荐页暖灶主题美化
- 共餐配置页暖灶主题美化
- 饮食首页菜篮/导航/趋势暖灶主题化
- 饮食首页今日餐桌主视觉(暖灶主题)
- add scrollbar to rich editor text containers
### 文档
- 共餐食谱美化实现计划(暖灶主题)
- 共餐食谱设计文档自检修正(数据一致性/确定性)
- 共餐&食谱页面美化设计文档(暖灶·家的味道)
## v1.0.1236 (2026-08-28)
### Bug 修复
- 修复 assessment-plan 分包页面缺失导致编译崩溃,补充 list/detail 页面并修正接口路径
## v1.0.1235 (2026-08-28)
### Bug 修复
- 补交健康/测评方案管理页面,修复部署构建找不到路由组件
### 其他
-
## v1.0.1234 (2026-08-28)
### 新功能
- 规划师端健康方案管理页 + v1.0.1233 版本升级
## v1.0.1233 (2026-08-28)
### 文档
- 登记生成方案标准内容格式实现计划(PROJECT-OVERVIEW 🟢 已实施)
### Bug 修复
- 健康方案 submitPlan 补 tasks 字段 + regenerate 更新 tasks
- 海报扫码进入文章/活动详情页解析 scene 参数,修复参数错误
- 首页自检卡跳转改为五维自检页 self-check
### 新功能
- 规划师端健康方案结构化任务条目编辑
- 支持分享到朋友圈(onShareTimeline)
### 其他
- 优化修复
- 优化修复
- Co-authored-by: Sisyphus
-
- 优化修复
- 优化修复
## v1.0.1232 (2026-08-28)
### Bug 修复
- 共餐配置页修复页面溢出、选中态醒目、添加按钮唯一化
- /api/health/foods 未传 reportId 时返回当前用户最新报告食材
### 其他
- - 选中项加橙色 ✓ 角标 + 强化高亮(粗边框/外发光/头像变色)
- - 改用 mealGroups 计算属性,去除模板内 isMemberSelected 方法调用
- - 3 个餐次添加按钮收敛为唯一入口,点击跳转成员管理页
-
- - 未指定 reportId 时按当前登录用户查最新报告食材,返回当前最适合的推荐
- - 修复食材查询页空数据问题
-
## v1.0.1231 (2026-08-28)
### 新功能
- 方案任务生成优先读 tasks + 正则兜底 + 懒加载回填
- 方案 section 重生成返回 {content, tasks} 结构化
- 健康方案生成 Pydantic 校验 + 正则兜底提取 tasks
- 健康方案 prompt 追加 tasks 输出契约
- 健康方案 tasks 模型(PlanTask + section.tasks)
- 方案激活按模板包批量拆任务并兼容childId双域
- 成长计划列表接口与childName组装
- 方案制定支持多成员分别调研-health_status加member_id字段+修复只保存不生成bug
### 样式
- health_plan.py 文件末尾补充换行符
### 测试
- 主链路E2E脚本与黑盒自测脚本
### 其他
- Co-authored-by: Sisyphus
-
- Co-authored-by: Sisyphus
-
- Co-authored-by: Sisyphus
-
- Co-authored-by: Sisyphus
-
- Co-authored-by: Sisyphus
-
- Co-authored-by: Sisyphus
-
- Co-authored-by: Sisyphus
-
- Co-authored-by: Sisyphus
-
- Co-authored-by: Sisyphus
-
- Co-authored-by: Sisyphus
-
- Co-authored-by: Sisyphus
-
- Co-authored-by: Sisyphus
-
- Co-authored-by: Sisyphus
-
### 文档
- 四模块链路黑盒测试方案与自测报告
### Bug 修复
- 方案管理页补齐plan接口函数修复白屏
- 文章创建更新防检测超时-受限超时并fail-open
- 全局参数校验友好化-空参格式错误返回400
- 知识库查询删除接口契约对齐请求体并容错
- 活动提交审核业务异常转400提示并支持退回草稿
- 供应商保存兼容新旧字段契约并校验必填
- 勋章创建自动生成badgeId避免唯一键500
- 方案管理列表支持admin全量查看并按家庭筛选
## v1.0.1230 (2026-08-28)
### 文档
- 生成方案标准内容格式实现计划(LangGraph tasks + Java 懒加载回填 + 前端任务编辑)
- 生成方案标准内容格式设计(planJson tasks 单一事实源 + Pydantic 校验 + 懒加载回填 + 规划师任务编辑UI)
### Bug 修复
- 首页'再次了解'回跳调研页未加载内容
## v1.0.1229 (2026-08-28)
### 文档
- 生成方案标准内容格式设计(planJson tasks 单一事实源 + Pydantic 校验 + 懒加载回填 + 规划师任务编辑UI)
### 新功能
- 菌群报告统一走个性化详情页并支持任意类型通用组装
### 其他
- - ReportBlockAssembler.assembleWithTemplate 无模板时对任意报告类型默认调用通用组装(评分+风险+指标+菌种),不再只支持 gut_flora
- - 确认入库与编辑保存两处改传 reportType,走 assembleWithTemplate 模板驱动+默认兜底
- 前端:
- - report-list / health-main / report-upload / report-confirm 的 gut_flora 跳转统一到 gut-flora-detail 个性化页
- - gut-flora-detail 新增内嵌 draftId 模式(解析→确认入库/放弃),修复评分圆环字段错位 bug(兼容 balanceScore 等新键),saveEdit 载荷改标准嵌套结构
- BREAKING CHANGE: 肠道菌群报告详情页由通用 report-detail 切换为个性化 gut-flora-detail,入口 URL 与参数(draftId 支持)变更
-
## v1.0.1228 (2026-08-27)
### 新功能
- 五维沙盘个人/全家视角切换 + 食物表字段扩展 + 忽略报告解析临时文件
## v1.0.1227 (2026-08-27)
### 其他
- 修改体验版地址
## v1.0.1226 (2026-08-27)
### 其他
- 修改体验版地址
## v1.0.1225 (2026-08-27)
### 其他
- 健康报告上传-解析-生成方案-分解任务-打卡,完成链路流程
- 修改小程序的开发环境
- 修复编译报错
- 修复编译报错
## v1.0.1224 (2026-08-26)
### Bug 修复
- 五维成员详情页导航路径修复 + 财富维度成员详情页补齐
## v1.0.1223 (2026-08-25)
### Bug 修复
- 全局异常处理器捕获 ClientAbortException,避免连接中断时二次抛异常
## v1.0.1222 (2026-08-24)
### 新功能
- 小程序新增画像编辑页(portrait-edit.vue+api封装+pages注册)
- Java 4个对话端点注入portrait_prompt(chat/coach/butler/nutrition)
- Python侧画像prompt注入(4个graph+nutrition端点)
## v1.0.1221 (2026-08-23)
### 新功能
- 用户画像数据层+PortraitService(迁移263+实体+接口+Controller)
### Bug 修复
- ensure member IDs are always strings for WeChat mini-program event system
### 其他
- - Template expressions pass raw numbers, causing type mismatch in indexOf
- - Always convert to String() in isMemberSelected, toggleMember, loadExecutors
- - Prevent double loadExecutors with synchronous _executorsLoading flag
- Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)
- Co-authored-by: Sisyphus
-
## v1.0.1220 (2026-08-23)
### 文档
- 对齐 TabBar 重设计为实际实现(4Tab+中间⭐扇形菜单)
### 其他
- - 行跳转:pages/index-home/index→pages/action-detail/index
- - 四维跳转路径:pages/X/index→pages/X-detail/index
- - 健康Tab:pages/health/index→pages/health-main/index(5子Tab+雷达图)
- - 同步更新技术方案、边界情况、实施状态表
- - PROJECT-OVERVIEW v2.8→v2.9
-
## v1.0.1219 (2026-08-23)
### Bug 修复
- energy_daily_limit迁移编号255改258避免撞号
- 全局异常处理兜底路径参数类型转换错误
- 恢复被误删的套餐模板列表接口 /package/templates
### 其他
- Co-authored-by: Sisyphus
-
- Co-authored-by: Sisyphus
-
- Co-authored-by: Sisyphus
-
## v1.0.1218 (2026-08-23)
### 文档
- 用户画像 prompt 拼装实现计划
- 用户画像 prompt 拼装设计规范
### Bug 修复
- 后端添加405处理器兼容旧GET请求
- 修复中文CSS类名WXSS编译错误及公告接口更新
- body-detail/index.vue 中文CSS类名导致WXSS编译错误
## v1.0.1217 (2026-08-23)
### Bug 修复
- 修复报告列表不返回数据
### 其他
- 修复三层:
- 1. JwtInterceptor: user.family_id 为空时从 family_members 表反查用户所属家庭
- 2. HealthReportService.getFamilyReports: 优先通过家庭所有成员(subject_id/user_id)
- 反查报告,兼容报告表 family_id 未填充的历史数据,再补充按 family_id 匹配并去重
- 3. HealthReportController.listReports: 无家庭信息时返回空列表而非报错
-
## v1.0.1216 (2026-08-23)
### Bug 修复
- 打破 memberSubscriptionService↔butlerService 循环依赖 - @Lazy 注入
## v1.0.1215 (2026-08-23)
### 新功能
- rewrite plan creation flow to 3 steps with embedded questionnaire
- 家庭加入申请改为邀请人审批模式,谁分享的卡谁确认
### 其他
- - Embed health-status-form fields inline in step 2 (体征/血脂/疾病史/药物/补充)
- - Auto-load existing health data via getHealthStatus on page load
- - Add saveAndGenerate to save form then call generateHealthPlan
- - Step 3 shows plan preview with two paths: edit/confirm OR select planner service
- - Create teacher-service.vue: planner service selection page (纯线上/可联系 types)
- - Register teacher-service.vue in pages.json
- - Preserve viewMode/planDetail for viewing existing plans
- - Preserve all section editing (regenerate/confirm) and plan submission logic
- - Follow WeChat Mini-Program constraints: no optional chaining, no CSS Grid, no :key expressions
- Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)
- Co-authored-by: Sisyphus
-
- - approve/reject 权限改为邀请人(须仍为目标家庭成员),旧数据无邀请人由家庭管理员兜底
- - approve 通过后刷新家庭通关解锁,与 /accept 直加路径一致
- - getPendingRequests 改按邀请人查询,控制器去掉 familyId/admin 校验,透传 token
- - 迁移262: family_join_requests 添加 inviter_user_id 列 + idx_inviter 索引
- - 前端:join.vue 文案改等待邀请人确认+进入回显待确认申请+取消申请按钮
- - family-members.vue 新增加入申请审批区块(同意/拒绝),按邀请人过滤
- - 同步 API_REFERENCE.md 与 api.js 注释语义
-
- 内容: D32扩展财商内容+封面文字修复
## v1.0.1214 (2026-08-23)
### 其他
- 内容: D32富维度发布准备完成
## v1.0.1213 (2026-08-23)
### 其他
- 内容: D28-D31小红书发布准备完成;指南: 图片规格改为9:16+imagefree_gen.py
## v1.0.1212 (2026-08-23)
### Bug 修复
- diet_preferences 补齐 must_eat 列(迁移251d)
## v1.0.1211 (2026-08-23)
### 新功能
- 健康报告列表支持 size 参数 - 健康主页仅取最近3条,报告列表页返回全部
- 北京菌群报告解析 - PdfParseService新增北京格式解析 + langgraph parse-typed/detect-type端点
### Bug 修复
- 健康报告列表仅返回最近3条 - 小程序健康页只展示3条,避免多余数据传输
- 问卷提交前校验模板已加载 + 邀请码scene兼容裸token格式
- 迁移修正 - finance_checkins.child_id允许NULL+补齐type列(251c) + 维度权重迁移表名修正去重(233) + 移除已稳定的profile/report_template/social_circle迁移
- 参数校验与错误处理强化 - 控制器参数判空/可选 + MultipartException处理 + 异常语义化
- 请求日志中间件重构为纯ASGI - 避免BaseHTTPMiddleware消费body导致POST死锁
### 文档
- 菌群计划文档回填实施状态并记录偏差①修复
### 其他
- - 头部实施状态、文件结构表、Task 10/11 注记、Task 16 期望值(3→4) 同步更新
- - PROJECT-OVERVIEW 条目更新为 health 分包 4 页架构齐备
- Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)
- Co-authored-by: Sisyphus
-
- - pages.json:growth 分包移除注册,health 分包新增(risks-detail 之后)
- - gut-flora-detail 主页 goToFoods() 跳转同步更新
- - 功能不变(筛选+排序+编辑+知识库营养数据合并);E2E 无路径断言无需变更
- Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)
- Co-authored-by: Sisyphus
-
### 重构
- 菌群食物推荐页迁移至计划路径 gut-flora-foods-detail
## v1.0.1210 (2026-08-23)
### 文档
- 登记管家自选与健康教练接口文档
### 新功能
- 报告详情优化-新增payload按需加载接口,blocks渲染器增加知识库?查询
## v1.0.1209 (2026-08-23)
### 文档
- 更新健康启航计划CF奖励设计——每日4任务×225CF+里程碑7200CF
## v1.0.1208 (2026-08-23)
### 新功能
- 管理端分配管理与停接开关页面
- 健康教练欢迎语个性化与我的管家入口
- 小程序管家选择页与接口封装
- 健康教练graph按coach_id路由人格prompt
- 健康教练对话注入教练人格标识
- 管理端分配管理与停接开关接口
- 邀请令牌复用同家庭有效令牌,组件邀请入口改跳成员管理页
- includeFamily响应增加members字段,支持单次调用同时获取成员列表与家庭信息
### 其他
- Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)
- Co-authored-by: Sisyphus
-
- Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)
- Co-authored-by: Sisyphus
-
- Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)
- Co-authored-by: Sisyphus
-
- Co-authored-by: Sisyphus
-
- Co-authored-by: Sisyphus
-
### Bug 修复
- ensureFamily改为静默兜底,移除误导性的家庭创建成功提示
- 家庭成员编辑页合并为单次member/list调用,移除onLoad前端建家庭逻辑
- 登录成功时将familyId持久化到userInfo缓存,避免页面误判无家庭而重复创建
## v1.0.1207 (2026-08-23)
### 新功能
- 家庭端管家自助选择接口
- ButlerService新增管家浏览/查询/自助绑定方法
### Bug 修复
- member toggle + race condition + generate string data
- 移除打卡页navigationStyle:custom,恢复原生导航栏标题和返回按钮
### 其他
- - Prevent onLoad + onShow double-load race with _executorsLoaded flag
- - Only loadExecutors in onLoad when not in planId/viewMode path
- - Handle generateHealthPlan API returning data as markdown string (typeof check)
- - Reset selectedMemberIds and userGoal in reCreate()
- Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)
- Co-authored-by: Sisyphus
-
## v1.0.1206 (2026-08-23)
### 新功能
- 新增butler_assignments实体与Mapper
- butler_profiles 新增accepting停接开关列
- Web管理端购买记录管理
### 文档
- 总览登记AI健康教练人格分化与管家自助选择条目
## v1.0.1205 (2026-08-23)
### 新功能
- 报告列表支持家庭维度查询+成员过滤,健康页不再传memberId
## v1.0.1204 (2026-08-23)
### 新功能
- 添加续费页和闯关进度页
## v1.0.1203 (2026-08-23)
### 文档
- 新增AI健康教练人格分化与管家自助选择设计规格
- 健康启航计划实现计划
### 其他
- Co-authored-by: Sisyphus
-
### 新功能
- 添加购买页和API封装
- 付费墙拦截+前端API+页面注册
- 健康启航计划后端核心
## v1.0.1202 (2026-08-22)
### 其他
- Co-authored-by: Sisyphus
-
- Co-authored-by: Sisyphus
-
- Co-authored-by: Sisyphus
-
- Co-authored-by: Sisyphus
-
- Co-authored-by: Sisyphus
-
### 文档
- API参考文档补全13个Controller共65+接口及废弃状态更新
### Bug 修复
- 废弃接口返回410及补充@Deprecated注解(Family/Butler/Notice)
- childId→familyMemberId 引用统一(19处TaskService)
### 新功能
- energy daily limit 数据库持久化 - 新增DimensionDailyLimit表及Controller读写
## v1.0.1201 (2026-08-22)
### 文档
- 新增财富功能重构计划与设计方案
### Bug 修复
- games/list.vue 移除错误编辑导致的孤儿view标签
## v1.0.1200 (2026-08-22)
### 重构
- 合并重复接口-删除死代码GuidePackageController,统一所有接口为POST
## v1.0.1199 (2026-08-22)
### Bug 修复
- 修复多根元素及语法错误(games/list, gut-flora-detail, action-detail, api.js)
## v1.0.1198 (2026-08-22)
### Bug 修复
- 修复 f048448e3 移除nav-bar导致的45个页面模板view标签不平衡
### 其他
- - 删除了根但保留了对应的
- - 删除了nav-bar的打开标签但保留了
- 导致模板出现多根元素或孤立,HBuilderX编译报错:
- 'Element is missing end tag' / 'Multi-root element found' / 'Root element expected'
- 修复方式: 删除所有孤立的标签(共45个文件)
-
## v1.0.1197 (2026-08-22)
### 文档
- 更新健康启航计划——体验期内升级享199元抵扣
## v1.0.1196 (2026-08-22)
### 文档
- 更新健康启航计划——CF值1CF=0.01元,全勤19900CF抵199元
### Bug 修复
- use beam_size=1 + vad_filter for faster STT inference
- delay first kb_sync by 120s, increase gunicorn timeout to 600s
### 新功能
- add voice input button to AI chat page
- add AiGateway.transcribe + /api/ai/transcribe endpoint
- integrate STT into diet/exercise check-in pages
- add sttTranscribe API utility for speech-to-text
- add STT endpoint with faster-whisper base model
## v1.0.1195 (2026-08-22)
### 新功能
- 完整圈子社交功能-创建/加入/动态Feed/点赞评论
## v1.0.1194 (2026-08-22)
### 文档
- 新用户付费转化产品设计——健康启航计划
## v1.0.1193 (2026-08-22)
### Bug 修复
- 新用户无孩子时静默跳过能量概览请求,避免弹出memberId为空提示
## v1.0.1192 (2026-08-22)
### Bug 修复
- 修复 health 模块模板多根元素错误
## v1.0.1191 (2026-08-22)
### 新功能
- 新增报告模板管理 & 采集训练器
### 其他
- - 新增 report_template 表,支持按报告类型配置固定展示块 + 自由显示
- - ReportBlockAssembler 集成模板逻辑:优先按 fixedBlocks 顺序渲染,未覆盖指标自动追加
- - 自学习生成类型时自动创建空模板(isActive=0)
- - report_unknown_upload 新增 annotation 列(管理员标注训练数据)
- 前端:
- - ReportTemplateManage.vue:模板列表 + 可视化编辑器(固定块增删/排序、自由显示开关、实时预览)
- - ReportCollectorTrainer.vue:聚类列表 + 报告标注 + LLM解析预览 + 模板渲染预览
- - 路由 & 菜单:报告解析系统下新增「报告采集训练」「报告模板管理」
- 文档:更新 API_REFERENCE.md,新增报告模板接口说明
-
## v1.0.1190 (2026-08-22)
### 新功能
- 身体调研加饮食偏好 + 食材档案清真/素食标识
### 其他
- - 提交问卷时自动同步到 diet_preferences 表(absoluteAvoid/mustEat/religiousDiet)
- - 迁移254: diet_preferences 新增 must_eat 列
- - 迁移253: foods 新增 diet_type 列(清真/halal/素食/vegan 标识)
- - Food/DietPreferences 实体及 DTO 同步更新
-
## v1.0.1189 (2026-08-22)
### Bug 修复
- 修复食材数据未显示-响应路径修正为res.data,合并重复API调用
## v1.0.1188 (2026-08-21)
### 新功能
- Web管理端 — 用户画像列表与详情查看
## v1.0.1187 (2026-08-21)
### 新功能
- 小程序画像页 — 五维指标+推荐内容展示
- 方案生成时自动注入用户画像数据
## v1.0.1186 (2026-08-21)
### 新功能
- 打卡和任务完成后自动触发画像重算
## v1.0.1185 (2026-08-21)
### 新功能
- 解析loading改为旋转动画+三阶段轮播文案,提升用户感知
- 添加C端和B端画像API控制器
- 实现画像读取服务和规则推荐引擎
- 实现画像计算服务 — 五维指标聚合+增量写入
## v1.0.1184 (2026-08-21)
### Bug 修复
- 补回疾病风险卡片模板
- 修正Task状态值、Product状态值、删除死代码RULES块、修复PointsLog查询语法
- 补充肠道菌群卡片CSS样式
- mind-detail/index 删除孤立多余闭合花括号
- login.vue 删除 return 对象尾随逗号 + report-detail 给 .food-item 补闭合花括号
- 修复饮食推荐页面右侧溢出-添加box-sizing和width约束
- 统一首页和成长页面今日任务标题命名
- 修复行页面能量沙盘数值不显示问题
- tasks表加parent_task_id列(购买任务→每日使用子任务链)+ schema同步
- health_plans补updated_at/审核字段列,修复selectById Unknown column
- 打卡弹窗金额/备注输入框高度不足 — 增加padding和min-height
- 打卡页隐藏原生导航栏,修复双标题 —— navigationStyle: custom 仅保留页面内标题
- 重新制定时重置viewMode,修复页面空白问题
- 修复打卡页面双标题、输入框过小、睡眠页多余功能、心情页样式缺失
- 修复微信登录 invalid code (40029) —— 不再 onLoad 预取 login code,改为点击授权时实时获取
- 任务列表标题列支持排序,孩子ID改为显示用户名
- health-main 移除已删除报告入口 + growth-emotion-checkin 添加照片上传
- 系统提示词INSERT列数不一致 + 知识库embedding TPM重试 + tags_str类型修复
- action-detail/wealth/wisdom-detail 修复 :key 表达式
- 方案任务设置repeatType=daily,幂等检查限定当天deadline
- 健康方案成员选择选中状态增强
- 心情打卡同步情绪日记—checkinDate 空值兜底为当天
- 健康方案重做限制改为每日一次
- 修复报告方案链路与报告详情折叠展示
- 健康方案查看页+报告日期格式
- 保单管理页居中+控件高度
- 移除 report-upload 自定义导航栏,使用原生导航栏避免双标题
- confirmText 改为4字以内,移除debug日志和红色横幅
- AiGateway 缺少 @PostConstruct import 导致编译失败
- 财商打卡页居中+控件高度 - 容器宽度约束+input padding增大
- 解决 merge 冲突 - health-main/index-home 合并冲突 & AiGateway 保留
- 同步远端重构合并 + 保持 :key 修复与 trial 环境地址
- pages.json 删除多余右花括号修复 JSON 语法
- 健康主页身维度雷达图改用真实API数据
- 内联弹窗逻辑到 pickFile/takePhoto,消除方法调用链断裂问题
- 移除所有页面中的PageBanner组件,消除双层标题
- 迁移249 file_record补file_type/description列,修复Unknown column错误
- 允许 cfc.iwintrue.com 访问后端 API
- 责任声明勾选改方法调用+箭头函数消除this丢失隐患
- 修复行页面FamilyEnergyBar标签断裂导致模板文本裸露
- 修复行页面FamilyEnergyBar标签断裂导致模板文本裸露
- 修复行页面FamilyEnergyBar标签断裂导致模板文本裸露
### 新功能
- 创建画像实体类和Mapper接口
- 创建画像快照表和歷史表迁移脚本
- 身页面新增疾病风险卡片
- 身页面新增疾病风险卡片
- 身页面新增肠道菌群指标卡片
- 饮食推荐页面重新设计-修复居中/溢出/快捷入口不可点并全面美化
- 身/心/智页面重构 — 去七维/快捷/精准营养,改指标卡片
- 调研任务创建时自动生成AI调研模板
- 购物任务联动-cart/order 动作自动加购/下单
- 方案审核流程优化 — 用户可选规划师或系统自动出方案
- 规划师方案维护功能 — 前端审核页面 + 路由 + API
- 方案维护功能 — 规划师审核发布流程
- 体脂秤图片采集接入报告上传流程
- checkin 页面合并远端 UI 改进 + 保留 getPhotoKey 修复
- 体脂秤图片数据采集器 — 修复 Java 8 兼容性问题
- 体脂秤图片数据采集器
- 任务系统升级-行为调度中心前端(动作联动/两阶段/填写式完成)
- 任务系统升级-行为调度中心后端(前置任务/频率任务/两阶段/填写式完成)
- 健康方案页重写为多步骤结构化编辑流程
- 评论自动回复脚本 comment_reply.py——CDP 驱动,click 修复与残缺选择器修复
- 新增 D26/D27/D28 文章稿、推流试验稿及内容草稿
- 照片自动情绪识别 — 后端 AI 调用 + 前端真实 API
- 照片自动情绪识别 — Dify AI 图像分析 + 前端接入
- HealthPlan后端重构 - planJson/status字段+regenerate-section接口
- 首页区块顺序调整为 1-2-9-7-8-5-6-4-3-10-11
- 健康方案生成工作流重构 - LangGraph结构化方案+Java对接
- LLM推送数据PII脱敏(智能脱敏)
- 心情打卡同步到情绪日记
- 新增 SystemPrompt 管理功能 + web 品牌与产品素材
- 健康现状档案 v2 — 疾病史两源预置清单分类多选+确诊时间,用药开始年月自动计算时长 - 疾病史:DISEASE_PRESETS(10项) → DISEASE_GROUPS(8组54项,★菌群源),分类折叠多选,★角标说明 - 确诊时间:年月选择器(fields=month, end限当前月),存 diagnosedAt(yyyy-MM) - 用药:startDate年月 + durationText自动计算(<12月→X个月, ≥12→X年),记不清可手动兜底 - 后端零变更(JSON列透传),v1旧数据({name,note}/{name,time})回显兼容 - 新增 computed.selectedNames + 17 个 CSS 类
- DAN 测评报告专用详情页
- 智行富三页强项与提升卡片-认知/关系/财富强弱项标记
- 心身智三页肠脑轴卡片-情绪/认知指标过滤+身体异常告警
- 肠脑轴指标过滤+异常指标告警-认知/情绪分类+身体异常指标端点
- 首页健康漏斗重构 — 了解区自测卡 + 四段式区块重排
- 今日任务和报告上传移至推荐阅读上方,推荐商品移到底部
### 其他
- - 展示疾病名称、风险值、等级标签(高风险红/需注意黄)
- - gut-flora 接口确认已为 POST,无需修改
-
- - 展示疾病名称、风险值、风险等级(高风险红/需注意黄)
- - gut-flora 接口已为 POST,无需修改
-
- - 前端 body-detail 页面新增🦠肠道菌群区块:有报告时显示指标明细,无报告时引导上传
- - 显示菌群名称、丰度值、状态(正常/偏高/偏低)及摘要提示
- - 心/智页面已有肠脑轴数据展示,无需改动
-
- - 新增指标卡片展示:体脂率/BMI/血压/血糖/步数/睡眠(身)、情绪稳定性/焦虑/开放性(心)、感知力/专注力/记忆力(智)
- - 后端新增 POST /api/health/indicators 接口,按domain+memberId返回最新指标值
- - DatabaseInitializer迁移252:seed body/mind/wisdom指标定义27条
- - 各维度首页加载对应domain指标数据,点击卡片跳转详情
-
- - 新增 loadEnergyOverview 方法调用 getEnergyOverview API
- - WuxingSandbox 组件传递 :dimensions/:totalEnergy/:totalHealthIndex 属性
- - 修复 sortedDimensions 因 dimensions 为空导致 point-energy 始终显示 0 的问题
- - 对齐 child-index.vue 页面的正确用法
-
- - schema.sql tasks表同步parent_task_id列定义
-
- - schema.sql同步: health_plans CREATE TABLE补reviewed_by/reviewed_at/review_comment/teacher_id/updated_at
-
- - step===1 && !viewMode → false(Step1不渲染)
- - viewMode && planDetail → false(查看模式也不渲染)
- - 页面空白
- 同时补充editing和sectionFeedback重置。
- Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)
- Co-authored-by: Sisyphus
-
- - 睡眠打卡:移除照片上传和录音功能(不需要)
- - 心情打卡:补全所有缺失的基础样式,修复布局混乱
-
- - 新增 teacher-select.vue 规划师选择页,调用 /api/health/plan/available-teachers
- - 新增 HealthPlan.teacherId 字段 + DatabaseInitializer 迁移251
- - 新增 getAvailableTeachers 接口(已绑定+同团队+全量规划师)
- - submitPlan 根据 needTeacher 决定状态:pending_review/published
- - listPendingReviewPlans 支持按 teacherId 过滤
-
- 会导致 code2Session 返回 40029 invalid code。login.vue 改为与
- invite/join.vue 一致的模式:getPhoneNumber 中实时 uni.login 获取新 code。
-
- - cfc-web: 新增 api/healthPlan.js 接口封装
- - cfc-web: TeacherDashboard 快捷入口新增「健康方案审核」
- - cfc-web: router 新增 /teacher-health-plan-review 路由
- - cfc-frontend: health-plan-summary.vue 更新状态展示和成功提示
- 后端已有 c4744618,本次为前端配套
-
- - DatabaseInitializer: 迁移250 新增审核字段,status枚举扩展 pending_review/published/rejected
- - HealthPlanService: 新增 listPendingReviewPlans/updatePlanContent/approveAndPublish/rejectPlan 方法
- - HealthPlanServiceImpl: savePlan 默认 pending_review 状态,审核通过后生成任务
- - HealthPlanController: 新增 /pending-review/{list,update,approve,reject} 四个端点
- 流程: 用户生成方案 → draft/pending_review → 规划师编辑 → 审核通过(published) → 自动生成任务
-
- - report-upload.vue: 新增体脂秤入口卡片 + goBodyFatScale/uploadBodyFat 方法
- - bodyfat-confirm.vue: 新建指标确认页(可编辑数值 + 绑定成员 + 保存)
- - utils/api.js: 新增 saveBodyFatMetrics API
- 后端:
- - HealthReportController: 新增 /report/bodyfat-upload(图片上传+AI识别)+ /report/bodyfat-save(保存指标)
- - BodyFatScaleService: 图片→DeepSeek-VL OCR→提取指标→存 indicator_values
- - DatabaseInitializer: 注释废弃的 seedFullRegionData() 调用
- - pom.xml: source/target 改为 1.8(适配当前 JDK 环境)
- - application.yml: 新增 deepseek.vision-* 配置
-
- 账户权限分离
- - 修复 ArrayNode/ObjectNode 类型不匹配
- - 修复 String.isBlank() → trim().isEmpty()
- - 修复 var → 显式类型声明
- - 编译验证通过
-
- - 调用 DeepSeek-VL 视觉模型 OCR 提取体脂秤指标(体重/BMI/体脂率/肌肉量等)
- - 自动创建 indicator_definitions + 保存 indicator_values(source_type=body_fat_scale)
- - 新增 AdminBodyFatScaleController:
- - POST /api/admin/bodyfat-scale/images/list — 列出图片
- - POST /api/admin/bodyfat-scale/images/analyze — 单张分析预览
- - POST /api/admin/bodyfat-scale/save — 手动保存指标到成员
- - POST /api/admin/bodyfat-scale/batch — 批量处理多张图片
- - application.yml 新增 bodyfat-scale.image-dir 和 deepseek.vision-* 配置
-
- - 缺口:无前置任务/频率单一/购物零联动/require_input 无强制/无 start 两阶段
- - 设计:action_type 声明式联动、TaskEngine 集中判定、task_executions 执行记录、三阶段实施路径
- Ultraworked with [Sisyphus](https://github.com/OhMyOpenCode)
- Co-authored-by: Sisyphus
-
- - tasks.vue 今日任务:按 actionType 渲染按钮文案(开始游戏/专注/填写/阅读/报名/购物),locked 灰态+解锁提示,start_required 先开始再完成,require_input 弹填写面板提交内容
- - create-task.vue 新增联动动作/两阶段/填写式开关+商品ID配置,重复设置扩展隔天/每月,补全 repeatTypeLabel/actionTypeLabel computed
- Ultraworked with [Sisyphus](https://github.com/OhMyOpenCode)
- Co-authored-by: Sisyphus
-
- - 新增 task_executions 执行记录表(started/finished 两阶段落库)+ focus_sessions.task_id
- - DatabaseInitializer 迁移248:ensureColumn 幂等 + CREATE TABLE IF NOT EXISTS
- - TaskService:completeTask 前置校验/填写强校验/两阶段校验/最短时长校验,完成后解锁后置任务;新增 startTask(pending→in_progress 并记录 execution)
- - TaskController 新增 POST /api/tasks/{id}/start;complete 支持 content/contentType
- - RepeatTaskGenerator 重构为频率分派:hourly/daily/every_other_day/weekly/monthly,每小时 cron 扫描,兼容旧 repeatType
- - CreateTaskDTO/CompleteTaskDTO 透传新字段
- Ultraworked with [Sisyphus](https://github.com/OhMyOpenCode)
- Co-authored-by: Sisyphus
-
- - AiGateway.java: 日志消息更新
- - AIChatController.java: 注释和方法引用更新
- - ContextApiController.java: Javadoc 更新
- - ButlerController.java: Operation summary 更新
- - MealRecommendController.java: 变量名 difyResp→langgraphResp
- - KnowledgeBaseController.java: 依赖注入名更新
- - DifySyncService → LanggraphSyncService(类名/方法名同步)
- - DanKnowledgeBaseService.java: 依赖引用更新
- - AGENTS.md: AI集成说明更新
- - PROJECT-OVERVIEW.md: 历史条目中DifySyncService→LanggraphSyncService
-
- - 新增 EmotionRecognitionResult DTO(情绪列表+moodWeather)
- - AIService.sendEmotionRecognition(): 调用 Dify 情绪识别 Workflow
- - EmotionCheckinService.analyzeEmotionFromImage(): 解析结构化结果
- - EmotionCheckinController: POST /api/mind/checkin/emotion/recognize
- - application.yml: dify.emotion-api-key 配置项(空=mock模式)
- 前端:
- - analyzeEmotion() 改为真实 API 调用(上传+识别两步)
- - 识别结果自动填充 aiResult,支持 applyAiTags 应用标签
- - 提交时复用已上传的 photoUrl,避免重复上传
-
- - AIService.sendEmotionRecognition(): 调用 Dify 情绪识别 Workflow,支持 mock 兜底
- - EmotionCheckinService.analyzeEmotionFromImage(): 解析结构化情绪列表
- - EmotionCheckinController: 新增 POST /api/mind/checkin/emotion/recognize
- - application.yml: 新增 dify.emotion-api-key 配置项
-
- Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)
- Co-authored-by: Sisyphus
-
-
- - FamilyContextService: 用户/孩子姓名脱敏
- - AiGateway.chat/generateQuestionnaire/generateMenu/generateHealthPlan: 入口脱敏
- - AIService: sendNutritionMessage/sendTongueDiagnosis/runWorkflow/enrichInputsWithMemory/mirrorConversation/getContext/requestSummaryAsync: 入口脱敏
- - 化名映射: userId+salt→SHA-256→固定化名, 保证AI可识别同一用户
-
- - 幂等检查加 deadline 日期窗口过滤,避免历史任务阻塞当天生成
- - RepeatTaskGenerator 每天凌晨5点可正确识别并再生方案任务
-
- - cfc-backend/AGENTS.md:新增接口前三步检查流程(复用→修改→新增)+ 废弃接口 410 处理
-
- - AGENTS.md:接口规范补充「新增接口前查阅文档」和「废弃接口处理」
- - cfc-backend/AGENTS.md:新增接口前三步检查流程(复用→修改→新增)
- - 废弃接口统一标记 410 + @Deprecated
-
- - 标注已废弃接口(7 处,返回 410)
- - 列出待清理废弃接口清单
- - 新增接口检查清单与流程
-
- - 勾选圆圈 36rpx->44rpx,未选时透明打勾文字(不显示),选中时橙色填充✓
- - 步骤标题行加已选人数 badge(橙色胶囊标签)
- Ultraworked with [Sisyphus](https://github.com/OhMyOpenCode)
- Co-authored-by: Sisyphus
-
-
- - DailyCheckinService.createCheckin 在 moodScore 有值时自动同步到 emotion_checkin 表
- - upsert 逻辑:今日已有记录则更新,否则新建
- - moodScore 1-10 → moodWeather 映射(sunny/cloudy/rainy/stormy)
- - 同步失败不影响主流程
-
- - localStorage key 改为按日期(yyyy-M-d)记录
- - 提示文案同步更新
- Ultraworked with [Sisyphus](https://github.com/OhMyOpenCode)
- Co-authored-by: Sisyphus
-
- - Web 管理端: systemPrompt.js API + SystemPromptManagement.vue 管理页
- - cfc-langgraph: requirements_frozen.txt 依赖冻结
- - web/img: 品牌/产品/引用源图片素材(cert/diagram/product-intro/products/ref)
- - axonhub: AxonHub LLM 网关配置(compose+config)
- - docs: web 品牌方向计划文档
- 未追踪 uploads/(临时 json 结果) 不入库
-
- - HealthPlanServiceImpl 修复任务行正则,编号行任务可正常生成
- - report-detail 移除饮食推荐,肠道菌群/疾病风险/益生菌种/分类/病原菌改为折叠展示
- - cfc-langgraph 增强 PDF 报告解析(营养/药敏/氨基酸/症状字段)、rag 检索与向量化
- - schema.sql 补充新表;DatabaseInitializer/AIService/Layout 相关调整
-
- - 会员限制:付费年度家庭会员不限次,非付费会员每月仅可重新制定一次(localStorage 记录)
- - health-main: goPlanSummary 传 planId;报告日期格式化为 yyyy-MM-dd
- Ultraworked with [Sisyphus](https://github.com/OhMyOpenCode)
- Co-authored-by: Sisyphus
-
- - 后端 DanReportUploadVO 增加 result 字段,getDetail 返回关联的 DanAssessmentResult 分数
- - 更新 4 处入口跳转:report-list、mind-detail、wisdom-detail、health-main
-
- - insurance-add .form-input height 80rpx->88rpx 增大触控区
- Ultraworked with [Sisyphus](https://github.com/OhMyOpenCode)
- Co-authored-by: Sisyphus
-
-
- '同意并继续'(5字) 导致 showModal 静默失败,弹窗不出现。
- 改为 '同意继续'(4字),同时移除所有 debug 代码。
-
- - .form-input padding 16rpx->22rpx, font-size 26rpx->28rpx 提升触控体验
- Ultraworked with [Sisyphus](https://github.com/OhMyOpenCode)
- Co-authored-by: Sisyphus
-
- debug: 加 try-catch+fail+complete 跟踪 uni.showModal 是否执行
- - 疾病史:DISEASE_PRESETS(10项) → DISEASE_GROUPS(8组54项★菌群源),分类折叠多选,★角标说明,已选区设确诊时间(年月选择器)
- - 用药:startDate年月 + durationText自动计算,记不清手动兜底
- - 后端零变更(JSON列透传),v1旧数据回显兼容
- - 7个任务:常量/数据模型/模板/逻辑/用药/保存/验证提交,含完整代码与验证命令
-
- - action-detail: 新增关系强项与提升卡片,基于关系六维分数标记,空态引导关系问卷
- - wealth: 新增财富强项与提升卡片,基于财富四维分数标记
- Ultraworked with [Sisyphus](https://github.com/OhMyOpenCode)
- Co-authored-by: Sisyphus
-
- v2 重设计(基于调研补齐):
- - 疾病史:菌群报告病症风险(20项 PdfParseService 白名单)+ 互联网统计常见病(约40项,附患病率/出处/年份)两源合并去重约50项,分类折叠多选;未列出的保留自定义补充兜底
- - 每条疾病新增确诊时间(年月选择器 yyyy-MM)
- - 用药:每药一条保留,新增开始服药日期→自动计算已服时长,记不清时用时长文本兜底
- - 无 DDL 变更(disease_history/medications 为 JSON 字符串列,结构变化在 JSON 内部)
- - 旧数据兼容:{name,note}/{name,time} 回显置空不报错
-
- - 删除独立的 ReportStatsController,消除同路径下双 Controller 冲突
- - 所有接口路径不变,前端调用无需修改
-
- Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)
- Co-authored-by: Sisyphus
-
- Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)
- Co-authored-by: Sisyphus
-
- Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)
- Co-authored-by: Sisyphus
-
- Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)
- Co-authored-by: Sisyphus
-
- Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)
- Co-authored-by: Sisyphus
-
- Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)
- Co-authored-by: Sisyphus
-
- Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)
- Co-authored-by: Sisyphus
-
- Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)
- Co-authored-by: Sisyphus
-
-
-
- - wisdom-detail: 新增肠胃与认知卡片,含认知指标(谷氨酸/多巴胺/色氨酸等)+引导上传
- - body-detail: 新增指标告警卡片,疾病风险(非低风险)+营养素/氨基酸异常(仅异常项)
- - api.js: 新增 getGutCognitionIndicators/getBodyAbnormalIndicators
- Ultraworked with [Sisyphus](https://github.com/OhMyOpenCode)
- Co-authored-by: Sisyphus
-
- - MindController: /api/mind/neurotransmitters 只返回情绪相关指标(血清素/多巴胺/GABA/色氨酸)
- - WisdomGutController(新): /api/wisdom/gut-cognition 认知指标(谷氨酸/多巴胺/色氨酸/丁酸等)
- - HealthReportController: /api/health/report/body-abnormal 疾病风险+营养/氨基酸异常(仅异常项)
- Ultraworked with [Sisyphus](https://github.com/OhMyOpenCode)
- Co-authored-by: Sisyphus
-
- - chartIsEmpty 和 currentScores 均改用 bodyData
- - 与其他四维度(智/心/行/富)统一走后端API模式
-
- - 新增 goSelfTest 方法 + selfTestTitle/selfTestSub 计算属性(有数据→再次了解·得分;无数据→引导文案)
- - 新增 .self-test-* 样式(复用 health-main 视觉,边距对齐首页 30rpx)
- - 未登录态 discover-container 零改动
- - 设计文档同步:PageBanner 已由 07d897a1 全局移除,① 了解区仅自测卡;补充 sandboxData 判定说明
- - 新增实现计划 docs/superpowers/plans/2026-08-18-homepage-health-funnel.md
-
-
- - 清理遗留的「品牌头部」注释
- - 保留pages.json中配置的导航栏标题作为唯一标题
-
- debug: 加 console 跟踪 report-upload 点击事件链路
- 目的是定位 @click 事件是否真正触发到 methods
-
- - ensureAgreed/startPick/uploadAndGoConfirm 内 var self=this 全部改为箭头函数
- - 修复某些情况下点击上传按钮无反应的问题
-
-
-
- 修复报错,以及升级JDK
- 修复报错,以及升级JDK
- 修复报错,以及升级JDK
### 文档
- 用户画像与推荐系统实现计划
- 添加体脂秤参考资料图片
- 任务系统升级为行为调度中心-整体设计文档
- 将开发规范中 Dify 引用统一改为 LangGraph
- AGENTS.md 新增评论自动回复工具章节,修正 click 触发方式
- 文章钩子追踪清单更新——D26/D27 发布记录与已兑现预告
- API 参考文档纳入开发规范
- 将 API 参考文档纳入开发规范
- 新增 API_REFERENCE.md 索引条目
- 新增后台接口参考文档
- 健康现状档案 v2 实现计划 — 疾病史两源预置清单+确诊时间+服药时长
- 健康现状档案 v2 设计 — 疾病史两源预置清单+确诊时间+服药时长
- 新增参考资料目录文件 - 学生评估PDF、方案docx/pdf、融资规划书PPT
- 首页健康漏斗设计/计划状态同步为已实施
- 首页重构 — 主动健康漏斗设计(方案A:了解→发现→改变)
### 重构
- 首页能量沙盘解锁改判任一维度能量值>0
- 合并 ReportStatsController 到 StatsController,统一 /api/stats 路径
- 移除管理端AI问卷场景配置与LangGraph qna模块
- 删除13个意图/旅程/问卷页面与组件
- 移除首页/我的页意图弹层与旅程卡引用
- 移除api.js中AI问卷/意图/问题域API封装
- 删除AI问卷与画像全部13个文件
- 移除RecommendationController画像推荐端点
- 移除AiGateway动态问卷/画像方法
- 移除AI问卷数据库迁移(229/231)与schema四表定义
- 上传报告入口统一为 ReportUploadCard 组件
### 性能优化
- 合并两次成员接口调用为一次
- 合并两次成员接口调用为一次
## v1.0.1182 (2026-08-21)
### 新功能
- 创建画像实体类和Mapper接口
- 创建画像快照表和歷史表迁移脚本
- 身页面新增疾病风险卡片
### Bug 修复
- 修正Task状态值、Product状态值、删除死代码RULES块、修复PointsLog查询语法
### 其他
- - 展示疾病名称、风险值、等级标签(高风险红/需注意黄)
- - gut-flora 接口确认已为 POST,无需修改
-
## v1.0.1181 (2026-08-21)
### 新功能
- 身页面新增疾病风险卡片
### 其他
- - 展示疾病名称、风险值、风险等级(高风险红/需注意黄)
- - gut-flora 接口已为 POST,无需修改
-
## v1.0.1180 (2026-08-21)
### Bug 修复
- 补充肠道菌群卡片CSS样式
## v1.0.1179 (2026-08-21)
### 新功能
- 身页面新增肠道菌群指标卡片
### 其他
- - 前端 body-detail 页面新增🦠肠道菌群区块:有报告时显示指标明细,无报告时引导上传
- - 显示菌群名称、丰度值、状态(正常/偏高/偏低)及摘要提示
- - 心/智页面已有肠脑轴数据展示,无需改动
-
## v1.0.1178 (2026-08-21)
### Bug 修复
- mind-detail/index 删除孤立多余闭合花括号
### 文档
- 用户画像与推荐系统实现计划
## v1.0.1177 (2026-08-21)
### Bug 修复
- login.vue 删除 return 对象尾随逗号 + report-detail 给 .food-item 补闭合花括号
## v1.0.1176 (2026-08-21)
### Bug 修复
- 修复饮食推荐页面右侧溢出-添加box-sizing和width约束
## v1.0.1175 (2026-08-21)
### Bug 修复
- 统一首页和成长页面今日任务标题命名
## v1.0.1174 (2026-08-21)
### 新功能
- 饮食推荐页面重新设计-修复居中/溢出/快捷入口不可点并全面美化
## v1.0.1173 (2026-08-21)
### 新功能
- 身/心/智页面重构 — 去七维/快捷/精准营养,改指标卡片
### 其他
- - 新增指标卡片展示:体脂率/BMI/血压/血糖/步数/睡眠(身)、情绪稳定性/焦虑/开放性(心)、感知力/专注力/记忆力(智)
- - 后端新增 POST /api/health/indicators 接口,按domain+memberId返回最新指标值
- - DatabaseInitializer迁移252:seed body/mind/wisdom指标定义27条
- - 各维度首页加载对应domain指标数据,点击卡片跳转详情
-
## v1.0.1172 (2026-08-21)
### Bug 修复
- 修复行页面能量沙盘数值不显示问题
- tasks表加parent_task_id列(购买任务→每日使用子任务链)+ schema同步
- health_plans补updated_at/审核字段列,修复selectById Unknown column
### 其他
- - 新增 loadEnergyOverview 方法调用 getEnergyOverview API
- - WuxingSandbox 组件传递 :dimensions/:totalEnergy/:totalHealthIndex 属性
- - 修复 sortedDimensions 因 dimensions 为空导致 point-energy 始终显示 0 的问题
- - 对齐 child-index.vue 页面的正确用法
-
- - schema.sql tasks表同步parent_task_id列定义
-
- - schema.sql同步: health_plans CREATE TABLE补reviewed_by/reviewed_at/review_comment/teacher_id/updated_at
-
## v1.0.1171 (2026-08-21)
### Bug 修复
- 打卡弹窗金额/备注输入框高度不足 — 增加padding和min-height
- 打卡页隐藏原生导航栏,修复双标题 —— navigationStyle: custom 仅保留页面内标题
## v1.0.1170 (2026-08-20)
### 新功能
- 调研任务创建时自动生成AI调研模板
- 购物任务联动-cart/order 动作自动加购/下单
## v1.0.1169 (2026-08-20)
### Bug 修复
- 重新制定时重置viewMode,修复页面空白问题
### 其他
- - step===1 && !viewMode → false(Step1不渲染)
- - viewMode && planDetail → false(查看模式也不渲染)
- - 页面空白
- 同时补充editing和sectionFeedback重置。
- Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)
- Co-authored-by: Sisyphus
-
## v1.0.1168 (2026-08-20)
### Bug 修复
- 修复打卡页面双标题、输入框过小、睡眠页多余功能、心情页样式缺失
### 其他
- - 睡眠打卡:移除照片上传和录音功能(不需要)
- - 心情打卡:补全所有缺失的基础样式,修复布局混乱
-
## v1.0.1167 (2026-08-20)
### 新功能
- 方案审核流程优化 — 用户可选规划师或系统自动出方案
### 其他
- - 新增 teacher-select.vue 规划师选择页,调用 /api/health/plan/available-teachers
- - 新增 HealthPlan.teacherId 字段 + DatabaseInitializer 迁移251
- - 新增 getAvailableTeachers 接口(已绑定+同团队+全量规划师)
- - submitPlan 根据 needTeacher 决定状态:pending_review/published
- - listPendingReviewPlans 支持按 teacherId 过滤
-
## v1.0.1166 (2026-08-20)
### Bug 修复
- 修复微信登录 invalid code (40029) —— 不再 onLoad 预取 login code,改为点击授权时实时获取
### 其他
- 会导致 code2Session 返回 40029 invalid code。login.vue 改为与
- invite/join.vue 一致的模式:getPhoneNumber 中实时 uni.login 获取新 code。
-
## v1.0.1165 (2026-08-19)
### 新功能
- 规划师方案维护功能 — 前端审核页面 + 路由 + API
### 其他
- - cfc-web: 新增 api/healthPlan.js 接口封装
- - cfc-web: TeacherDashboard 快捷入口新增「健康方案审核」
- - cfc-web: router 新增 /teacher-health-plan-review 路由
- - cfc-frontend: health-plan-summary.vue 更新状态展示和成功提示
- 后端已有 c4744618,本次为前端配套
-
## v1.0.1164 (2026-08-19)
### Bug 修复
- 任务列表标题列支持排序,孩子ID改为显示用户名
### 新功能
- 方案维护功能 — 规划师审核发布流程
### 其他
- - DatabaseInitializer: 迁移250 新增审核字段,status枚举扩展 pending_review/published/rejected
- - HealthPlanService: 新增 listPendingReviewPlans/updatePlanContent/approveAndPublish/rejectPlan 方法
- - HealthPlanServiceImpl: savePlan 默认 pending_review 状态,审核通过后生成任务
- - HealthPlanController: 新增 /pending-review/{list,update,approve,reject} 四个端点
- 流程: 用户生成方案 → draft/pending_review → 规划师编辑 → 审核通过(published) → 自动生成任务
-
## v1.0.1163 (2026-08-19)
### 新功能
- 体脂秤图片采集接入报告上传流程
### 其他
- - report-upload.vue: 新增体脂秤入口卡片 + goBodyFatScale/uploadBodyFat 方法
- - bodyfat-confirm.vue: 新建指标确认页(可编辑数值 + 绑定成员 + 保存)
- - utils/api.js: 新增 saveBodyFatMetrics API
- 后端:
- - HealthReportController: 新增 /report/bodyfat-upload(图片上传+AI识别)+ /report/bodyfat-save(保存指标)
- - BodyFatScaleService: 图片→DeepSeek-VL OCR→提取指标→存 indicator_values
- - DatabaseInitializer: 注释废弃的 seedFullRegionData() 调用
- - pom.xml: source/target 改为 1.8(适配当前 JDK 环境)
- - application.yml: 新增 deepseek.vision-* 配置
-
## v1.0.1162 (2026-08-19)
### 其他
- 账户权限分离
- 修复报错,以及升级JDK
- 修复报错,以及升级JDK
- 修复报错,以及升级JDK
## v1.0.1161 (2026-08-19)
### Bug 修复
- health-main 移除已删除报告入口 + growth-emotion-checkin 添加照片上传
### 文档
- 添加体脂秤参考资料图片
### 新功能
- checkin 页面合并远端 UI 改进 + 保留 getPhotoKey 修复
## v1.0.1160 (2026-08-19)
### 新功能
- 体脂秤图片数据采集器 — 修复 Java 8 兼容性问题
### 其他
- - 修复 ArrayNode/ObjectNode 类型不匹配
- - 修复 String.isBlank() → trim().isEmpty()
- - 修复 var → 显式类型声明
- - 编译验证通过
-
## v1.0.1159 (2026-08-19)
### 新功能
- 体脂秤图片数据采集器
### 其他
- - 调用 DeepSeek-VL 视觉模型 OCR 提取体脂秤指标(体重/BMI/体脂率/肌肉量等)
- - 自动创建 indicator_definitions + 保存 indicator_values(source_type=body_fat_scale)
- - 新增 AdminBodyFatScaleController:
- - POST /api/admin/bodyfat-scale/images/list — 列出图片
- - POST /api/admin/bodyfat-scale/images/analyze — 单张分析预览
- - POST /api/admin/bodyfat-scale/save — 手动保存指标到成员
- - POST /api/admin/bodyfat-scale/batch — 批量处理多张图片
- - application.yml 新增 bodyfat-scale.image-dir 和 deepseek.vision-* 配置
-
## v1.0.1158 (2026-08-19)
### 文档
- 任务系统升级为行为调度中心-整体设计文档
### 其他
- - 缺口:无前置任务/频率单一/购物零联动/require_input 无强制/无 start 两阶段
- - 设计:action_type 声明式联动、TaskEngine 集中判定、task_executions 执行记录、三阶段实施路径
- Ultraworked with [Sisyphus](https://github.com/OhMyOpenCode)
- Co-authored-by: Sisyphus
-
- - tasks.vue 今日任务:按 actionType 渲染按钮文案(开始游戏/专注/填写/阅读/报名/购物),locked 灰态+解锁提示,start_required 先开始再完成,require_input 弹填写面板提交内容
- - create-task.vue 新增联动动作/两阶段/填写式开关+商品ID配置,重复设置扩展隔天/每月,补全 repeatTypeLabel/actionTypeLabel computed
- Ultraworked with [Sisyphus](https://github.com/OhMyOpenCode)
- Co-authored-by: Sisyphus
-
- - 新增 task_executions 执行记录表(started/finished 两阶段落库)+ focus_sessions.task_id
- - DatabaseInitializer 迁移248:ensureColumn 幂等 + CREATE TABLE IF NOT EXISTS
- - TaskService:completeTask 前置校验/填写强校验/两阶段校验/最短时长校验,完成后解锁后置任务;新增 startTask(pending→in_progress 并记录 execution)
- - TaskController 新增 POST /api/tasks/{id}/start;complete 支持 content/contentType
- - RepeatTaskGenerator 重构为频率分派:hourly/daily/every_other_day/weekly/monthly,每小时 cron 扫描,兼容旧 repeatType
- - CreateTaskDTO/CompleteTaskDTO 透传新字段
- Ultraworked with [Sisyphus](https://github.com/OhMyOpenCode)
- Co-authored-by: Sisyphus
-
### 新功能
- 任务系统升级-行为调度中心前端(动作联动/两阶段/填写式完成)
- 任务系统升级-行为调度中心后端(前置任务/频率任务/两阶段/填写式完成)
## v1.0.1157 (2026-08-19)
### 新功能
- 健康方案页重写为多步骤结构化编辑流程
## v1.0.1156 (2026-08-19)
### 文档
- 将开发规范中 Dify 引用统一改为 LangGraph
### 其他
- - AiGateway.java: 日志消息更新
- - AIChatController.java: 注释和方法引用更新
- - ContextApiController.java: Javadoc 更新
- - ButlerController.java: Operation summary 更新
- - MealRecommendController.java: 变量名 difyResp→langgraphResp
- - KnowledgeBaseController.java: 依赖注入名更新
- - DifySyncService → LanggraphSyncService(类名/方法名同步)
- - DanKnowledgeBaseService.java: 依赖引用更新
- - AGENTS.md: AI集成说明更新
- - PROJECT-OVERVIEW.md: 历史条目中DifySyncService→LanggraphSyncService
-
## v1.0.1155 (2026-08-19)
### 新功能
- 评论自动回复脚本 comment_reply.py——CDP 驱动,click 修复与残缺选择器修复
- 新增 D26/D27/D28 文章稿、推流试验稿及内容草稿
### 文档
- AGENTS.md 新增评论自动回复工具章节,修正 click 触发方式
- 文章钩子追踪清单更新——D26/D27 发布记录与已兑现预告
## v1.0.1154 (2026-08-19)
### 新功能
- 照片自动情绪识别 — 后端 AI 调用 + 前端真实 API
### 其他
- - 新增 EmotionRecognitionResult DTO(情绪列表+moodWeather)
- - AIService.sendEmotionRecognition(): 调用 Dify 情绪识别 Workflow
- - EmotionCheckinService.analyzeEmotionFromImage(): 解析结构化结果
- - EmotionCheckinController: POST /api/mind/checkin/emotion/recognize
- - application.yml: dify.emotion-api-key 配置项(空=mock模式)
- 前端:
- - analyzeEmotion() 改为真实 API 调用(上传+识别两步)
- - 识别结果自动填充 aiResult,支持 applyAiTags 应用标签
- - 提交时复用已上传的 photoUrl,避免重复上传
-
## v1.0.1153 (2026-08-19)
### 新功能
- 照片自动情绪识别 — Dify AI 图像分析 + 前端接入
### 其他
- - AIService.sendEmotionRecognition(): 调用 Dify 情绪识别 Workflow,支持 mock 兜底
- - EmotionCheckinService.analyzeEmotionFromImage(): 解析结构化情绪列表
- - EmotionCheckinController: 新增 POST /api/mind/checkin/emotion/recognize
- - application.yml: 新增 dify.emotion-api-key 配置项
-
## v1.0.1152 (2026-08-19)
### Bug 修复
- 系统提示词INSERT列数不一致 + 知识库embedding TPM重试 + tags_str类型修复
## v1.0.1151 (2026-08-19)
### Bug 修复
- action-detail/wealth/wisdom-detail 修复 :key 表达式
### 重构
- 首页能量沙盘解锁改判任一维度能量值>0
### 其他
- Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)
- Co-authored-by: Sisyphus
-
## v1.0.1150 (2026-08-19)
### 新功能
- HealthPlan后端重构 - planJson/status字段+regenerate-section接口
## v1.0.1149 (2026-08-19)
### 新功能
- 首页区块顺序调整为 1-2-9-7-8-5-6-4-3-10-11
- 健康方案生成工作流重构 - LangGraph结构化方案+Java对接
- LLM推送数据PII脱敏(智能脱敏)
### 其他
-
- - FamilyContextService: 用户/孩子姓名脱敏
- - AiGateway.chat/generateQuestionnaire/generateMenu/generateHealthPlan: 入口脱敏
- - AIService: sendNutritionMessage/sendTongueDiagnosis/runWorkflow/enrichInputsWithMemory/mirrorConversation/getContext/requestSummaryAsync: 入口脱敏
- - 化名映射: userId+salt→SHA-256→固定化名, 保证AI可识别同一用户
-
- - 幂等检查加 deadline 日期窗口过滤,避免历史任务阻塞当天生成
- - RepeatTaskGenerator 每天凌晨5点可正确识别并再生方案任务
-
### Bug 修复
- 方案任务设置repeatType=daily,幂等检查限定当天deadline
## v1.0.1148 (2026-08-19)
### 文档
- API 参考文档纳入开发规范
- 将 API 参考文档纳入开发规范
### 其他
- - cfc-backend/AGENTS.md:新增接口前三步检查流程(复用→修改→新增)+ 废弃接口 410 处理
-
- - AGENTS.md:接口规范补充「新增接口前查阅文档」和「废弃接口处理」
- - cfc-backend/AGENTS.md:新增接口前三步检查流程(复用→修改→新增)
- - 废弃接口统一标记 410 + @Deprecated
-
## v1.0.1147 (2026-08-19)
### 文档
- 新增 API_REFERENCE.md 索引条目
- 新增后台接口参考文档
### 其他
- - 标注已废弃接口(7 处,返回 410)
- - 列出待清理废弃接口清单
- - 新增接口检查清单与流程
-
## v1.0.1146 (2026-08-19)
### Bug 修复
- 健康方案成员选择选中状态增强
### 其他
- - 勾选圆圈 36rpx->44rpx,未选时透明打勾文字(不显示),选中时橙色填充✓
- - 步骤标题行加已选人数 badge(橙色胶囊标签)
- Ultraworked with [Sisyphus](https://github.com/OhMyOpenCode)
- Co-authored-by: Sisyphus
-
## v1.0.1145 (2026-08-18)
### Bug 修复
- 心情打卡同步情绪日记—checkinDate 空值兜底为当天
### 其他
-
## v1.0.1144 (2026-08-18)
### 新功能
- 心情打卡同步到情绪日记
### 其他
- - DailyCheckinService.createCheckin 在 moodScore 有值时自动同步到 emotion_checkin 表
- - upsert 逻辑:今日已有记录则更新,否则新建
- - moodScore 1-10 → moodWeather 映射(sunny/cloudy/rainy/stormy)
- - 同步失败不影响主流程
-
## v1.0.1143 (2026-08-18)
### Bug 修复
- 健康方案重做限制改为每日一次
### 其他
- - localStorage key 改为按日期(yyyy-M-d)记录
- - 提示文案同步更新
- Ultraworked with [Sisyphus](https://github.com/OhMyOpenCode)
- Co-authored-by: Sisyphus
-
## v1.0.1142 (2026-08-18)
### 新功能
- 新增 SystemPrompt 管理功能 + web 品牌与产品素材
### 其他
- - Web 管理端: systemPrompt.js API + SystemPromptManagement.vue 管理页
- - cfc-langgraph: requirements_frozen.txt 依赖冻结
- - web/img: 品牌/产品/引用源图片素材(cert/diagram/product-intro/products/ref)
- - axonhub: AxonHub LLM 网关配置(compose+config)
- - docs: web 品牌方向计划文档
- 未追踪 uploads/(临时 json 结果) 不入库
-
## v1.0.1141 (2026-08-18)
### Bug 修复
- 修复报告方案链路与报告详情折叠展示
### 其他
- - HealthPlanServiceImpl 修复任务行正则,编号行任务可正常生成
- - report-detail 移除饮食推荐,肠道菌群/疾病风险/益生菌种/分类/病原菌改为折叠展示
- - cfc-langgraph 增强 PDF 报告解析(营养/药敏/氨基酸/症状字段)、rag 检索与向量化
- - schema.sql 补充新表;DatabaseInitializer/AIService/Layout 相关调整
-
## v1.0.1140 (2026-08-18)
### 新功能
- 健康现状档案 v2 — 疾病史两源预置清单分类多选+确诊时间,用药开始年月自动计算时长 - 疾病史:DISEASE_PRESETS(10项) → DISEASE_GROUPS(8组54项,★菌群源),分类折叠多选,★角标说明 - 确诊时间:年月选择器(fields=month, end限当前月),存 diagnosedAt(yyyy-MM) - 用药:startDate年月 + durationText自动计算(<12月→X个月, ≥12→X年),记不清可手动兜底 - 后端零变更(JSON列透传),v1旧数据({name,note}/{name,time})回显兼容 - 新增 computed.selectedNames + 17 个 CSS 类
## v1.0.1139 (2026-08-18)
### Bug 修复
- 健康方案查看页+报告日期格式
### 其他
- - 会员限制:付费年度家庭会员不限次,非付费会员每月仅可重新制定一次(localStorage 记录)
- - health-main: goPlanSummary 传 planId;报告日期格式化为 yyyy-MM-dd
- Ultraworked with [Sisyphus](https://github.com/OhMyOpenCode)
- Co-authored-by: Sisyphus
-
## v1.0.1138 (2026-08-18)
### 新功能
- DAN 测评报告专用详情页
### 其他
- - 后端 DanReportUploadVO 增加 result 字段,getDetail 返回关联的 DanAssessmentResult 分数
- - 更新 4 处入口跳转:report-list、mind-detail、wisdom-detail、health-main
-
## v1.0.1137 (2026-08-18)
### Bug 修复
- 保单管理页居中+控件高度
### 其他
- - insurance-add .form-input height 80rpx->88rpx 增大触控区
- Ultraworked with [Sisyphus](https://github.com/OhMyOpenCode)
- Co-authored-by: Sisyphus
-
## v1.0.1136 (2026-08-18)
### Bug 修复
- 移除 report-upload 自定义导航栏,使用原生导航栏避免双标题
### 其他
-
## v1.0.1135 (2026-08-18)
### Bug 修复
- confirmText 改为4字以内,移除debug日志和红色横幅
### 其他
- '同意并继续'(5字) 导致 showModal 静默失败,弹窗不出现。
- 改为 '同意继续'(4字),同时移除所有 debug 代码。
-
## v1.0.1134 (2026-08-18)
### Bug 修复
- AiGateway 缺少 @PostConstruct import 导致编译失败
## v1.0.1133 (2026-08-18)
### Bug 修复
- 财商打卡页居中+控件高度 - 容器宽度约束+input padding增大
### 其他
- - .form-input padding 16rpx->22rpx, font-size 26rpx->28rpx 提升触控体验
- Ultraworked with [Sisyphus](https://github.com/OhMyOpenCode)
- Co-authored-by: Sisyphus
-
## v1.0.1132 (2026-08-18)
### 其他
- debug: 加 try-catch+fail+complete 跟踪 uni.showModal 是否执行
## v1.0.1131 (2026-08-18)
### 文档
- 健康现状档案 v2 实现计划 — 疾病史两源预置清单+确诊时间+服药时长
### 其他
- - 疾病史:DISEASE_PRESETS(10项) → DISEASE_GROUPS(8组54项★菌群源),分类折叠多选,★角标说明,已选区设确诊时间(年月选择器)
- - 用药:startDate年月 + durationText自动计算,记不清手动兜底
- - 后端零变更(JSON列透传),v1旧数据回显兼容
- - 7个任务:常量/数据模型/模板/逻辑/用药/保存/验证提交,含完整代码与验证命令
-
## v1.0.1130 (2026-08-18)
### 新功能
- 智行富三页强项与提升卡片-认知/关系/财富强弱项标记
### 其他
- - action-detail: 新增关系强项与提升卡片,基于关系六维分数标记,空态引导关系问卷
- - wealth: 新增财富强项与提升卡片,基于财富四维分数标记
- Ultraworked with [Sisyphus](https://github.com/OhMyOpenCode)
- Co-authored-by: Sisyphus
-
- v2 重设计(基于调研补齐):
- - 疾病史:菌群报告病症风险(20项 PdfParseService 白名单)+ 互联网统计常见病(约40项,附患病率/出处/年份)两源合并去重约50项,分类折叠多选;未列出的保留自定义补充兜底
- - 每条疾病新增确诊时间(年月选择器 yyyy-MM)
- - 用药:每药一条保留,新增开始服药日期→自动计算已服时长,记不清时用时长文本兜底
- - 无 DDL 变更(disease_history/medications 为 JSON 字符串列,结构变化在 JSON 内部)
- - 旧数据兼容:{name,note}/{name,time} 回显置空不报错
-
### 文档
- 健康现状档案 v2 设计 — 疾病史两源预置清单+确诊时间+服药时长
## v1.0.1129 (2026-08-18)
### 重构
- 合并 ReportStatsController 到 StatsController,统一 /api/stats 路径
### 其他
- - 删除独立的 ReportStatsController,消除同路径下双 Controller 冲突
- - 所有接口路径不变,前端调用无需修改
-
## v1.0.1128 (2026-08-18)
### Bug 修复
- 解决 merge 冲突 - health-main/index-home 合并冲突 & AiGateway 保留
## v1.0.1127 (2026-08-18)
### Bug 修复
- 同步远端重构合并 + 保持 :key 修复与 trial 环境地址
## v1.0.1126 (2026-08-18)
### 重构
- 移除管理端AI问卷场景配置与LangGraph qna模块
- 删除13个意图/旅程/问卷页面与组件
- 移除首页/我的页意图弹层与旅程卡引用
- 移除api.js中AI问卷/意图/问题域API封装
- 删除AI问卷与画像全部13个文件
- 移除RecommendationController画像推荐端点
- 移除AiGateway动态问卷/画像方法
- 移除AI问卷数据库迁移(229/231)与schema四表定义
### 其他
- Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)
- Co-authored-by: Sisyphus
-
- Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)
- Co-authored-by: Sisyphus
-
- Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)
- Co-authored-by: Sisyphus
-
- Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)
- Co-authored-by: Sisyphus
-
- Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)
- Co-authored-by: Sisyphus
-
- Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)
- Co-authored-by: Sisyphus
-
- Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)
- Co-authored-by: Sisyphus
-
- Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)
- Co-authored-by: Sisyphus
-
## v1.0.1125 (2026-08-18)
### 性能优化
- 合并两次成员接口调用为一次
### 其他
-
## v1.0.1124 (2026-08-18)
### 性能优化
- 合并两次成员接口调用为一次
### 其他
-
## v1.0.1123 (2026-08-18)
### 文档
- 新增参考资料目录文件 - 学生评估PDF、方案docx/pdf、融资规划书PPT
## v1.0.1122 (2026-08-18)
### 新功能
- 心身智三页肠脑轴卡片-情绪/认知指标过滤+身体异常告警
- 肠脑轴指标过滤+异常指标告警-认知/情绪分类+身体异常指标端点
### 其他
- - wisdom-detail: 新增肠胃与认知卡片,含认知指标(谷氨酸/多巴胺/色氨酸等)+引导上传
- - body-detail: 新增指标告警卡片,疾病风险(非低风险)+营养素/氨基酸异常(仅异常项)
- - api.js: 新增 getGutCognitionIndicators/getBodyAbnormalIndicators
- Ultraworked with [Sisyphus](https://github.com/OhMyOpenCode)
- Co-authored-by: Sisyphus
-
- - MindController: /api/mind/neurotransmitters 只返回情绪相关指标(血清素/多巴胺/GABA/色氨酸)
- - WisdomGutController(新): /api/wisdom/gut-cognition 认知指标(谷氨酸/多巴胺/色氨酸/丁酸等)
- - HealthReportController: /api/health/report/body-abnormal 疾病风险+营养/氨基酸异常(仅异常项)
- Ultraworked with [Sisyphus](https://github.com/OhMyOpenCode)
- Co-authored-by: Sisyphus
-
## v1.0.1121 (2026-08-18)
### Bug 修复
- pages.json 删除多余右花括号修复 JSON 语法
## v1.0.1120 (2026-08-18)
### Bug 修复
- 健康主页身维度雷达图改用真实API数据
### 其他
- - chartIsEmpty 和 currentScores 均改用 bodyData
- - 与其他四维度(智/心/行/富)统一走后端API模式
-
## v1.0.1119 (2026-08-18)
### 文档
- 首页健康漏斗设计/计划状态同步为已实施
### 新功能
- 首页健康漏斗重构 — 了解区自测卡 + 四段式区块重排
### 其他
- - 新增 goSelfTest 方法 + selfTestTitle/selfTestSub 计算属性(有数据→再次了解·得分;无数据→引导文案)
- - 新增 .self-test-* 样式(复用 health-main 视觉,边距对齐首页 30rpx)
- - 未登录态 discover-container 零改动
- - 设计文档同步:PageBanner 已由 07d897a1 全局移除,① 了解区仅自测卡;补充 sandboxData 判定说明
- - 新增实现计划 docs/superpowers/plans/2026-08-18-homepage-health-funnel.md
-
## v1.0.1118 (2026-08-17)
### 文档
- 首页重构 — 主动健康漏斗设计(方案A:了解→发现→改变)
## v1.0.1117 (2026-08-17)
### Bug 修复
- 内联弹窗逻辑到 pickFile/takePhoto,消除方法调用链断裂问题
### 其他
-
## v1.0.1116 (2026-08-17)
### Bug 修复
- 移除所有页面中的PageBanner组件,消除双层标题
### 其他
- - 清理遗留的「品牌头部」注释
- - 保留pages.json中配置的导航栏标题作为唯一标题
-
## v1.0.1115 (2026-08-17)
### 其他
- debug: 加 console 跟踪 report-upload 点击事件链路
- 目的是定位 @click 事件是否真正触发到 methods
-
## v1.0.1114 (2026-08-17)
### Bug 修复
- 迁移249 file_record补file_type/description列,修复Unknown column错误
## v1.0.1113 (2026-08-17)
### 重构
- 上传报告入口统一为 ReportUploadCard 组件
## v1.0.1112 (2026-08-17)
### Bug 修复
- 允许 cfc.iwintrue.com 访问后端 API
## v1.0.1111 (2026-08-17)
### Bug 修复
- 责任声明勾选改方法调用+箭头函数消除this丢失隐患
- 修复行页面FamilyEnergyBar标签断裂导致模板文本裸露
### 其他
- - ensureAgreed/startPick/uploadAndGoConfirm 内 var self=this 全部改为箭头函数
- - 修复某些情况下点击上传按钮无反应的问题
-
### 新功能
- 今日任务和报告上传移至推荐阅读上方,推荐商品移到底部
## v1.0.1110 (2026-08-17)
### 新功能
- 列头排序增强 — 单列循环 + 多列组合排序
### 其他
- - sort.css: 新增 sort-index badge 样式(绿色升序/橙色降序)
- - 9个管理页面列头直接显示排序序号badge
- - Foods.vue: 清理重复方法定义
-
## v1.0.1109 (2026-08-17)
### Bug 修复
- 请求超时提升至60s + 复制新建按钮loading态
### 其他
- - ArticleEdit 复制并新建按钮加 loading 防重复点击
- Ultraworked with [Sisyphus](https://github.com/OhMyOpenCode)
- Co-authored-by: Sisyphus
-
- - mind-detail/mind-extra 列表摘要 stripHtml 清理,避免富文本标签直接展示
- Ultraworked with [Sisyphus](https://github.com/OhMyOpenCode)
- Co-authored-by: Sisyphus
-
- - AI 自动标签生成改为 taskExecutor 异步执行,不阻塞 HTTP 响应
- - AdminArticleController.create 捕获业务异常返回 Result.error
- Ultraworked with [Sisyphus](https://github.com/OhMyOpenCode)
- Co-authored-by: Sisyphus
-
### 新功能
- 文章详情mp-html富文本渲染 + 列表摘要去HTML标签
- 文章创建幂等检查 + AI标签生成异步化
## v1.0.1108 (2026-08-17)
### 新功能
- 统一AI接口走Java后端,删除前端直连LangGraph
### 其他
- - 前端4个AI函数改为直连Java /api/ai/*路由
- - 删除langgraphRequest适配层及LANGGRAPH_BASE_URL配置
- - 后端:systemPoints/CF值命名统一,PointsService方法重命名为awardCfPoints/deductCfPoints/getCfPointsBalance
- - 前端ProfileHeader.vue:系统积分改显示为CF值
-
## v1.0.1107 (2026-08-17)
### Bug 修复
- 心理测评DAN部分改为'人格、情绪、自我概念和自驱力测评'
## v1.0.1106 (2026-08-17)
### 新功能
- 认知测评与心理测评补充说明双培强基DAN测评
## v1.0.1105 (2026-08-17)
### 新功能
- 上传报告页新增认知测评、心理测评、情绪打卡三种类型说明
## v1.0.1104 (2026-08-17)
### 新功能
- 小程序 AI 请求统一走 Java 后端
### 其他
- - 前端 4 个 AI 函数改为直连后端 /api/ai/* 路由
- - 删除 langgraphRequest() 适配层及 LANGGRAPH_BASE_URL/DIFY_BASE_URL 配置
-
## v1.0.1103 (2026-08-17)
### 新功能
- 首页能量沙盘门禁引导卡 - 未测评时显示GateLock (sandbox-gate)
- 能量沙盘门禁改家庭级判据 - 任一成员做过五维自检即解锁 (sandbox-gate)
### 其他
- - gate-lock SELF_CHECK 按钮文案对齐五维基础能量检测
- Ultraworked with [Sisyphus](https://github.com/OhMyOpenCode)
- Co-authored-by: Sisyphus
-
- - EnergyController.sandbox 个人视角改用家庭级判据 + selfCheckGateOrFallback 内置兜底 gate(无种子时前端 GateLock 也能渲染引导按钮)
- - getUserUnlockStatus 个人沙盘锁定标志同步家庭级,与 /api/energy/sandbox 一致
- Ultraworked with [Sisyphus](https://github.com/OhMyOpenCode)
- Co-authored-by: Sisyphus
-
## v1.0.1102 (2026-08-17)
### Bug 修复
- 修复组件引用路径与打卡页 :key 表达式
## v1.0.1101 (2026-08-17)
### 新功能
- 里程碑置顶,打卡记录→任务中心,健康报告状态卡片,四种打卡页面支持照片/文字/语音
- 小程序 AI 请求统一走 Java 后端
### 其他
- - 前端 4 个 AI 函数改为直连后端 /api/ai/* 路由
- - 删除 langgraphRequest() 适配层及 LANGGRAPH_BASE_URL/DIFY_BASE_URL 配置
-
## v1.0.1100 (2026-08-17)
### 新功能
- 增加健康问卷确认步骤
### 其他
- - 步骤条新增第3步「健康问卷」
- - Step2「生成方案」改为「下一步」至健康问卷步骤
- - Step3健康问卷:已填写则带出摘要确认,未填写引导去填写
- - Step4确认方案:原Step3内容,regenerate返回Step3
- - 新增healthStatusSummary computed解析健康数据摘要
- - 新增parseLipidText/parseNameList/parseMedText/formatTime辅助方法
- - 新增goFillQuestionnaire跳转健康问卷表单页
- Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)
- Co-authored-by: Sisyphus
-
## v1.0.1099 (2026-08-16)
### 新功能
- 报告上传页移除检测服务商品列表,改为上传报告类型说明
## v1.0.1098 (2026-08-16)
### 新功能
- add 记账打卡 tracking item to daily progress
- replace service grid with insurance policy list
- add 推广收益 icon to achievement grid, navigate to wealth center
- linked SKU 已选区补充关联商品详情跳转入口
- 适配 linked SKU - 选择时动态更新商品信息,下单/加购转发至关联商品
- ProductSkuEditor 双模式(规格变体/关联商品)+ ProductPicker 组件
- 购物车/下单 linked SKU 转发到关联商品
- 管理端商品选择器 API /api/admin/product/linked/list
- specMap 扩展返回 linked 商品摘要,库存为0/已下架不显示
- ProductSkuService 创建/更新支持 linked SKU,跳过 specs 校验
- ProductSku 新增 linkedProductId/label 字段,迁移247
### 文档
- SKU 关联商品选择器实施计划 8 Tasks
- fix 循环关联歧义 — 明确 1 层限制
- SKU 关联商品选择器设计文档 — linked_product_id + label 模型,不迁移存量
### Bug 修复
- LANGGRAPH_BASE_URL 改为 https://ai.etotem.com.cn(微信小程序强制 HTTPS)
## v1.0.1097 (2026-08-16)
### 新功能
- 专项调研页适配 v2 契约 - 按 code 拉取问卷 + 提交选项 id (survey-rework)
- 专项调研重设计 v2 - 统一问卷契约 + 内置默认问卷 (survey-rework)
### 其他
- - flow-intro.vue:surveyTemplateId 取值修正(后端返回平铺字段,兼容嵌套 surveyTemplate.id)
- - api.js:新增 getProblemSurveyQuestions(code)
- Ultraworked with [Sisyphus](https://github.com/OhMyOpenCode)
- Co-authored-by: Sisyphus
-
- - submit 改读 surveyTemplateId(兼容旧 templateId),answers 统一 [{questionId, optionIds}](兼容旧 Map/[{questionText, optionTexts}])
- - ProblemDomainController.list 补平铺 surveyTemplateId 字段(修复 flow-intro 透传断链)
- - 迁移248:survey_templates 内置 3 个问题域问卷种子(空表才插入)+ problem_domains 未绑定才绑定,幂等
- Ultraworked with [Sisyphus](https://github.com/OhMyOpenCode)
- Co-authored-by: Sisyphus
-
## v1.0.1096 (2026-08-16)
### Bug 修复
- 迁移248创建health_report_edit_logs表,修复表不存在错误
## v1.0.1095 (2026-08-16)
### Bug 修复
- 补充移除剩余3处 AI 字样
### 其他
- - AIFloatingAvatar → FloatingAvatar, AITaskCard → TaskCard 组件重命名
- - 政策文档中 AI 相关描述替换为中性表述
- - 29 个文件,1398 行变更
-
## v1.0.1094 (2026-08-16)
### 新功能
- 旅程 stage 3/4 推进 + 购买→方案关联校验 (P1)
### 其他
- - PackageLogisticsController:物流状态非 none → 推进旅程 stage=4(试剂盒已发/样本已收)
- - ProblemPackageController.confirm:确认方案前校验套餐已购买(paid/pending 订单),打通购买→方案关联
- Ultraworked with [Sisyphus](https://github.com/OhMyOpenCode)
- Co-authored-by: Sisyphus
-
- - wealthChildLegacy(119) → wealthAltruism 利他贡献题(分享经验帮助他人)
-
### Bug 修复
- 自测问卷财富子维度题目对齐利他创富四维模型
## v1.0.1093 (2026-08-16)
### Bug 修复
- ProductEdit.vue 修复 editorConfig 初始化被挤出 created() 导致的构建失败
## v1.0.1092 (2026-08-16)
### 其他
- Revert "feat(web): 批量添加列表页分页+排序+横向滚动(109文件)"
-
- - 方案保存后后端 savePlan() 自动调用 generateDailyTasksFromPlan()
- - 生成每日 Task(sourceType=plan, sourceId=plan.id)
- - 修复前:方案内容未入库,后端任务生成链从未触发
-
### Bug 修复
- 方案保存后自动触发每日任务生成链路
## v1.0.1091 (2026-08-16)
### 其他
- Revert "feat(web): 批量添加列表页分页+排序+横向滚动(109文件)"
-
## v1.0.1090 (2026-08-16)
### 新功能
- 富维度重构为利他创富四子维度模型(能力/利他/CF值/素养)
### 其他
- - 家长:能力25% + 利他30% + CF值35% + 素养10%
- - 孩子:学业25% + 利他30% + 积分35% + 素养10%
- - 新增 mapper 注入:FamilyPlatformBalanceMapper(CF值)、ReferralTreeMapper(邀请人数)、GuideMapper(服务商资质)
- - DTO:新增 wealthSkill/wealthAltruism/wealthFx 共用字段,旧字段兼容保留
- - 前端:WealthSubScores.vue、wealth/index.vue、health-main/index.vue 全部适配 4 子维度
- - pages.json:移除不存在的 intent-quiz 页面引用
-
## v1.0.1089 (2026-08-16)
### 新功能
- 方案确认改调生成任务接口 (P0)
- 方案确认生成会员任务 + 补全会员校验绕过路径 (P0)
### 其他
- - api.js:新增 confirmProblemPlan 封装
- Ultraworked with [Sisyphus](https://github.com/OhMyOpenCode)
- Co-authored-by: Sisyphus
-
- - TaskPlanService.generatePlanTasks:plan items 生成可执行任务,打通 ProblemCompletionService 发奖链路
- - TaskController:complete-minigame / batch-complete 补 checkMemberOnly
- - GuideFamilyTaskController:单个/批量审核补会员校验
- Ultraworked with [Sisyphus](https://github.com/OhMyOpenCode)
- Co-authored-by: Sisyphus
-
- Co-authored-by: Sisyphus
-
### 文档
- 功能分析定义表(按会员等级梳理,含前置关卡)
## v1.0.1088 (2026-08-16)
### 新功能
- 批量添加列表页分页+排序+横向滚动(109文件)
- 商品编辑-线上服务者简化为服务商下拉选择
- 健康报告列表增加报告人/报告日期/上传日期
### 其他
- - 67 个页面添加 sortable="custom" 列排序
- - 12 个 teacher/nutritionist/service 页面添加 el-pagination 分页
- - PlanManagement.vue 样板参考实现
-
- Co-authored-by: Sisyphus
-
- Co-authored-by: Sisyphus
-
### Bug 修复
- 恢复 CHANGELOG 至 v1.0.1087(修复 stash 冲突时误取旧版本)
- 方案制定页成员选中效果加强-粗边框投影+头像变色+圆形对勾徽章
## v1.0.1087 (2026-08-15)
### Bug 修复
- 清理菜单管理页残留冲突标记
- 迁移247 user_intents补skip_count/last_skip_at列,修复Unknown column错误
### 新功能
- 菜单编辑改用树形选择器作为上级菜单
### 其他
- - 新增 treeData computed:递归展平菜单树,带 padding 缩进
- - 新增 currentLabel computed:选中后显示面包屑路径(如 系统配置 > 基础管理 > 用户管理)
- - 新增 excludedIds computed:编辑模式下自动排除自身及所有子孙节点,防循环引用
- - 新增 selectParentNode 方法:点击树节点设置 parentId
- - 添加 parent-hint 提示条:显示当前选中上级路径或'顶级菜单'
-
### 样式
- 副标题文案调整
## v1.0.1086 (2026-08-15)
### 新功能
- 通知模板通道多选加公众号选项 (W3)
- 通知五通道模型 - 公众号通道 + 通道抽象 (W3)
### 其他
- - 提示文案:小程序内为内置通道,短信/微信/公众号/电话需接入外部接口后生效
- Ultraworked with [Sisyphus](https://github.com/OhMyOpenCode)
- Co-authored-by: Sisyphus
-
- - NotificationChannel 接口 + NotificationMessage DTO
- - 5 通道实现:
- - InAppNotificationChannel 内置写库
- - Sms/Wechat/Gzh/Phone 外部通道预留 stub(enabled 配置开关 + 日志,TODO 接入网关)
- - NotificationDispatchService 统一分发入口:读模板 → 占位符替换 → 按 channels 多选分发
- - DanReportUploadService / ProblemCompletionService 改走分发服务(移除硬编码/模板辅助方法)
- Ultraworked with [Sisyphus](https://github.com/OhMyOpenCode)
- Co-authored-by: Sisyphus
-
## v1.0.1085 (2026-08-15)
### 新功能
- 单入口问卷弹窗 + 首页跳转修正
### 其他
- - 以后再说调用 /api/user-intent/skip 记录skipCount,最多3次
- - B类跳转改为 /pages/health/ai-questionnaire(原指向domain-list)
- - handleIntentClose 移除旧 intent_skipped 存储标记
- - 后端skip接口、user_intents.skip_count列均已就绪
-
## v1.0.1083 (2026-08-15)
### Bug 修复
- ArticleCategory.vue 修复 el-dialog 标签缺失导致属性裸奔
### 新功能
- 意图问卷入口 + 跳过提醒机制
### 其他
- - UserIntent实体新增skipCount/lastSkipAt字段
- - 新增POST /api/user-intent/skip 接口记录跳过次数
- - 迁移243: user_intents表添加skip_count和last_skip_at列
- 前端:
- - 新增pages/health/intent-quiz.vue意图问卷入口页(三选一:随便看看/先了解自己/解决问题+以后再说)
- - health-main新增showIntentReminder状态,跳过1-2次后显示提醒横幅
- - 跳转逻辑:A类→返回浏览 / B类→AI问卷 / C类→问题域选择
- 设计说明:
- - 所有用户从统一入口开始(intent-quiz页面)
- - 随便看看用户点击以后再说,记录skipCount,最多提醒3次
- - 先了解自己/解决问题用户直接进入AI智能问卷或问题域选择
-
## v1.0.1082 (2026-08-15)
### Bug 修复
- 报告详情页异常数量修复 + 指标自组装异常统计补齐
- 修复动态菜单子菜单名称为空、无子菜单的一级菜单展开箭头问题
### 其他
- 仅 high/low/abnormal/偏高/偏低/异常/缺乏/不足/注意/高风险 计入异常数
- - assembleBlocksFromPayload 生成 indicator 块时携带 abnormalCount
- - report-blocks-renderer indicator 块标题行显示异常数量
-
- - 模板: el-submenu 增加 children.length > 0 条件(无子节点时不渲染展开箭头)
- - key/index: 补充 id 兜底,避免 path 为空时的渲染异常
-
## v1.0.1081 (2026-08-15)
### 新功能
- 商品详情页展示套餐包含明细
- 商品编辑页支持套餐类型及套餐组成配置
- ProductService.detail返回套餐商品组成
- ProductDTO新增bundleItems套餐组成字段
- 迁移246创建product_bundle_items表(套餐商品组成明细)
### 文档
- 商品套餐管理功能实现计划
## v1.0.1080 (2026-08-15)
### 文档
- 更新 PROJECT-OVERVIEW.md v2.8 — SKU价格单位统一分 + 规格选择响应式修复 (7 Tasks 已完成)
- SKU价格统一分单位+规格按钮修复 实现计划
- SKU规格价格统一分单位 + 详情页规格按钮响应式修复设计文档
### Bug 修复
- 详情页规格选择用/,按钮始终可点
- ProductSkuEditor 价格显示/输入采用元,提交采用分 (×100)
- 迁移245 product_skus存量价格×100(元→分),sys_config幂等标记
- 购物车项单价有SKU时用规格价,修复购物车显示商品价而非规格价
- ProductSku/ProductSkuDTO 价格字段 BigDecimal(元)→Integer(分),统一价格单位
## v1.0.1079 (2026-08-15)
### 文档
- 商品套餐管理功能设计文档(建表/管理端配置/小程序展示)
## v1.0.1078 (2026-08-15)
### 新功能
- 我的页面新增当前意图展示与重新选择入口
### 重构
- 统一家庭成员接口迁移到 getFamilyMemberList,修复 quick-survey :key 警告
### 其他
- - api.js 新增 getFamilyMemberList 唯一入口,移除 getFamilyMembers/getVisibleFamilyMembers/listFamilyMembers 废弃导出
- - 迁移 24 处调用点(8 getFamilyMembers + 13 getVisibleFamilyMembers + 3 listFamilyMembers)
- - quick-survey.vue 3 处 :key 表达式改为方法调用
- - api.test.js 测试同步更新
-
## v1.0.1077 (2026-08-15)
### 新功能
- 报告详情直入编辑模式取消返回列表页
### 其他
- - cancelEdit: directEdit 时 uni.navigateBack() 返回报告列表/卡片页,等同原生返回
- - enterEditMode: 重置 directEdit,view 内点编辑后取消仍回 view 模式
- Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)
- Co-authored-by: Sisyphus
-
## v1.0.1076 (2026-08-15)
### Bug 修复
- 报告详情/确认页被检测人选择面板始终列出全部成员
### 其他
-
## v1.0.1075 (2026-08-15)
### 新功能
- 改版v1 通知入首页动态 (W3)
- 改版v1 通知模板管理页 (W3)
- 改版v1 通知模板管理 (W3)
### 其他
- - 未读通知优先显示(isRead=0 在前)
- - 使用 parseDate 解析时间(遵守小程序日期解析规范)
- Ultraworked with [Sisyphus](https://github.com/OhMyOpenCode)
- Co-authored-by: Sisyphus
-
- - 新增 NotificationTemplateManage.vue 管理页
- - 类型/标题/内容模板/推送通道(小程序内/短信/微信/电话)/状态
- - 通道多选 + 占位符提示 {domainName} {reward}
- - 路由注册 notification-template-manage
- Ultraworked with [Sisyphus](https://github.com/OhMyOpenCode)
- Co-authored-by: Sisyphus
-
- - 新增 AdminNotificationTemplateController (/api/admin/notification-template list/save/delete)
- - DanReportUploadService / ProblemCompletionService 改为从模板表读取文案
- - report_ready / reward_granted 支持 {domainName}/{reward} 占位符
- - 表不存在/停用/无记录时回退默认文案
- - schema.sql 同步 notification_templates 建表
- Ultraworked with [Sisyphus](https://github.com/OhMyOpenCode)
- Co-authored-by: Sisyphus
-
## v1.0.1074 (2026-08-15)
### 新功能
- 家庭成员接口统一兼容字段
### 其他
- - FamilyMemberService 新增 listMembersWithFamily() 支持 includeFamily 模式
-
- - 批量替换 controller/service 中 Long.valueOf(map.get().toString()) 模式
- - 修复 4 个 CRLF 文件的全行替换噪声(改用 perl 保留行尾符)
- - 前端 request() 过滤空字符串 ID 字段,防止空 ID 传后端
-
### Bug 修复
- 统一 Long 参数安全解析,修复空字符串导致 NumberFormatException
## v1.0.1073 (2026-08-15)
### 新功能
- 报告列表与健康首页点击 gut_flora 报告直达编辑模式
- 报告详情页支持 mode=edit 参数直入编辑模式
### 其他
- 拼接 mode=edit 参数,跳过查看模式过渡页。
- Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)
- Co-authored-by: Sisyphus
-
- 仅 reportType=gut_flora 生效,draft 流程不受影响。
- Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)
- Co-authored-by: Sisyphus
-
## v1.0.1072 (2026-08-15)
### Bug 修复
- 移除21天科学减重/28天血糖平稳套餐种子数据自动插入
- 移除 health-plan-summary onLoad 中残留的 loadFamilyReports 调用
### 其他
- Co-authored-by: Sisyphus
-
## v1.0.1071 (2026-08-15)
### Bug 修复
- ProfileMenu 组件导入路径修正
### 其他
- Co-authored-by: Sisyphus
-
- Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)
- Co-authored-by: Sisyphus
-
- Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)
- Co-authored-by: Sisyphus
-
- Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)
- Co-authored-by: Sisyphus
-
- Co-authored-by: Sisyphus
-
- Co-authored-by: Sisyphus
-
### 新功能
- 报告列表支持多选软删除 + 点击行直达编辑页
- 报告编辑页路由 + 归档/编辑 API 封装
- 新增报告批量归档接口 POST /report/archive-batch
- sales/index.html 产品介绍分类挂载减重套餐卡片 (4→5篇)
- 新增家庭科学减重套餐产品介绍页 + Agnes生成产品封面图
## v1.0.1070 (2026-08-15)
### 新功能
- 方案保存后自动生成每日任务(P0-3后端)
## v1.0.1069 (2026-08-15)
### Bug 修复
- 修复6处:key表达式警告
## v1.0.1068 (2026-08-15)
### Bug 修复
- 心理雷达图改用10维完整数据(大五+自驱力+情绪稳定性+自我概念)
### 其他
- - EmiReportService.toDTO() 解析 DanAssessmentResult.structuredAnalysis JSON 提取自驱力三维度及自我概念;emotionStability = (emotionScore+resilienceScore+stressCopingScore+selfAwarenessScore)/4
- - 心理雷达图扩展为10维:开放性/尽责性/外向性/宜人性/神经质/自主性/胜任感/归属感/情绪稳定性/自我概念
- - 家庭平均数据同步使用10维字段计算
- - mind-detail页面的emiData.driveAutonomy等字段现在也能正确获取到数据
-
## v1.0.1067 (2026-08-15)
### Bug 修复
- 心理雷达图改用大五人格5维(与mind-detail保持一致)
### 其他
- - scores: opennessScore/conscientiousnessScore/extraversionScore/agreeablenessScore/neuroticismScore
- - avgScores: 同样使用大五人格字段计算家庭平均
-
## v1.0.1066 (2026-08-15)
### 其他
- Co-authored-by: Sisyphus
-
## v1.0.1066 (2026-08-15)
### Bug 修复
- health-plan-summary 成员列表 wx:key 表达式改用方法调用
### 其他
- Co-authored-by: Sisyphus
-
## v1.0.1065 (2026-08-15)
### 新功能
- 首页新增今日任务卡片 daily-task-card + 聚合接口封装
- 新增今日任务聚合服务 DailyOverviewService + 只读接口 POST /api/daily-task/overview
- 改版v1 B类轻问卷(F16) + 首页定向内容(F17)
- 改版v1 问题域管理页 (W1)
- 改版v1 管理端问题域CRUD (W1)
### 其他
- - daily-task-card.vue 自带 onShow 拉取刷新,四分组渲染 + 全部完成空态 + 失败重试
- - index-home 挂载到 JourneyCard 与 WuxingSandbox 之间(登录态容器内,未登录不显示)
- - 遵从小程序限制:无 ?. 可选链、:key 用方法调用
-
- - DailyOverviewService 纯只读,复用现有 healthCheckin/financeCheckin/emotionCheckin/growthTask/task/articleReading/assessment/danReport 查询
- - DailyTaskController memberId 回退链:请求体 memberId → currentMemberId
- - 单元测试 DailyOverviewServiceTest + DailyTaskControllerTest(@SpringBootTest + @MockBean)
-
- Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)
- Co-authored-by: Sisyphus
-
- Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)
- Co-authored-by: Sisyphus
-
- Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)
- Co-authored-by: Sisyphus
-
## v1.0.1064 (2026-08-15)
### 文档
- 统一家庭成员列表接口规范到 AGENTS.md
- 今日任务首页卡片+只读聚合接口实施计划
- 修正每日任务设计文档测评路由指向 results 页
- 每日任务首页卡片+只读聚合接口设计文档
### 其他
-
- - Task1 聚合服务 + Task2 接口 POST /api/daily-task/overview + Task3 前端卡片 + Task4 首页集成
- - 引用签名已对照实际代码自检(checkinDate/hasTodayRecord 等)
-
- (仅小程序接入 + /api/daily-task/overview 只读聚合接口)
- - PROJECT-OVERVIEW.md: 新增实施计划条目
-
## v1.0.1063 (2026-08-15)
### Bug 修复
- report-detail.vue 前端自动从 payload 组装展示块,适配不同报告类型
### 其他
-
## v1.0.1062 (2026-08-15)
### 新功能
- 雷达图对接真实数据 + 新增财富标签 + 显示家庭成员平均数据
- 场景3减肥套餐主线 — 打卡返积分+产品数据+报告自动出方案
### 其他
- - 心理维度: 调用 /api/emireport/latest 获取个人EMI报告(情绪/抗压/自我认知/社会适应/大五综合)
- - 社会性维度: 调用 /api/family/relationship/scores 获取家庭关系质量评分
- - 财富维度: 新增Tab, 调用 /api/energy/sandbox 获取五维能量数据
- - RadarChart 增加 :avgScores 属性显示家庭成员平均值(灰色虚线)
- - 无数据时显示解锁引导文案
- - 后端新增 /api/emireport/family 接口返回家庭所有孩子EMI报告
-
- Co-authored-by: Sisyphus
-
- 1. 当 report_blocks 表无数据时,blocks 为空数组,页面显示'暂无报告内容'。
- 新增 payload 回退展示区:当 blocks 为空但 payload 有数据时,展示综合评分、健康指标、疾病风险。
- 2. 编辑按钮 hasRiskBlocks 条件始终为 false(检查 block.riskLevel 而非 items 内 level),
- 导致编辑按钮永不显示。改为 isGutFlora 条件即可,blocks 为空时按钮文案变为'查看完整数据 ›'
-
### Bug 修复
- DietPreferencesController 处理 familyMemberId 为 null 时优雅降级
- report-detail.vue 缺少 blocks 时展示 payload 回退内容
## v1.0.1061 (2026-08-15)
### Bug 修复
- 方案制定页面修复-移除\\ue601\乱码/双重标题/Step1改为选人
### 其他
- Co-authored-by: Sisyphus
-
## v1.0.1060 (2026-08-15)
### Bug 修复
- health-plan-summary onShow函数体缺}闭合
### 新功能
- 报告审核确认时将食材推荐入库
### 其他
- - saveFoodSuitability() 将 FoodItem 写入 report_food_suitability 表
- - 自动匹配 foodId(精确+模糊匹配 foods 表)
- - schema.sql 同步 report_food_suitability 表定义
-
## v1.0.1059 (2026-08-15)
### Bug 修复
- 统一 memberId 回退链 currentChildId → currentMemberId → userId
- 菌群知识库文章接口 + 分页拉取 + LangGraph timeout 修复
### 其他
- - health-main, growth-main, survey-history, survey-questionnaire
- - diet/index, diet/preferences, diet/records, diet/record-detail
- - api.js getDietPreferences 支持传 data 参数
- 回退链统一: currentChildId → currentMemberId → userId
-
- - 修复性别取值非法(空串/微信码 0/1/2 处理)
- - 修复 SurveyController submit NPE(templateId 判空)
- - 修复 FoodRecommendController userId/foodId 空串 NPE
- - 修复 AdminArticleController toggleFeatured NPE
- - 修复 AdminNoticeController LambdaQuery 参数类型
- - 修复 AdminPurchaseFieldController Map→实体 ClassCastException
- - 修复 DietMealConfigController @RequestParam→@RequestBody
- - 修复 FamilyInviteController scene 改为 JSON 格式
- - 修复 HealthExercise/SleepController memberId 空串 NPE
- - 修复 hasRole roles null 保护
- - LangGraph: java_client timeout 10s→120s, get_microbiome_articles 分页
- - LangGraph: microbiome_loader.py fetch_articles 分页+timeout 120s
- - 导入 809 篇菌群知识库文章到 microbiome_article 表
-
## v1.0.1058 (2026-08-15)
### Bug 修复
- 显式依赖 logback-classic 避免生产环境 NoClassDefFoundError: ThrowableProxy
- 推荐阅读/商品改用首页组件并移到底部,恢复饮食推荐
### 其他
- 官网文案微调:子女传承→代际传承,科学育儿→精准管理
- - 成长百科区:科学育儿·从了解开始 → 精准管理·从了解开始
- - 百科描述同步为全家人视角,不再仅针对孩子
-
- - 推荐阅读: 内联 rec-card → ArticleBookshelf 组件(合并 healthArticles+growthArticles)
- - 推荐区块移至页面底部(DimensionActivities 之后)
- - 恢复被 b725d6883 删掉的饮食推荐 action-card 入口卡片
- - 清理: 移除旧推荐样式、productList API 调用、healthProducts/growthProducts 死代码
- - 兼容: goToArticle/goToProduct 支持对象参数(组件 emit 传入)
-
## v1.0.1057 (2026-08-15)
### 新功能
- 改版v1 C类前端 - 首页旅程集成(F1) + 分包注册
- 改版v1 C类前端 - 问题流/通知共8页面(F4-F11)
- 改版v1 C类前端 - 意图选择弹层(F2) + 旅程进度条(F3)
- 改版v1 C类前端 - 接口封装(F13) + 会员任务角标(F12)
### 其他
- Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)
- Co-authored-by: Sisyphus
-
- Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)
- Co-authored-by: Sisyphus
-
- Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)
- Co-authored-by: Sisyphus
-
- Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)
- Co-authored-by: Sisyphus
-
- Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)
- Co-authored-by: Sisyphus
-
- 1. getReportDetail 传参传了对象 {reportType, reportId},但函数签名只接受单个 reportId,导致后端 NumberFormatException
- 2. blocks 取 self.report.blocks 但后端返回 blocks 在 res.data 层级,导致空数组显示'暂无报告内容'
-
### Bug 修复
- 改版v1 C类调研提交 - 修正旅程阶段映射(3→2)
- report-detail.vue 修复传参错误导致400及blocks获取层级错误
## v1.0.1056 (2026-08-14)
### 新功能
- 北京菌群报告解析集成——指纹检测+表格提取+统一输出
### 其他
- - pdfplumber表格提取SCFA/核心菌属/营养代谢/抗生素/毒性物质
- - 统一输出结构:两种报告类型产出相同字段集
- - 标准报告北京特有字段保持空默认值
-
## v1.0.1055 (2026-08-14)
### 新功能
- 管理后台菜单管理页面(树形CRUD+角色授权弹窗)与动态侧边栏
- 后端菜单管理接口(树查询/CRUD/移动/角色授权/用户菜单)
- 新增菜单管理表结构(sys_menu/sys_role_menu)与数据库迁移+种子数据
## v1.0.1054 (2026-08-14)
### Bug 修复
- 成长页功能修复(基于干净基线重建) - 标题 今日干预进度→今日成长 - 移除 今日打卡/本周调研 items、饮食推荐卡片 - 饮食检查改用 getHealthMealList(/api/health/meal/list) - 推荐商品改用 productList({page:1,size:6}) 修复空列表 - 快捷按钮 4 列 flex 布局(progress-grid) - 保留 tracking-tabs 记录区与成长记录卡
## v1.0.1053 (2026-08-14)
### 文档
- 新增公众号数据驱动优化指南(基于后台分析)
## v1.0.1052 (2026-08-14)
### Bug 修复
- 删除api.js末尾重复的getExerciseList/getSleepList声明
- 修复编译错误——函数声明+key表达式
### 其他
- - ai-questionnaire/result: :key表达式改为方法调用
- - health-status-form.vue: :key表达式改为方法调用
-
## v1.0.1051 (2026-08-14)
### 新功能
- 成长页今日干预进度对接真实 API(运动/睡眠/连续打卡)
## v1.0.1050 (2026-08-14)
### 新功能
- 菜单管理全量初始化 + Layout动态加载
- 移植报告PDF菌群表与食物推荐表解析
### 其他
- - admin_menu种子数据从18条扩展至100+条,覆盖全部现有菜单项
- 家庭运营/任务中心/审核中心/商城营销/知识中心/活动管理/
- 健康饮食/报告解析/家庭服务/业务管理/测评咨询/系统配置/菜单管理
- 前端:
- - Layout.vue新增fetchMenu()方法,启动时从/api/admin/menu/tree加载菜单
- - buildMenuItems()将树形结构转换为el-menu所需格式
- - 接口失败时降级使用硬编码菜单(向后兼容)
- - 菜单管理页可实时修改左侧导航
-
- - pages.json: ai-questionnaire分包path去重(重复root前缀)
- - action/body/mind-detail: 删除},)残留JS语法错误
-
- - 移植 _parse_bacteria_table/_parse_phylum_tables/_parse_taxonomy_levels
- - parse_report_pdf 接入菌群检出详细列表(11分组)与个体化食物推荐表
- - Java 端 convertLgFloraList/convertLgFoodList 解析 LangGraph snake_case 输出
-
### Bug 修复
- 修复编译错误——编码损坏+分包路径+JS语法
## v1.0.1049 (2026-08-14)
### 新功能
- 菜单管理全量初始化 + Layout动态加载
- 改版v1 会员任务标记(B20-22) + 问卷过滤(B23) + 内容标签过滤(B24)
- 改版v1 C类接口 - 问题域/用户意图/通知/专项调研/套餐/物流 + 会员校验 + 报告钩子 + CF奖励
- 菜单管理全量初始化 + Layout动态加载
### 其他
- - admin_menu种子数据从18条扩展至100+条,覆盖全部现有菜单项
- 家庭运营/任务中心/审核中心/商城营销/知识中心/活动管理/
- 健康饮食/报告解析/家庭服务/业务管理/测评咨询/系统配置/菜单管理
- 前端:
- - Layout.vue新增fetchMenu()方法,启动时从/api/admin/menu/tree加载菜单
- - buildMenuItems()将树形结构转换为el-menu所需格式
- - 接口失败时降级使用硬编码菜单(向后兼容)
- - 菜单管理页可实时修改左侧导航
-
- - 原迁移表名写错为 task,导致 tasks 表从未补列
- - 生产 DB 已直连 ALTER 添加(TINYINT DEFAULT 0)即时生效
-
- 官网首页品牌定位改造:切换为「一个人的主动,一家人的健康」+ 家庭精准生活方式管理
- - head meta/og/title/keywords 重新定位
- - JSON-LD SoftwareApplication/Organization/FAQPage 同步
- - Hero 区 badge/主标题/描述/CTA 全部替换
- - About 区 desc + 企业使命
- - 概念区收尾追加 slogan 句
- - 产品区 desc + 精准健康卡桥接代谢主线
- - 五维 subtitle + 身卡 desc 桥接
- - FAQ 首答重写 + 新增 2 条
- 保留:主动健康核心理念、五维体系(身·智·富·行·心)、五行相生相克概念解释
-
- - admin_menu种子数据从18条扩展至100+条,覆盖全部现有菜单项
- 家庭运营/任务中心/审核中心/商城营销/知识中心/活动管理/
- 健康饮食/报告解析/家庭服务/业务管理/测评咨询/系统配置/菜单管理
- 前端:
- - Layout.vue新增fetchMenu()方法,启动时从/api/admin/menu/tree加载菜单
- - buildMenuItems()将树形结构转换为el-menu所需格式
- - 接口失败时降级使用硬编码菜单(向后兼容)
- - 菜单管理页可实时修改左侧导航
-
### Bug 修复
- 迁移237 表名修正 task→tasks(member_only 列)
### 文档
- add D17-D22 article drafts and D25 note
- 数据看板分页抓取26篇完整数据,发布指南更新为25篇完整复盘并新增数据文件
## v1.0.1048 (2026-08-14)
### Bug 修复
- 迁移237 表名修正 task→tasks(member_only 列)
### 其他
- - 原迁移表名写错为 task,导致 tasks 表从未补列
- - 生产 DB 已直连 ALTER 添加(TINYINT DEFAULT 0)即时生效
-
- 官网首页品牌定位改造:切换为「一个人的主动,一家人的健康」+ 家庭精准生活方式管理
- - head meta/og/title/keywords 重新定位
- - JSON-LD SoftwareApplication/Organization/FAQPage 同步
- - Hero 区 badge/主标题/描述/CTA 全部替换
- - About 区 desc + 企业使命
- - 概念区收尾追加 slogan 句
- - 产品区 desc + 精准健康卡桥接代谢主线
- - 五维 subtitle + 身卡 desc 桥接
- - FAQ 首答重写 + 新增 2 条
- 保留:主动健康核心理念、五维体系(身·智·富·行·心)、五行相生相克概念解释
-
## v1.0.1047 (2026-08-14)
### 新功能
- 改版v1 会员任务标记(B20-22) + 问卷过滤(B23) + 内容标签过滤(B24)
## v1.0.1046 (2026-08-14)
### 文档
- add D17-D22 article drafts and D25 note
- 数据看板分页抓取26篇完整数据,发布指南更新为25篇完整复盘并新增数据文件
## v1.0.1045 (2026-08-14)
### 新功能
- 改版v1 C类接口 - 问题域/用户意图/通知/专项调研/套餐/物流 + 会员校验 + 报告钩子 + CF奖励
## v1.0.1044 (2026-08-14)
### 新功能
- 菜单管理全量初始化 + Layout动态加载
### 其他
- - admin_menu种子数据从18条扩展至100+条,覆盖全部现有菜单项
- 家庭运营/任务中心/审核中心/商城营销/知识中心/活动管理/
- 健康饮食/报告解析/家庭服务/业务管理/测评咨询/系统配置/菜单管理
- 前端:
- - Layout.vue新增fetchMenu()方法,启动时从/api/admin/menu/tree加载菜单
- - buildMenuItems()将树形结构转换为el-menu所需格式
- - 接口失败时降级使用硬编码菜单(向后兼容)
- - 菜单管理页可实时修改左侧导航
-
## v1.0.1043 (2026-08-14)
### 新功能
- 当前状态调研健康现状档案 — 后端+前端+LangGraph 全链路
### 其他
- 前端: 档案页 health-status-form.vue + pages.json 注册 + 健康主页入口
- 出方案: health-plan-summary.vue 读取健康现状+饮食偏好, 未填弹窗提醒, 随请求传参
- AI: adapter._to_langgraph_context 提取 inputs.health_status/diet_preferences
- chat_graph.llm_call 注入健康现状/饮食偏好到 SystemMessage (prompt 上下文)
- DI: @Resource, 统一 @PostMapping, JWT userId, upsert 语义
-
## v1.0.1042 (2026-08-14)
### 新功能
- 小程序画像报告页接入推荐卡片
### 其他
- - 推荐卡片: 类型图标 + 标题 + 描述 + 匹配分
- - loadRecommendations() 在 loadReport finally 中调用
- - api.js: 新增 getProfileRecommend 接口
-
## v1.0.1041 (2026-08-14)
### 新功能
- 改版v1数据层 - problem_domains/user_intents/user_notifications 三表 + task.member_only + package_orders物流字段
### Bug 修复
- 修复合并冲突残留
## v1.0.1040 (2026-08-14)
### 新功能
- 小程序画像报告页接入推荐卡片
### 其他
- - api.js: 新增 getProfileRecommend 接口
- - 推荐卡片: 类型图标 + 标题 + 描述 + 匹配分 + 徽章
-
## v1.0.1039 (2026-08-14)
### 新功能
- 画像驱动推荐系统(补全)
### 其他
- 移除冗余的 article_dimension_mapping/activity_dimension_mapping 表
- - 迁移231: member_profile_dimension 表
- - 迁移232: recommendation_logs 追加 recommend_type 字段
- - 迁移233: 历史 Article/Activity dimension_weights JSON → dimension_weights 表
- - ProfileDimensionService: 画像同步 + key→dimension_code 关键词映射
- - ProfileRecommendService: 加权匹配算法(基础得分+需求加成)
- - RecommendationController: POST /api/recommend/profile 端点
- - AiQuestionnaireService.finish() 接入 syncFromProfile
- - RecommendationLog 实体新增 recommendType 字段
-
## v1.0.1038 (2026-08-14)
### 新功能
- 画像驱动推荐系统(阶段1-2)
### 其他
- - 迁移232: recommendation_logs 追加 recommend_type 字段
- - 迁移233: Article/Activity 维度映射一次性迁移脚本
- - schema.sql 同步新增三张表 + ALTER TABLE
- - Entity: MemberProfileDimension / ArticleDimensionMapping / ActivityDimensionMapping
- - Mapper: 三个对应 Mapper 接口
- - ProfileDimensionService: 画像同步 + key→dimension_code 关键词映射(body/mind/wisdom/action/wealth)
- - ProfileRecommendService: 加权匹配算法(基础得分+需求加成20分)
- - RecommendationController: 新增 POST /api/recommend/profile 端点
- - AiQuestionnaireService.finish() 末尾接入 syncFromProfile
- - RecommendationLog 实体新增 recommendType 字段
-
## v1.0.1037 (2026-08-14)
### 文档
- 修订画像推荐设计文档(修正维度编码+补充映射规则+澄清边界)
## v1.0.1036 (2026-08-14)
### 新功能
- 新增后台菜单管理功能
### 其他
- - 新建 AdminMenu 实体/Mapper/Service/Controller
- - 迁移230: admin_menu表 + 18条默认菜单种子数据
- - schema.sql同步新增admin_menu建表DDL及INSERT
- - 接口: POST /api/admin/menu/tree|list|add|edit|delete/{id}|sort
- 前端:
- - 新增 admin/MenuManage.vue 树形表格+增删改弹窗
- - router/index.js 注册 /menu-manage 路由(system:menu权限)
-
## v1.0.1035 (2026-08-14)
### 文档
- 小程序改版设计+分阶段实施计划(需求驱动·逐步解锁,C类问题域闭环优先)
## v1.0.1034 (2026-08-14)
### 文档
- 用户画像驱动推荐系统设计文档
## v1.0.1033 (2026-08-14)
### Bug 修复
- 恢复 f18dd86e 误删为 0 字节的 710 个文件内容(来源 c975fa82,docs/tests/ppt-output/cfc-langgraph 等)
## v1.0.1032 (2026-08-13)
### 新功能
- 福宝/浠宝AI助手会员专属 + 7X24成长教练权益
### 其他
- - 迁移229: membership_benefits新增GROWTH_COACH权益(FAMILY/PREMIUM)
- - MembershipService.canUseFeature: FAMILY/PREMIUM新增mascot_ai功能开关
- - schema.sql同步新增GROWTH_COACH种子行
- 前端:
- - ai/chat.vue: onLoad新增getMyMembership检查,FREE用户重定向会员升级页
- - user-edit/user-edit.vue: 解锁mascot选择区(FAMILY/PREMIUM可见),FREE用户显示升级提示
- - article-detail.vue: startQuiz前检查会员状态,FREE用户跳转升级
- - membership/benefits.vue: 新增7X24小时成长教练权益条目
-
## v1.0.1031 (2026-08-13)
### 新功能
- 小程序逐题对话问卷页 + 画像展示页
- AI 问卷场景配置管理页
- 控制器 — /api/ai-questionnaire/* 会话与场景端点
- 服务层 — 场景 CRUD + start/answer/finish 会话编排 + AiGateway 扩展
- 数据层 — ai_q_scene/session/profile 表 + 迁移 + 实体/Mapper
- /api/v1/qna/advance + /profile 端点与路由注册(LLM 不可用降级 fallback/空画像)
- 动态问卷引擎核心(schemas/prompts/decide_next/generate_profile)
### Bug 修复
- 从 git 历史恢复最小可运行集(config/rag/llm/middleware)
- 恢复官网首页并修正 geo-faq 链接指向
### 文档
- AI动态问卷引擎实施计划(8任务:LangGraph恢复/主流程/端点/种子/工具/AI网关/控制器/前端)
- AI 动态问卷引擎设计 + LangGraph 开发规范
- 当前状态调研健康现状档案实现计划
- 当前状态调研健康现状档案设计
### 其他
- - 架构: Java 会话管理 + LangGraph 无状态推理引擎(/api/v1/qna/advance + /profile)
- - 数据库: ai_q_scene / ai_q_session / ai_q_profile 三表 + 迁移
- - 规范: AI 服务统一走 LangGraph(AiGateway 熔断调用),写入根/后端 AGENTS.md
-
- - web/index.html: geo-faq 专题链接由根目录修正为 articles/ 子目录(8e945bd0 移动后遗留死链)
- - web/logo.png: 恢复被清空的 logo(22KB)
- - web/cf.jpg: 恢复被删除的首页 hero 图(45KB)
-
## v1.0.1030 (2026-08-13)
### 新功能
- 五维页面统一子维度呈现组件
### 其他
- - 子维度评分卡片:标签+描述+分数+等级徽章+进度条
- - 支持 accentColor 自定义主题色
- - 分数分级:≥80 优秀/≥60 良好/<60 待提升
- - 身/智/心/行/富五个详情页面统一接入
- - 财富页新增子维度评分表(在原有水滴组件下方)
- - 各页面保留原雷达图,新增统一子维度卡片区
-
## v1.0.1029 (2026-08-13)
### 新功能
- 成长页面四大打卡功能完整实现
### 其他
- - 修复饮食打卡检查接口(从 /api/diet/record/daily 改为 /api/health/meal/list)
- - 修复心情打卡缺少 memberId 参数问题
- - 统一 4 类打卡状态检查使用 createdAt/checkinDate 日期比较
- - 修复 :key 表达式编译警告(report-blocks-renderer, gates)
- - 移除今日打卡/本周调研快捷按钮,新增睡眠记录
- - 移除饮食主页/饮食推荐独立卡片
-
## v1.0.1028 (2026-08-13)
### 重构
- 心维度子维度命名优化
### 其他
- - EMI四个子维度(情绪管理/抗压能力/压力应对/自我认知)合并为'情绪稳定性'综合指标
- - 后端新增 emotionStability 字段 = (emotion+resilience+coping+selfAwareness)/4
- - 前端雷达图展示统一使用'情绪稳定性'标签
-
## v1.0.1027 (2026-08-13)
### 重构
- 五维页面通俗化改造,让普通人也能看懂
### 其他
- - 身:'七维健康图' → '健康指标',加'身体健康各项指标'说明
- - 智:'情绪商数/心理韧性/神经质' → '情绪管理/抗压能力/情绪稳定性'
- - 富:'认知雷达' → '学习能力评估',加'找出可以提升的方向'说明
- - 行:'家庭关系图谱' → '家庭关系','关系域评估' → '关系质量'
- - 心:'成长溪流' → '财富成长',加'看到每月的成长变化'说明
- 新增得分解读卡片:
- - 每个维度页新增'健康/情绪/学习/关系/财富解读'卡片
- - 80分以上绿色✅,60-80分黄色⚠️,60分以下红色❗
- - 配一句话建议:保持/关注/改善
- 其他:
- - 修复 FamilyMemberStrip 双 v-if 语法错误
- - 新增 .section-sub 和 .score-explain-card 样式
-
## v1.0.1026 (2026-08-13)
### 新功能
- 五维页面新增个人/家庭视图切换
### 其他
- - 个人视图:展示选中家庭成员的维度能量和流水
- - 家庭视图:展示全家该维度平均能量,隐藏成员切换条
- - 切换时调用 /api/energy/sandbox?view=family 加载家庭聚合数据
- - 新增 .view-toggle / .toggle-btn 样式(半透明胶囊按钮)
-
## v1.0.1025 (2026-08-13)
### 新功能
- 成长页运动/睡眠/心情记录真实化 + 修复饮食记录判断bug
## v1.0.1024 (2026-08-13)
### 新功能
- 新增五维能量统一总览页
### 其他
- * 展示全家/个人五维能量条 + 雷达图
- * 成员切换(全家总览/其他家庭成员)
- * 点击维度卡片跳转对应详情页
- - pages.json 注册 energy/index 路由
- - npm run build 通过
-
- - 生产库已直连 ALTER 添加(DECIMAL(10,2)),列类型与代码迁移对齐
- - schema.sql 合并重复的 points_multiplier 定义
-
### Bug 修复
- products.points_multiplier 列类型统一为 DECIMAL(10,2)
## v1.0.1023 (2026-08-13)
### Bug 修复
- 修复FileRecord实体缺fileType/description字段 + DatabaseInitializer迁移228
### 其他
- - DatabaseInitializer迁移228:file_record表添加file_type和description列
- - 修复DatabaseInitializer方法结尾括号错位导致的编译错误
-
## v1.0.1022 (2026-08-13)
### 新功能
- OSS文件管理后台 + 标签系统 + 11K文件回写file_record
- 通关奖励真实发放(CF值+能量)+管理端关卡列表分页
### 文档
- 补写实施计划 - 恢复被清空内容+状态更新为全部完成+追加后续修复记录
### 其他
- - refreshFamilyGates 增加 triggerUserId 重载, 4处钩子(FiveDimensionSelfCheck/FamilyInvite/FamilyMembers/ProductOrder)传入触发用户
- - 前端文案统一: 小程序 gate-lock/gates + 管理端 gates 的'积分'改为'CF值'
- - AdminUnlockGateController.list 分页(selectPage, page/size 参数)
- - cfc-web: getUnlockGateList 透传分页参数 + gates.vue 加 el-pagination
-
## v1.0.1021 (2026-08-13)
### 新功能
- 结算页支持CF值直接兑换优惠券
### 其他
- - CouponService.listUnownedExchangeable:查用户未拥有的有效兑换券
- - checkout.vue:加载CF余额+可兑换券,兑换按钮直接调exchangeCouponByCf
- - 兑换成功后自动移入已拥有列表,刷新余额
- - 产品详情页已有CF值提示(pointsMultiplier>1时)
-
## v1.0.1020 (2026-08-13)
### 新功能
- nutrition_product 增加成份/配料表(ingredients)字段及后台管理展示
### 其他
- - schema.sql: nutrition_product 建表同步 ingredients TEXT 列, suitable_for 升级为 TEXT
- - DatabaseInitializer: 新增迁移228(ingredients 列 + suitable_for MODIFY), 幂等
- - cfc-web: NutritionProducts 列表/详情展示成份配料表
- - 数据已通过独立脚本提交至京东云 RDS 生产库(zxyj)
-
## v1.0.1019 (2026-08-13)
### 新功能
- 完成优惠券兑换闭环 + 兑换记录表
### 其他
- 校验优惠券 → 家庭/单券日限次检查 → 扣家庭池CF → 发券 → 落记录
- - 新增 FamilyPlatformExchangeRecord 实体/Mapper
- - schema.sql + 迁移227 建 family_platform_exchange_record 表
- - 兑换记录表含 userId/familyId/couponId/cfCost/status/redeemCode
- - npm run build + mvn compile 通过
-
## v1.0.1018 (2026-08-13)
### 新功能
- 家庭CF值体系完善
### 其他
- - 修复confirmReceive CF计算:改用totalAmount(原价)而非moneyAmount
- - 新增FamilyPlatformBalanceController(balance/logs/exchange-coupon)
- - FamilyPlatformPointsService新增exchangeCouponByCf方法
- 前端:
- - 商品详情页展示'购此商品可得X CF值'
- - 新增家庭CF值页面(余额+流水+兑换优惠券)
- - 财富页增加'家庭CF值'入口
- - api.js新增family-platform相关接口
-
## v1.0.1017 (2026-08-12)
### 新功能
- 家庭平台积分池后端实现
### 其他
- - 新增 FamilyPlatformPointsService(家庭维度CF值服务)
- - ProductOrderService.confirmReceive 挂点:floor(实付/100)×points_multiplier 发放家庭池
- - WithdrawalService 改走家庭池(freeze/confirmWithdraw/unfreeze)
- - products 表新增 points_multiplier 字段(默认1.00)
- - DatabaseInitializer 迁移226
- - 修复测试编译问题
- - mvn compile + npm run build 通过
-
## v1.0.1016 (2026-08-12)
### Bug 修复
- 导入全量全国省市区数据到 streets 表(31省/369市/2813区)
## v1.0.1015 (2026-08-12)
### 新功能
- 康美日记706产品导入+新字段(价格/销量/来源/图片)+搜索分页
### Bug 修复
- 关卡页与报告渲染组件 :key 改为方法调用,消除非h5平台编译告警
- stable_token重试失败时回退常规token接口
- 成长页推荐卡片 :key 改为方法调用,修复非h5平台编译告警
- 成长页成长回看改名为成长记录,追踪标签移除调研
- 报告上传改走 JD Cloud OSS,LangGraph 解析支持远程 URL
### 其他
- Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)
- Co-authored-by: Sisyphus
-
- saveUploadFile 仍写本地磁盘,LangGraph 容器读不到文件(400 文件不存在)。
- 修复:
- 1. HealthReportController 注入 StorageService,uploadOnly/uploadReport/
- parsePreview 改用 storageService.storeFile → 文件上传到京东 OSS
- 2. parseByDraftId/parsePreview 对远程 OSS URL 直接传 URL 给 LangGraph,
- 本地路径才用 getFilePath(); 本地 Java fallback 用 getFilePath 下载
- 3. 删除不再使用的 saveUploadFile/resolveUploadFilePath 私有方法
- 4. LangGraph report_parse.py 的 file_path 支持 http(s) URL,自动下载到
- 临时文件后解析(不依赖共享 volume 时序)
-
### 文档
- 明确商品积分仅按现金实付部分计算
- 家庭平台积分(CF值)体系设计文档
## v1.0.1014 (2026-08-12)
### 新功能
- kmdiary product sync scripts
## v1.0.1013 (2026-08-12)
### 其他
- update: sync latest from remote (web articles + langgraph config)
## v1.0.1012 (2026-08-12)
### Bug 修复
- ProductPpointManage排序列头+sortableColumns+sort-tag位置修正
## v1.0.1011 (2026-08-12)
### 新功能
- rebuild cfclub with essential project files
## v1.0.1010 (2026-08-12)
### Bug 修复
- 移除报告审核 Tab 及相关路由
- 迁移227 product_skus.id 升级为 BIGINT
- RegionController 移除硬编码数据,改用 StreetService 读取 DB 全量省市区数据
- 迁移226 products 添加 growth_category 列
- 迁移225 articles 添加 growth_category 列
- 成长页推荐只调用一次API,前端按growth_category分组显示
- 推荐接口移除 growth_category 过滤,直接取精选内容
- GrowthRecommendationService 修复 getCategory 调用错误
- 报告详情行距优化、富维度商品封面图URL修复、智维度功能区间距调整
- 修复成就页分包注册路径,健康/成长页移除家庭成员选择条
- LangGraph 容器挂载宿主机上传目录替代命名卷
- getFamilyEnergySandbox 兼容新返回格式,避免16个旧页面崩溃
- 图片路径替换为京东云OSS URL
- 自驱力/自我概念/成长型思维解析改为嵌套Map+中文key的structuredAnalysis真实结构
- 修正 UserController 变量重复声明
- UserController 编译错误 - 修复 getPointsBalance 方法和 log 引用
- 修复测试编译错误和 FoodService 列名映射错误
- 修复 EnergyControllerTest 编译错误
- SortUtil 修复 LambdaQueryWrapper 类型不兼容问题
- 雷达图销毁后停止初始化重试 + 成长页定期调研改名成长回看并防御空项点击
- 我的页面isLoggedIn改为data+onShow赋值,修复登录后仍显示登录前视图
- NutritionProductService 字段名冲突导致 Bean 注入失败
- 补全 FileRecord 实体和 Mapper(JdCloudStorageService 依赖)
- 雷达图标签边界约束 + 底部留白防tabbar遮挡 + 五维卡片标题单行 + 移除闭环图
- diet/record/daily, survey/status, survey/history memberId 为空时优雅降级
- 移除公告分类(27篇文章+68个chunk)
- HealthReportControllerTest 适配 listReports 方法签名变更
- LangGraphAdmin.vue 修复 ES6 spread 语法兼容 webpack4
- 报告列表接口不强制 memberId——未传时回退到家庭报告列表
- 修复测试编译错误——适配 controller 方法签名变更(增加 @RequestAttribute 参数)
- HealthDimensionControllerTest 适配 history 方法签名变更
- LangGraph管理页全屏布局 + 健康检查修复
- LangGraph健康检查修复Java后端状态显示
- LangGraph管理页全屏布局 + Java后端健康检查修复
- 修复重置用户密码接口请求体参数丢失 - data 改为 data: { password }
- 天盘页面 routeDone 路由错误修复 - 导航工具加锁防重复跳转、修复 canvas 混合 API 用法
- TeacherLoginTest 适配 roles 改为 List
- 健康/成长页不传memberId + 后端自动解析当前用户memberId JwtInterceptor对所有角色设置currentMemberId/familyMemberId
- 无 memberId 时跳过健康/成长页数据请求,避免后端 400 空字符串解析错误
- User.roles 改为 List 修复修改角色反序列化错误
- 健康/成长页 memberId 为空修复 - getReportList 传 selectedMemberId、onShow 顺序调整、FamilyMemberStrip 绑定 @select 事件
- 权限不足时跳403而非/,避免无限循环导致栈溢出
- 修复 4Tab 编译错误 - 补回 wealth/index.vue 缺失的 service-item v-for 和 serviceList 数据; 修复 report-detail.vue 和 report-blocks-renderer.vue 的 :key 表达式改为方法调用
- JwtConfig 兼容短密钥,避免 WeakKeyException
- LangGraph管理页改造 + 新增health/coach/generate端点
- 修复预存编译错误(DanshopSyncService引用 + 缺失File/FileOutputStream import)
- 移除维度页未使用的LoginGuideCard import
- 修正指标异常计数与展示不一致
- 修复 parse 读取文件路径重复拼接 uploadBaseDir
- 健康报告上传改用 upload-only 接口
- 删除DanshopSync stub + 实现EnergyService占位方法 + PdfReport用PDFBox渲染 + AiGateway新增generateHealthPlan
- 迁移208 health_gut_flora.detection_rate 列扩容
- 后台管理列表页统一显示用户名而非用户ID
- 移除 @Slf4j 注解,改用显式 Logger 避免编译错误
- CouponService 改用显式 Logger 替代 @Slf4j,修复编译错误
- 健康报告页修复 - memberId兜底、移除自定义导航、指标状态标签、文案优化
- 清理残留成长档案文案 (DimensionIntroCard + profile-main)
- health tab getReportList 空 memberId → 从 store/storage 取当前用户ID
- AdminController 补 @Slf4j + 修复 AdminNoticeController LambdaQueryWrapper 写法
- AdminNoticeController LambdaQueryWrapper eq方法参数类型错误
- 富维度 banner 配色改为琥珀金
- 推荐服务商品状态改 on_shelf 修复 dimension-products 空数组; feat(frontend): 推荐阅读三列书封比例/推荐商品自加载/会员级别样式
- getOrderCounts 接口路径错误导致 404
- growth-main 移除活动维度参数
- home-detail 移除任务维度参数
- member-detail 移除任务维度参数
- index-home 移除维度参数
- wisdom 成员详情页移除维度参数
- wisdom-detail 成员详情页移除维度参数
- mind-detail 成员详情页移除维度参数
- body-detail 成员详情页移除维度参数
- action 成员详情页移除维度参数
- mind 成员详情页移除维度参数
- body 成员详情页移除维度参数
- DimensionTasks 移除维度参数自加载
- DimensionActivities 移除维度参数自加载
- DimensionArticles 移除维度参数自加载
- DimensionProducts 移除维度参数自加载
- 推荐商品接口支持空 dimensionCode 返回全量
- 添加家庭成员数量校验 - 任务分配需≥2人/挑战需≥2参与者/互动双方不能同一人
- createOrder 透传 couponId(会员优惠券此前未生效)
- modifyColumnToText 跳过不存在的表,消除启动日志WARN
- unify section headers + quick bar + task shortcuts; fix(tab-bar): center button position; fix(backend): ClassCastException in purchase field save
- 修复DBI启动日志WARN(RENAME语法+不存在表/列的迁移)
- 管理员登录兼容 BCrypt 密码验证 + 新管理员密码用 BCrypt
- 家庭成员邀请改为小程序原生分享
- 完善信息页面移除 hasFamily 门控 — 老用户编辑时始终显示表单
- 修复我的页面主包引用分包组件导致内容不显示
- adjust position of heart icon and update tab icons
- growth tab 空态不刷新 — hasFamily 加入 children/records 判断
- TabBar 分包冲突 + 自定义TabBar不显示修复
- 缩小推荐商品卡片尺寸
- 能量沙盘调整顺序 - 心在最上,顺时针身智富行
- 修复邀请流程 - 传递familyRole、改用小程序分享
- 创建家庭时自动将创建人加入为家庭成员(修复空心家庭问题)
- 修复 UserService 中 createJoinRequest 调用
- 修复 createJoinRequest 调用参数
- 修复邀请流程 - 保存familyRole、修复轮询逻辑
- 修复 RequestBodyCachingFilter 编译问题
- FamilyMemberStrip centerMemberId watcher 加 immediate + 清理重复 .action-header 样式
- pairwise VO 补齐 isSpouse 与 lastInteractionAt(修复成员详情页 action-sheet 关系标签和上次填写时间显示)
- 修正 parseDate import 语法(named export)
- 移除多余的 String 构造函数调用
- 修复 Java 8 兼容性问题 - readAllBytes 改用 readStream
- 将 Java 11 HttpClient 改为 RestTemplate 兼容 Java 8
- LangGraph 管理页面使用原生 fetch 避免 axios 拦截器问题
- 迁移192 verification_codes.type 添加默认值
- LangGraph 管理页面使用独立 axios 实例避免 CORS 和响应格式问题
- 处理生产日志错误(foods.report_id/score + 知识库JSON + DBI迁移112)
- 修复测试编译与 getTemplates 断言;补充肠道菌群解析参考脚本
- 修复 diet/index.vue 运行时错误
- 饮食首页改造——原生导航栏+空数据弹窗+未配置共餐降级
- 家庭成员扇形展开 - fan-wrap 改 fixed 修复成员错位+不可点击; 半径 280→220rpx
- 修复 FamilyChallengeService.getTemplates 数组越界 Index 7 out of bounds
- 修正身页面饮食入口路径
- 迁移180/181 health_reports.health_report_drafts 缺列修复
- 首页家庭挑战区块增加管理入口跳转 challenge-manage
- 修复 FamilyControllerTest 编译错误 - 废弃接口测试改为无参断言 410
- FamilyMemberStrip fan-wrap 改 v-if 不再遮挡五维页点击; diet :key 表达式改方法调用
- 修复家庭FAB按钮点击失效 + 位置上移
- 恢复添加家庭成员页保存按钮
- 统一 SKU specs 存库为数组格式,修复规格名丢失
- 已登录用户富页面误显'请先登录'的会话过期修复
- 修复 HealthReport 预存编译错误 - HttpServletRequest import / reportMapper 变量名 / remark 字段缺失
- 修复 ContentSharePoster 分享海报 String 属性收到 null 告警
- 修复商品详情页会员身份加载与详情图片显示
- 修正 profile-page.vue 中 Profile* 组件的 import 路径
- 修正 profile-page.vue 移动后的相对路径 import
- 后端身份参数改从JWT推导,不再信任客户端传入
- 移除前端身份参数传递——前端只传memberId,不传userId/familyId/childId
- 将 tabbar 入口页移至 pages/tabs/ 消除与分包 root 的路径冲突
- 修复 meal.py 语法错误
- 修复 tabbar 路径与分包 root 冲突导致的 HBuilderX 编译失败
- 修复路由前缀重复问题
- 修复行/身页面 hasFamily 误判导致 FamilyEmptyState 覆盖内容区
- pages.json 修复 diet 分包错位导致的 JSON 语法错误(HBuilderX 编译失败→白板)
- 修复pages.json饮食分包位置错误 + 饮食模块config引用改为config.js
- 修复 FamilyEmptyState 误显示 - 28处 hasFamily 守卫改为数据优先判断
- 修复编译错误(类型不匹配)
- 多控制器支持 familyId 为空 + WeChat token 过期重试 + 服务/产品改进
- 打卡请求失败时补充错误提示
- 家庭挑战打卡每日限次 + memberId 归属校验
- 商品海报分享未携带封面图(coverImage 未转完整 URL)
- 移除无家庭时的创建或加入家庭弹窗(5001 仅拒绝请求)
- 分享海报封面图按原比例绘制(contain 居中),不再拉伸变形
- 报名弹窗点击家庭成员/添加报名人即关闭(.self 修饰符在 mp-weixin 被丢弃,改用 @click.stop)
- 活动报名弹窗重复导致点击家庭成员关闭弹窗
- checkout.vue methods 间缺逗号语法错误
- 库存流水列表显示商品名称
- 商品详情页移除会员价展示
- 报告确认页 :key 表达式改为方法调用(微信小程序兼容)
- 修复orderService.ship参数不匹配+添加进价字段(purchase_price)到products/product_skus/inventory_inbound_items(迁移177)+同步schema.sql
- 服务商/家长端页面日期解析改用 parseDate(iOS 兼容)
- 商城页面日期解析改用 parseDate(iOS 兼容)
- 奖励/个人中心页面日期解析改用 parseDate(iOS 兼容)
- 推广/会员页面日期解析改用 parseDate(iOS 兼容)
- 家庭/成长/身体页面日期解析改用 parseDate(iOS 兼容)
- 活动/任务/孩子页面日期解析改用 parseDate(iOS 兼容)
- 测评/心智页面日期解析改用 parseDate(iOS 兼容)
- 健康/饮食维度页日期解析改用 parseDate(iOS 兼容)
- 组件日期解析改用 parseDate(iOS/HarmonyOS 兼容)
- 打卡/活动详情/推广/结算页 fixed 元素移出 scroll-view(iOS 兼容)
- 迁移174 product_skus添加min_stock_alert列+同步schema.sql(SKU库存预警)
- 迁移173 创建库存管理4张表(inventory_transactions/counting_records/inbound_orders/inbound_items)+ 同步schema.sql
- 安全加固——SQL日志/密钥外部化/BCrypt限流/后台防重
- 迁移172 products添加min_stock_alert列+同步schema.sql(库存管理功能遗漏)
- Controller gutFlora 入库补全 taxonomy+pathogen 8 列表 (对齐 Service); 确认页新增 taxonomy 分类组成 + 病原菌 + 益生菌种区块(采到啥显示啥)
- gender枚举校验+MindFortuneController空值防御 - UserService.updateUserInfo: gender 仅接受 male/female,修复 Data truncated 错误 - FortuneServiceImpl: generatePlaceholderFortune/getFamilyFortune 添加 familyId 空值校验 - MindFortuneController: 三个端点添加 familyId 空值检查,返回友好提示
- make LangGraph URL configurable via @Value + app.yml (IMPORTANT-3) + overview key normalization (BLOCKING-1) + Docker deployment TODO comment
- normalize Chinese→English overview keys in ReportParseAgent (BLOCKING-1)
- add audit logging for family_id/user_id + trailing newline
- register report_parse router in main.py (missing include_router)
- 心维度页面 loadHealthAlerts/loadMilestones 移除残留 familyId 存储读取(后端已 JWT 派生)
- add raise_for_status to expose real LLM HTTP errors
- 心维度页面 milestones/health-alerts 传入实际 familyId 替代 {} 对象
- MindFortuneController 添加 userId 为空检查(过期JWT被设为匿名用户时抛出'用户不存在')
- detect_format 兜底分支改为返回 inline(修复同义反复)
- compose 显式覆盖 JAVA_CONTEXT_URL 指向宿主机 9082,修复容器内 chat load_context 回调 Java 失败
- DatabaseInitializer.initializeDatabase() xzyj→zxyj 数据库名拼写错误
- 问卷推理超时防护 — gunicorn timeout 60→300s + ChatOpenAI timeout=180/max_retries=1
- 问卷生成服务接入旧入口 — src 路由重构为 router + LLM env 兼容 + healthcheck 修复
- GraphState 补 _prompt 字段 + 测试 mock 目标修正为模块内引用
- schema.sql 移除重复的 guide_commissions CREATE TABLE 空壳行(导致 initializeTables 正则匹配合并成畸形 SQL)
- 迁移166 payment_orders添加group_no/period_no列(会员拆单支付)
- 修复图片上传 URL 语法错误,清理认知测评/成长报告重复接口定义,修正注释乱码
- 修复健康报告上传 URL 语法错误,首页宫格替换为记录互动/家庭天盘/成员管理,清理重复的 getChildOverview 定义
- 迁移165 virtual_goods_config添加goods_price列(会员道具价格,用于拆单判断)
- controller parameter signatures, test compilation fixes
- 迁移163 为family_challenge添加creator_id列(原迁移158在runMigration100死代码中从未执行)
- 修复WXSS中文类名编译错误 + 恢复getPublicConfig函数
- resolve duplicate exports in api.js and syntax errors in report-upload.vue
- 补全打卡系统缺失的 schema.sql 建表 + 迁移 + 小程序前端打卡功能
- 购物车结算页传递SKU信息到下单
- 防重复提交整改——补齐唯一约束/统一订单号/修复竞态/批量前端守卫
- 上报健康报告页加载即崩溃 - 移除未实现的 getPublicConfig 调用
- _roundRect arcTo missing parameter in ContentSharePoster
- 去掉指标项上的状态文字标签,只保留颜色
- discardReportDraft传参修复 - 对象改为直接传draftId
- FamilyMemberStrip 编辑资料补全 nickname/gender/phone/birthday query 参数
- 迁移155-157 创建 interaction_logs/questionnaire_snapshots/questionnaire_responses 三张缺失表
- report-upload member selector + api.js dead code removal + comment mojibake restoration
- extractInlineNamesFromRegion substring 越界保护
- 补充PDF解析缺失指标 - 菌群层级表/致病菌/其它重要菌属/病原菌属
- 商品SKU规格specs字段保存失败
- 维度首页推荐阅读补传 dimensionCode,与知识中心一致
- 商城首页/搜索页商品价格显示放大100倍(漏除100)
- activity 详情/列表封面拼接 API_BASE_URL
- call applyDisplayState for guests so displayStatus/registrationStatus are always populated
- 邀请接口相关修复
- 微信安全检测改用stable_token接口避免'not latest'冲突
- 商品详情页修复 — 封面轮播、字段映射修正、按钮等大
- CORS放行111.228.6.214; 实现/article/updated-since增量查询接口
- 家庭地址编辑与区域匹配页面消除 $http 引用并接入真实接口
- 地址选择器改用标准 API 封装 - 修复省市选择控件无法使用
- 行Tab页推荐阅读修复 - coverImage补传 + actionArticles过滤修正(indexArticles而非articles)
- 心/智/行首页推荐阅读补传 coverImage 修复封面图不显示
- 推荐商品组件移除五维权重徽章展示
- 新建商品维度权重默认值未初始化导致保存失败
- 首次登录创建家庭后跳转到带底部TabBar的行首页
- self-check 页面 :style 空对象 {} 改用字符串避免 WXML 编译错误
- 移除 DatabaseInitializer 残留冲突标记行 - 修复生产构建失败
- 修复 Playwright addInitScript 单参数传参 bug + 远程 E2E 测试套件
- PaymentService 微信支付V3解密用原始API密钥而非SHA-256哈希
- 商品详情原生分享补上 setShareInfo - 分享路径带商品ID和邀请码
- resolve merge conflict in tap-water-pollution.html (accept upstream version)
- 圈子页无 childId 时跳过请求, 后端 memberId 空串防御 - 修复 discover 500 与 my-circles 400
- ActivityControllerTest 适配活动模块升级后的接口签名
- 上传存储路径统一 upload.base-dir - 修复 transferTo 相对路径落盘失败与 /uploads URL 404
- VirtualGoodsConfig.save() 重命名 saveConfig() 避免 saveOrUpdate 递归 StackOverflow
- 会员接口匿名访问返回 FREE 空数据 + getMemberLevel 查询 LIMIT 1
- 修复成员条移除后不刷新 + 可见成员列表字段缺失
- 迁移151 growth_records 补齐学校/年级7列 - 修复 Unknown column 'school'
- List.of 替换为 Arrays.asList 兼容 Java 8
- 完善 PDF 解析服务 - 支持 inline 格式、Kangxi 部首归一化、指标去重、白名单过滤
- 迁移148 payment_orders.user_coupon_id 兜底添加
- globalData.currentChildId 替换为 uni.getStorageSync('currentChildId'),修复孩子视角切换数据失效
- getApp().globalData.baseUrl/apiBase 替换为 config.API_BASE_URL,修复 uploadFile invalid url 与图片加载
- 消除开发者工具告警 - getSystemInfoSync 弃用替换为 getWindowInfo, 修复 article-center articles prop 非数组类型错误
- 修复 ArticleBookshelf relatedDimensions 数组拆分崩溃与 switchTab 非 TabBar 路由系统错误
- FamilyRelationGraph 力导向模拟增加动能收敛检测, 布局稳定后自动停止避免永续占用主线程
- add missing goodsCategory API to fix empty product list on shop index page
- offerId 改为支付应用ID并按官方 camelCase JSON 串重建 signData 签名
- 统一商城首页路径并修复 switchTab 非 TabBar 跳转
- 维度权重保存移除 CAST(? AS JSON) — MariaDB 不兼容
- interaction/add 修复 familyId 为空报错——后端按 userId 自动解析
- 生成海报二维码必须登录 — 拦截 anonymous 流量反复触发 access_token 'not latest'
- 开通会员页改用 getMembershipPlans 获取实际配置价格
- 未登录时跳过邀请码请求与维度商品展示守卫
- GlobalExceptionHandler, ErrorLoggingFilter, migration102 call, article_admin_status, ContentRecommendService
- wangEditor v5 上传图片改用customInsert+限制5M+错误提示
- 图片上传multipart大小限制+微信安全检测超过1M跳过
- 文章详情页封面图和正文图片拼接 API_BASE_URL,修复未登录时相对路径图片加载失败
- 新建商品时显示SKU维护入口
- wangEditor 初始化配置提前到 created 生命周期
- 更新VirtualPayServiceTest发货推送断言为handleVirtualPaySuccess路由
- 修复外部提交引入的语法错误,恢复小程序构建
- 虚拟支付Task4评审修复 sessionKey防序列化泄露/发货推送幂等/缺参ack/签名断言
- AI/promotion/vendor/parent pages use API_BASE_URL for uploaded images
- upload/meal/points pages use API_BASE_URL for uploaded images
- index/product/detail pages use API_BASE_URL for uploaded images
- activity/guide pages use API_BASE_URL for uploaded cover images
- order pages use API_BASE_URL for uploaded order cover images
- shop core pages use API_BASE_URL for uploaded product images
- product/discover pages use API_BASE_URL for uploaded cover images
- article pages use API_BASE_URL for uploaded cover images
- base config/components use API_BASE_URL for uploaded image URLs
- WechatService 用 StreamUtils.copyToByteArray 替代 readAllBytes,兼容 Java 8 编译
- 富文本编辑器图片上传路径和网络图片弹窗被遮挡
- ErrorLoggingFilter 捕获链式异常并记录500日志; DimensionWeightController 参数校验; GlobalExceptionHandler 兜底异常处理
- 五维首页为你推荐商品区改为使用公开接口数据, 未选孩子也能显示
- simplify payment QR instruction text
- set gut testing price to ¥1,314
- update payment QR instructions for WeChat browser users
- DatabaseInitializer 清理 — 修正 modifyColumnToText 表名、移除已删表的残留迁移
- skip OAuth2 JSAPI flow, use Native QR code directly for WeChat browser
- show contact info in QR payment popup
- sync ProductOrder for admin order management
- ArticleBookshelf 书籍横向排列 — scroll-view 内包 inline-flex 容器
- show product info in payment popup, auto-close on success
- missing braces in JS, add backend QR code endpoint, use backend QR code instead of external API
- add CORS origin for www.cf-club.com, fix QR code display, add diagnostic filter
- 文章列表点击直接进入详情页,未登录也可阅读公开文章
- 统一移除RecommendedSection的v-if条件
- 统一五维首页推荐组件 — 顺序为活动→商品→阅读→推荐
- getOAuth2Url 用 String 重载的 URLEncoder.encode,兼容 Java 8 编译
- add payment endpoints to JWT exclude list
- fix fallbackNativePay syntax error, center order form modal
- 重绘底部tab身图标,更简洁的弯曲胳膊造型
- ContentRecommendService 商品/活动推荐改用 dimension_weights JSON 列查询
- add /upgrade-records route alias to MembershipController
- promotion模板缺少闭合标签
- promotion模板多根元素 + 内联赋值
- RecommendedSection无数据时显示空状态而非隐藏整个组件
- 重新绘制底部tab身图标,更清晰的弯曲胳膊造型
- DimensionProductList使用attached生命周期在uni-app中不触发
- recommend-mixin传参字段名与后端DTO不匹配
- family-members弹窗关闭内联表达式
- 健康报告上传失败时 console 输出错误详情
- 后台活动权重维度code与标准五维体系不一致导致新活动小程序端不显示
- add missing List import in ActivityController and DB migrations for dimension_code/family_scope columns
- circle接口空字符串解析Long报NumberFormatException
- 富页登录按钮因重复CSS规则min-height:80vh位置偏高
- article-detail auto-merge遗留重复方法
- article-detail内联表达式导致data-event-opts编译错误
- 未登录可浏览商品/活动/文章详情 + 富页面预登录内容
- 统一活动详情页,删除 discover-detail 重复文件
- 补充ActivityDTO缺失字段 requireRegistration/requireCheckinReview/memberPrice/feedbackDimensions
- resolve 6 backend compilation errors
- article-detail模板结构错误 — template作容器/多余闭合标签/tag无匹配end
- override ejs to 3.1.10 to fix critical CVE in webpack-bundle-analyzer
- ContentRecommendService NPE when type is null
- replace Map.of() with HashMap for Java 8 compatibility
- recommend-mixin.js 导入路径多一层目录
- ContentRecommendService select() incompatibility, ProductRecommendationService bean injection conflict
- 登录合规整改 - 跳过登录入口、静默授权、协议措辞
- remove WeChat branding from login page per review guideline
- promotion try无catch语法错误 + 创建缺失的member-detail分包页面
- parameterize JSON_EXTRACT dimension_weights queries to prevent SQL injection
- OCR finding - DimensionActivities CSS flex overflow
- resolve OCR findings - AIService workflowId URL + EnergyService parent role filter
- 财商打卡页内联表达式导致data-event-opts编译错误 + 修复模板编译器recyclableRender未定义
- add sendWorkflow and getTodayTasks(Long) overload, pull remote changes
- 推荐商品和活动价格显示到分
- allow tracking screenshots in web/articles/ via .gitignore
- 智首页六维认知雷达图无数据时也显示人群平均值
- 身首页七维雷达图无数据时也显示人群平均值
- 关系图连线映射交换 — 信任度→颜色(低红高绿),沟通度→线形
- 关系图连线视觉映射调整 — 粗细/颜色/虚线 + 无数据默认黑色
- payment.wxss 多余逗号导致编译错误
- EnergyService 修复 JSONObject.getInt -> getIntValue 和 executeAward 缺少 totalAmount 参数
- ActivityEdit/ArticleEdit full scroll, action tab no auto-select, timeout 800ms
- edit page scrolling, action tab blank screen, SKU specs save
- 推荐活动和推荐商品显示实际价格而非'登录查看价格'
- ProductEdit card layout, sales page add leaky-gut/pancreatitis articles
- remove required:true from dimensionCode prop in DimensionActivities/Products
- el-main添加overflow-y:auto使内容区可滚动,解决长表单被截断问题
- replace template literal fallback with computed props for WXML compat
- add null defaults for dailyFortune and dominantElement props
- add currentChildId guard and fix getMyCircles params
- add iOS date parsing fallback for Java format
- 商品编辑页el-card__body增加overflow-y:auto使表单可滚动,保存按钮可见
- member pricing display, wisdom/body page layout, :key expr in FamilyTianpanCard, remove FamilyRelationGraph
- add membership_levels seed data and period-specific pricing keys
- add mind/alert/active and mind/traditional/mirror to public paths
- verify-password 400 error — replace broad /api/auth/ public path with explicit list
- empty purchasedIds causing NOT IN () SQL syntax error
- 8 test failures — entity fixes + test param alignment
- Product entity column mapping + test param fixes
- add migrations 126-132 with ensureColumn for column alignment
- add 9 missing tables (migrations 117-125) + fix JwtInterceptor familyId + fix test emotion childId
- 商城升级提示文案通用化 - '开通家庭会员'改为'开通付费会员'
- move migrations 105/106 into runMigrations() — they were in dead code migration102()
- resolve P0-1/2/2b/3/5/6 test bugs + P0-4 DB migration for growth_records
- migration 106 add growth_records missing columns (family_member_id/school info)
- restore tab-wisdom icons from earliest valid version (faedcc33)
- year_month reserved word quoting + products.min_quantity migration
- 修复 stats-report-flow.md Mermaid 虚线连接语法错误(-:- → -.-)
- 修复 promotion_tier 表列名映射——teamSize1st→team_size_1st
- decode tab-wisdom PNG icons from base64 to binary
- 梳理慢性病文章因果措辞——炎症不再作为唯一病因
- schema.sql 补充 4 个 butler 表定义
- key 表达式改为方法调用,修复小程序非 H5 平台编译警告
- 修复growth-record-flow.md Mermaid语法错误
- remove broken image refs in gut-microbiota-testing.html
- replace {param} with :param in mermaid node text to fix syntax error in v11.12.1
- replace bare
with
in mermaid flow diagrams to fix syntax error in v11.12.1
- goDiscoverCircles 跳转到 discover 首页(原路径 /pages/discover/circles 不存在)
- add products.min_quantity migration to runMigrations()
- remove invalid shape:box from all mermaid classDef
- update article count from 2→1 after turmeric article removal
- 报告日期/综合评分仅文件上传后显示,ping文件Ping重置日期评分
- 改进ensureColumn错误处理+添加迁移104/103验证日志
- correct activity flow diagram with proper business rules
- 补充缺失的default-avatar.png,统一路径
- tianpan_daily_fortune表添加8个缺失字段修复Unknown column错误
- prioritize K8 (8-plate, 37900元), fix 20-year cost analysis, update certifications placeholder
- DimensionProductList activeChildId为空时跳过渲染
- 推荐阅读数据补充dimensionWeights和likes字段
- P2/P3 article fixes
- 快捷入口对齐action页原版样式和funcList
- 行TabBar章鱼图+联系人导入,顺序对齐原计划
- unify 活性氢→分子氢 terminology across sales pages and infographic
- unify terminology - 活性氢→分子氢, 磷脂配比→天然基底油, refine descriptions
- remove dead link to deleted turmeric_rewritten.html
- 行TabBar登录态数据加载对齐action页(孩子/能量/任务/活动/商品/文章)
- products表添加min_quantity列(迁移103)+ schema.sql同步
- restore article reading timer + recordRead积分发放 + fix response code
- recapture UKPDS 16 and DPP study reference screenshots
- update microplastic and tap-water sales pages
- update article content
- update WHO PDF link to IRIS archive, restore ref-18 CAS card
- 去掉行TabBar页的redirectTo,登录态内容内联渲染,保持底签可见
- 文章编辑页内容过长时无法滚动到底部
- 闭合rating.vue模板中缺失的view标签,修复编译报错
- add 300+ missing CSS rules to diabetes.html
- correct gut-microbiome-damage.jpg path in cancer.html and diabetes.html feat: add missing reference screenshots (turmeric marketplace, nature figures)
- 修复 createMultiItem 中 minQuantity 产品级校验注入位置错误
- move Hallmarks screenshot to content area, fix container nesting
- 修复cardio-cerebro.html中ref-screenshot图片路径(/img→../img)
- 替换cancer_ref3截图源,补全三篇文章ref-shot img标签
- 恢复行首页redirectTo;修复CircleRanking WXML编译错误;新增plans占位页
- 行首页登录后保持TabBar;家庭挑战任务移至身页面
- 用evidence-inline替换cancer/diabetes/osteoporosis断链截图
- 添加真实DOI参考文献到3篇geo-faq文章,修复导航链接路径
- 为8篇独立文章补充footer CSS样式
- resolve subpackage path conflict in pages.json
- 修复肠脑轴图/页脚/参考文献/证据截图
- fix encoding corruption from directory rename and restore UTF-8
- Fix:
- 修正图片引用路径并替换缺失的参考截图
- rename pages/index to pages/home and update all references
- 修正 cancer/cardio-cerebro 路径引用
- 修正子目录路径引用,添加 turmeric 文章
- remove stale RelationshipTypes route referencing deleted component
- add throws Exception to test methods calling preHandle
- add missing MockHttpServletRequest import
- resolve compilation errors - Java 8 var removal + type casts
- fix 405 POST→GET redirect, RecommendedFeed items ref, and unhandled rejections
- PROJECT-OVERVIEW §2.3 家庭成员体系状态 🚧→✅(4/4 全部完成)
- remove dead getRelationshipTypes API after P0-001 backend removal
- extend postinstall-fix.js to also patch HBuilderX bundled remove-scoped.js
- revert to @vue/cli-service v4 + patch remove-scoped.js via postinstall
- Fix:
- fix syntax error in parent-index.vue - loadAlerts + handleDismissAlert
- restore @vue/cli-service v5, remove PostCSS config files
- Fix:
- restore @vue/cli-service to v5 to fix WeChat DevTools compile error
- use ES module default-export for generationLevel constants
- @keyframes 从 scoped 移到非 scoped 样式块,修复 vue-cli-plugin-uni 编译错误
- point develop env to cfc.etotem.com.cn; extract deep selector to non-scoped style for HBuilderX compat
- replace >>> deep selector with ::v-deep for postcss compat
- fix hash operator precedence, use floorMod for negative-safe index
- use setFontSize in renderLegacy for WeChat compat, add _destroyed lifecycle guard
- 联系电话 010-86461234 → 010-58733188
- ensure .vue resolution in webpack
- 修复 uni-app 小程序编译兼容性问题及运行优化
- align MemorySaver import path and pin dependency upper bounds
- restore file encoding to UTF-8 (was corrupted by PowerShell ANSI default)
- 添加 tab-wisdom 图标文件,修复 gitignore 顺序
- add tab-wisdom icons (temporary - copied from tab-mind)
- add wx:key to v-for loops in RecommendedFeed and parent-index to suppress WXML warnings
- pages.json tabBar icons corrected - wisdom uses tab-wisdom, wealth uses tab-wealth
- FamilyMemberCard roleBadgeColor use this.member instead of bare member
- 运势接口Mybatis错误 - 添加@Select注解修复Invalid bound statement + 表结构对齐
- add fallback when navigateBack has no pages in stack
- parent-index wx:for 添加 wx:key 消除 WXML 运行时警告
- extract_full_report_v5.py - report interpretation content no longer truncated
- FamilyFortuneMapper.selectByFamilyAndDate 添加 @Select SQL 注解
- 智首页渲染层FLOW_DEPTH错误 + web baseURL/401提示修复 + 页面and组件完善
- 每日运势接口(/api/mind/fortune) 400 错误修复 - 移除无效 request body
- isLoggedIn computed → data property to fix login state reactivity
- FamilyRelationGraph 组件兼容性修复 - 修正小程序requestAnimationFrame错误
- normalize Kangxi radicals in Java service
- add CAG candidate genera for full coverage
- move floating migrations into runMigrations(), fix brace balance
- add 4 missing genera + fix Kangxi radical chars
- 开发环境跳过 auto-login 避免启动时 10s 超时错误
- 修复支付页订单金额显示为0元
- 修复体检报告详情页小程序编译失败
- add wx:key to v-for placeholder loop in DimensionArticles
- SKU编辑器适配Map类型specs + enabled Boolean转1/0
- 新增findByProductIdAll供管理端SKU列表(无enabled过滤)
- ProductSkuDTO specs类型从List