# v1.0 版本历史 [« 返回最新版本](CHANGELOG.md) --- ## 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改为Map - resolve login API 405 and logo 404 on /admin/ deployment - clean bacteria names (remove Chinese prefix) + add 3 missing genera - product-detail 移除 memberPrice 价格回退 - update test to match new BindController signatures - resolve @RequestAttribute familyId 400 error by resolving via MembershipService - replace @RequestAttribute("familyId") with - 商品图片上传两项关键修复 - 商品图片上传两项关键修复 - probiotic species-level extraction (22 items), inline format timeout - inline format bacteria table timeout - skip truly compressed format, 朱评估报告 now completes - bacteria table inline parsing, pathogen tables, antibiotic dedup, harmful/other bacteria expansion - FamilyRelationGraph 齿轮/+号/高度自适应被误回退,重新实现 - comprehensive extraction fixes - Kangxi radicals, inline fallback, amino acid boundary, taxonomy levels - 移除活动菜单项 + MembershipCenter 改用本地axios - 管理端API请求方法修复 — PUT/DELETE统一改用POST - 文件存储调用方适配 — upload→store、移除原始文件IO逻辑 - 文件存储重构 — 可配置上传目录、MIME类型校验、delete方法 - comprehensive bacteria table & indicator extraction fixes - 非管理员登录避免死循环 — teacher 直接进 /teacher-dashboard - AdminArticleController.create 修复ArrayList强转String — visibility/visibleTo/articleType字段可能为JSON数组 - 修复循环依赖 + ProductOrder重复字段 + QrCodeService静态调用 - navigateBack instead of deleted plans page - add ProductService.getById() to resolve pre-existing compile error - break circular dependency between HealthReportService and DimensionScoreServiceImpl - remove duplicate closing brace in CSS - 解决 git stash 合并冲突残留标记(body/index, gut-index, report-list) - user delete soft-delete + ActivityProvision entity + DAN execution service - class 绑定改用预计算/内联表达式,避免方法调用 - 修复管理端多处模板标签闭合并将本地开发接口指向 127.0.0.1:9082 代理 - 完善Canvas渲染逻辑 - 修复小程序编译错误和完善商品下单流程 - 添加 getWealthDetail 到 api.js(富维度详情 API) - 迁移40 ALTER ENUM前先UPDATE非法role值,避免Data truncated错误 - FamilyTianpanCard 修复多余闭合括号导致编译失败 + Canvas动画改用setTimeout兼容小程序 - SKU specs Map正确序列化为JSON + 审核中心滚动容器统一 - 修复拖动时按比例分配算法,首维度多分配问题 - ArticleManage分页onPageChange未接收页码参数; 增加每页条数选择器 - 活动列表滚动容器统一用overflow:auto消除分页导致的宽度抖动 - 修复身页面编译错误 - 商品组件导入路径和天盘卡片语法 - 活动管理列表横向滚动 + 查询条件间距调大 - PackageAudit getPackageList/reviewPackage函数缺失修复; 修复后端reject用params传递reason - ActivityReview overflow-x:auto 修复横向滚动 - showDialog处理object规格+update移除productId避免400 - approveGuide 中 username 字段为 null 时使用 teacher_{userId} 兜底; fix(web): ArticleAudit 接口名/参数修正 + GuideAudit 分页 - 创建规划师admin时phone为null导致username为空 - ProductSkuDTO 适配 specs 字段 String→Object 变更 - sku.getSpecs() 返回非String类型时类型转换保护 - normalizeSpecsToJson 参数类型改为 Object 适配 specs 字段变更 - 审核中心10个页面添加横向滚动+filter-bar美化 - 修复规划师审核列表数据显示问题 - ProductSku create() sku_code NOT NULL 缺失自动生成默认值 - SupplyHierarchy change-requests systemId 改为可选 + ((Number)→Long.valueOf) 解析修复 - 修正管理端4个API路径+2个分页兼容 - ProductAudit 兼容 records 分页格式 - 修正7个小程序API路径错误(article/supplier/messages/upload/families) - 移除无对应路由的文章审核侧边栏项 - 退出切换改用 switchBackVerify 原子接口,修正密码校验逻辑 - 迁移guides表添加university和education_system列(修复GuideService查询报错) - 创建 GuideFamilyListController - /api/guide/family/list 端点 - 修复 createFamily API 路径错误 - body page radar chart display issue - entire chain: dimension data -> score validation -> canvas render -> visual display - SupplySettlementService/Controller ((Number)→.toString()) 修复ClassCastException - ProductService 添加 getById 方法,SupplierProductController 编译错误 - SupplySystemController @RequestParam→@RequestBody 修复400错误 - schema.sql 同步补充 79 张缺失表的 CREATE TABLE 定义 - add dimension_weights column to products table (migration 89) - DatabaseInitializer 显式声明 Logger 替代 @Slf4j 注解,避免 Lombok 处理异常 - add dimension_weights column to activities table (migration 88) - CommissionRecord 添加 family_id 字段 + CommissionService createCommissionRecord 集成 familyId - CommissionService 编译错误 - 补充 familyId 字段和 L2 调用参数 - move familyId declaration before use - resolve Spring MVC ambiguous mapping conflicts from PostMapping unification - 代码规范修复 — @Autowired→@Resource + Result泛型补全 - 后端稳定性 — catch块日志/空值处理/PostMapping统一/管家stub - 金融安全修复 — payment绕过/验证码stub/积分兑换/教师端点/类型转换 - 迁移87: articles表添加content_type/difficulty_level/dimension_ids/dimension_weights字段 - 迁移86: product_orders表添加purchase_info字段(OrderTimeoutCancelTask) - 调整 pages/profile/index 在 tabBar 中的位置并移除 customTabBar 配置 - 同步 pages/wealth/index 路径与远程一致 - 修复 Recipes.vue el-dialog 开始标签丢失 - missing SubscriptionBenefitLog import + column comparison in ButlerService - remove extra closing braces at end of DatabaseInitializer - 修复 pages.json tabBar 富页面注册缺失 + 维度权重前端修改 - resolve merge conflicts in package.json, CHANGELOG.md, .last_build_commit - add missing closing brace for export default in Detail.vue — fixes build error - resolve merge conflicts in cfc-web build files - 二维码分享功能统一收敛 — 新增通用 QR 后端接口 + 修复三处前端 QR 生成 - PpointService null date handling + adminList keyword filter; ProductPpointManage effectiveDate→startDate field name fix - resolve ambiguous mapping /api/recommend/dimension-products - remove duplicate from RecommendationController - SupplyManageController detail/update/delete robust id parsing - api.js repurchase-reminders GET→POST + click tracking - 添加 dify.callback-secret 配置 + 管理端多页面优化 - break circular dependency CircleService↔CircleMatchService with @Lazy - 修复DatabaseInitializer编译错误 - ProductController spec map JSON.parseArray type inference for Java 8 - CartService 回填 skuId + wisdom 阅读统计条件优化 - restore family member menu + auto-derive generationLevel + add birth/preference form fields - 退款流程5项修复 (ISSUE-007~011) - 拆分 v-if 条件提高可读性 - ArticleManage table 添加 max-height 防止溢出 - 修复前后端数据流5个关键bug - 待退款队列可见性 + 退款到帐中状态 + 防重复审核 - body index simplify childId checks use || '' fallback - FamilyRelationGraph 修复单成员家庭显示重复的问题 - 补充迁移79(pending_refund.order_type/order_no) + 修复TianpanDailyFortune import - add missing FamilyRelationGraph to mind page - 删除body页face多余的修复模板多根元素错误 - 修复E2E-TEST-SCENARIOS.md section12编码乱码 - 鏇存柊 playwright 閰嶇疆 + 鏂板娴嬭瘯鏂囦欢 (consignee/health-report/teacher-dashboard/publish-dimension-articles) - add updateTier(Long, String, String) overload to match call in PromotionTierEvalService - 七维健康图无个人数据时返回默认值 65 - 身/心维度页推荐文章添加dimensionCode过滤 - 修复退款失败 - package_orders表缺少user_coupon_id列 - add missing PpointService for CommissionService compilation - specs字段规范化为合法JSON避免MySQL JSON列报错 - resolve getPlanDetail duplicate declaration and clean up assessment controllers - getTrendStats send {} to avoid axios stringify undefined - 用原生 button @click 替换 el-button 绕过组件事件问题 - knowledge layout — wrap body, add status filter dropdown - el-link 点击事件改用 .native 修饰符 - 注册 Element UI Link 组件使变更日志可点击 - AdminArticleController 空字串转Long抛NumberFormatException - 系统状态卡片增加变更日志入口与服务器运行监控 - convert content-bearing VARCHAR columns to TEXT to prevent Data too long errors - show family relation graph card even with single member - connect after-sales request and product order refund flows - restore DatabaseInitializer encoding and fix ActivityController tests - 修复 numsoul_config 种子数据语法错误(缺失引号和逗号) - improve health report scoring and add admin report list - add role-based permission checks to activity endpoints - 补齐个人信息保存缺失的 idCard/mascot 映射 - repair playwright baseURL, add test scripts and lockfile - resolve merge conflict in DatabaseInitializer, add mascot to UpdateUserDTO - normalize time format to YYYY-MM-DD HH:mm:ss across admin pages - complete scroll wrapper for all 59 pages with fixed=right columns - revert error-throwing, keep auto-create for unidentified users - prevent auto-create user when openid not found and no phoneCode - wechatLogin use real code2Session API instead of mock openid - validate openid before WeChat prepay - reject phone-prefixed/mock openid (resolves PARAM_ERROR 无效的openid) - add missing wangEditor Toolbar component to enable rich text editing - add overflow:auto scroll wrapper to all 58 pages with fixed=right columns - admin UI improvements - action dropdown, scroll, labels, confirm dialogs - guard loadHealthDimensions on activeChildId + debug logs - add table overflow scroll to admin pages - CSS grid violations, teacher API null guards, progress fallback, improved changelog parser - add null/undefined guards in TeacherDashboard loadStats - replace grid with flexbox in Dashboard quick actions + today stats - guard null userId in ArticleService.recordRead to prevent creator_id NOT NULL error - redesign ContactImport - support WeChat contacts import & fix picker modal issue - ISSUE-007 SupplySystemService.create() validate adminId - fix FamilyMemberService.addMember DTO compatibility for generationLevel/peerType - map generationLevel/peerType to relationshipTypeKey for RelationshipType lookup, set generation/isSpouse on FamilyMember entity. - resolve ProductEdit.vue rebase conflict + cleanup supply entities - migration 36-37 — family_members generation/is_spouse columns - admin edit pages and CHANGELOG updates - add GenerationLevel enum and family member entity updates - PaymentService testMode mock + WeChat JSAPI payer.openid - resolve 5 UI bugs across CFC mini-program - CORS - add PrivateNetwork header + explicit allowedOrigins - points_log表添加family_member_id列(迁移35,修复家庭能量计算报错) - align supply distribution system with spec — member management, period-based settlement, 3-page frontend - FamilyRelationGraph 完善 + login/family-dashboard 页面更新 - add dan_assessment_results missing columns - familyMember/EMI/Big Five/snapshot fields - relationship_types.capability_role 添加默认值 - 迁移33 供应商分销体系(4新表+product_orders 3列) - health_reports补subject_id列 + 迁移32供商体系表(4张新表+product_orders 3列) - HealthEnergyConfig.vue 全角括号导致前端构建失败 - add deliveryMethod/rejectReason/categoryId/distributionSystemId mappings - ProductEdit field alignment - 多页面综合修复 + 后端关系质量/能量同步 + 前端组件完善 - 后端: DatabaseInitializer/RelationshipQualityController/DimensionEnergySyncService - 前端组件: ContactImport/DimensionActivities 完善 - 页面: action/body/mind/wisdom/discover/health 各维度更新 - splash.vue 删除 - 新增 HealthEnergyConfig.vue 管理端页面 - router/Layout 同步更新 - resolve rebase conflicts + update tests/docs - resolve .last_build_commit conflict - ProductEdit wangeditor 生产构建错误 — 改用 @wangeditor/editor-for-vue Vue组件替换programmatic API - product order stock check by product type (physical only) - resolve merge conflicts and sync build artifacts - create cart table migration and sync to schema.sql - add relationship score column migrations for family_members table - add require_registration, require_checkin_review, energy_penalty_unregistered migrations for activities table - add role_override column migration for family_members table - add default_role column migration for relationship_types table - add remaining child-specific column migrations for family_members table - activities表添加审核相关字段迁移(迁移25) - package.json 版本更新 - add id_card column migration for family_members table - resolve ArticleService.java merge conflict (autoGenerateTags + submitForReview/withdraw/reDraft) - 活动创建后弹窗提供继续添加/返回列表/直接发布选项 + 表单必填校验 - TabTransition 默认 true 确保首次渲染即出现,消除页面框架闪现 - 首次进入首页时 TabTransition 不应展示(由 splash overlay 覆盖) - DimensionWeightPicker 拖动时按比例重新分配维持100% - 环境配置更新 - action/index.vue 集成 WuxingSandbox 能量沙盘 - index.vue 闪屏逻辑优化 + api.js 中文注释编码修复 - DatabaseInitializer 添加 family_member_id 和 role_override 列迁移 - E2E tests for deployed admin at cfc.iwintrue.com/admin - relationship_types 迁移 default_role → capability_role - 后端+前端全面修复 - ArticleService/EnergyService/DimensionArticles/FamilyRelationshipSection及多页面完善 - ArticleService: getAdminList 返回值修复 - EnergyService: getEnergyOverview 能量概览补全 - DimensionArticles: 修复文章组件 - FamilyRelationshipSection: 完善关系管理组件 - 多页面: action/mind/wisdom-detail/promotion 等页面更新 - FamilyMemberVO/Service + family-members.vue 完善 - 后端全面修复 - 实体字段、Controller参数、Service方法补齐 + DTO新增 \n- 修复字段类型不匹配(Long/Integer/String)\n- 补齐缺失的 import/方法/参数\n- 修改 @PostMapping 路由统一\n- 新增 Cart/CartItemDTO/SystemConfig 相关实体和Service\n- 重命名 ChildNutritionProfileService -> FamilyMemberNutritionProfileService\n- 修复测试用例 - createUser — unique openid + try-catch exception handling - 测试编译错误修复 - ArticleService.getAdminList 参数补齐 + update 方法参数类型修正 - 修复编译错误(重复字段 + 缺失import + 参数不匹配) - update deployment script and admin router/activity api - add auto-migration for articles audit fields in DatabaseInitializer - create missing HealthDimensionsSection component - DimensionArticles & FamilyRelationGraph show empty state - uncomment ALTER TABLE for article audit fields in schema.sql - DimensionProducts always shows section with empty state - resolve Bean name collision between GuideActivityService and ActivityService - wisdom index radar chart - loadCognitiveReport race condition - call loadCognitiveReport() inside loadChildren's .then callback, - resolve API naming conflict for activity guide endpoints and WXML :class compatibility - connect article-center entry from discover page + profile menu - 修复退出登录遮罩冲突, 添加beforeunload防护 - correct article publish path in v8 final test - add article publish path endpoint + product_skus table auto-init - 修复退出登录确认框不显示、文章编辑页刷新弹出浏览器提示 - fix body goMoreProducts URL - was wrongly set to type=activity instead of type=product by rebase auto-merge - always show more button in DimensionActivities, fix goMoreActivities URLs with type param - 修复Controller单元测试编译错误 - 修复集成测试编译错误(适配生产API签名变更) - DailyCheckinService.updateCheckin改为Map参数,deleteCheckin增加userId参数 - 修复NEW-01/02/03运行时API错误 - login redirectTo + goMoreActivities/Products URLs with type filters - fix all tab pages - empty navigation methods, wrong paths, bad query params for goMoreActivities/goMoreProducts - remove DimensionProducts section from body page, fix goMoreProducts navigation - goShop navigates to correct product pages instead of broken action/index - relationship_types enabled 修复 + 清理 body/index.vue 冗余产品链接 - DatabaseInitializer: 启动时修复 enabled=NULL 的种子数据 - schema.sql: relationship_types INSERT 补上 enabled 列 - body/index.vue: 删除菌群检测产品链接区块, showTabTransition=true, 移除废弃方法 - RelationshipPicker.vue: 组件增强 - DimensionActivities.vue: 组件增强 - small adjustment in ArticleManage.vue - repair broken tag in mall.vue, CSS rename and normLevel fix in cognitive-report, small adjustments to add-member and ProfileMenu - testMode flag skips private key loading - Login.vue success路径补上this.守卫 - 修复后台登录成功后的崩溃bug (防止重复提交 + catch块防御) - 移除所有UTF-8 BOM - api.js + 3个shop页面 - PaymentService添加@Lazy解决循环依赖 - 心页快捷入口从一行改为两行布局 - GrowthTaskManagement import path and function names - add resolvedAt to EmotionAlertVO in toVO() mapping in both services - add resolvedAt field to EmotionAlertVO - make crisis hotline clickable in PsychCrisisBanner via uni.makePhoneCall - add emotion_checkin missing columns (moodScore, stressLevel, arousalLevel, sleepHours, sleepQuality, energyLevel) - resolve schema migration gate, controller NPE, auth check, WeChat template message support - 修复编译错误 - ActivityRegistrationService toList(), ProductOrder/TrialMembership缺失字段, DanshopSyncService BOM - ISSUE-001 ProductService.shelve() 状态检查 & ISSUE-003 AdminController.createUser() 缺省值 - 修复管理端侧边栏菜单滚动问题 - 修复report-survey微信小程序finally不兼容问题 - 修复文章发布500错误,补充detail接口及relatedDimensions类型转换 - List.of()→Collections.emptyList() (JDK8兼容) - 解决ambiguous mapping冲突(List.of改Collections+删除productList/productReview重复端点) - 调整tabBar顺序为行心身智富(五行相生) - 移除 date-picker value-format 避免 400 - Danshop迁移到cfc-backend + coupons/upgrade模板修复 - 修复energyMapForGraph缺wisdomScore + 添加返回首页快捷按钮 - resolve merge conflict + upgrade.vue template root element - add .pillar-card to scroll-reveal observer selector - restore and fix pre-existing test files for Java 8 compatibility - improve FIRST_TASK onboarding trigger to use task child ID - HealthDimensionScore/HealthDataSourceRecord 新表字段匹配 - use PDDocument.load() instead of deprecated Loader class - 修复小程序登录后首页状态不更新 + TabBar图标缺失 - FAQ精简为11个核心问题,修正文不对题;新增销售文案页 sales.html - 全站理念统一——精准健康方案→精准健康,SEM/FAQ/百科/策略同步 - 精准健康方案→精准健康 - 修正产品理念——健康档案/成长档案为容器,菌群/DAN测评为实际内容 - remove danLevel field call causing compilation error and add PdfParseServiceTest (10 tests) - add missing memberType and danLevel fields to FamilyMemberVO - 修复 Profile 子组件 import 路径 - Core function 识别诊断→科学识别 desc -3chars, 跟踪执行+5chars, 成果检验+5chars; enhance 菌群检测+精准健康; stats in about section - Move stats into about section; enhance 成长规划/菌群检测/精准健康 descriptions - Revamp about section into 企业使命/愿景/价值观; remove 40,000+ stats - Center QR code image - QR code 200px desktop, 160px mobile - correct media query placement - QR code to 200px; tighten role descriptions - Reduce QR code size to 100px (from 180px) - hero按钮统一蓝底黑字,消除点击困惑 - 营养健康模块5项缺陷修复 - 统一平台运营图标尺寸与对齐方式 - refactor profile.vue into 6 components + remove duplicate loadRewards - resolve git conflict markers in router/index.js and fix Layout.vue computed syntax - add monthActiveDays to /api/stats/child/overview - unify all order ops to DanShop API - convert totalAmount fen→yuan before passing to payment page - unify DanShop order operations — cancel/confirm/pay now route to DanShop API not CFC - 修复首页10个实现问题(主页风险修复计划) - pre-login entry flow - fix page order, remove stale resetTabBar, fix goShop nav, add auto-login refresh - 根据登录状态显示/隐藏TabBar(未登录跳转发现页) - ProductOrderController 使用 @RequestAttribute 读取用户ID - ProductService.decreaseStock 改用原子 UPDATE 防止超卖 - 数据库 schema 加 UNIQUE 约束 + 时间戳默认值 + 平台商品 vendor_id 置空 - 修复登录限制和密码重置逻辑 - 修复Task.java缩进和duration字段一致性 - 批量操作添加用户认证和所有权检查 - 修复SfmsDataSourceConfig配置前缀不匹配,去掉hikari层级 - 批量修复API路由冲突和权限控制 - 修复数据库迁移SQL语法错误和测试用例 - 修复预存的编译错误(DTO类型不匹配,status值) - 修复预存的编译错误并添加Service接口规范 - 注册teacher目录页面到pages.json - 修复tasks.vue和添加SchemaSyncHandler - 优化RewardService和pages.json路由配置 - 修复跨Controller路由冲突(RewardWishlistController+TaskReminderController) - 批量修复GET→POST迁移导致的路由冲突(TeacherController+UserController) - 修复ParentController路由冲突(getParentWishlist路径改为wishlist/list) - 修复TaskTemplatePackageController路由冲突(getPackageItems路径改为item-list) - 统一处理参数校验异常返回 - 补充createChild必填字段校验 - 修正测试基类元素解析契约 - 修复UserService.createChild空指针异常 - 统一前后端API为POST请求(安全迁移) - 修复AdminController类型转换异常和数据库迁移缺失 - tasks表child_id字段改为可空,支持parent任务 - rewards表child_id字段允许NULL,修复模板奖励插入失败问题 - 修复profile.vue模板格式 - 切换孩子模式时检查孩子数量并引导添加 - 优化手机号输入体验,11位自动触发检查 - 修复孩子端导航返回逻辑及移除TabBar游戏入口 - 修复RewardWishlistController API映射冲突 - 添加admin_task_templates表teacher_id字段迁移 - 修复TaskTemplatePackageController API映射冲突 - 修复GuideController与GuideFamilyTaskController API路径冲突 - 修复GuideController与BindInviteController API路径冲突 - 修复schema.sql中ALTER TABLE重复执行错误 - 修复数据库迁移重复执行错误 - 修复Java 8编译兼容性问题 - 修复小程序登录流程和用户编辑页跳转 - 修复Controller层userId获取方式及多个API端点 ### 其他 - - 生产库 id/product_id 为 INT,实体为 Long,插入超出 INT 范围的 id 报错 - - 生产 DB 已直连 ALTER(即时生效) - - - Product 实体已含字段,生产库缺列,商品列表分页查询报错 - - 生产 DB 已直连 ALTER(即时生效) - - schema.sql 同步补列 - - - Article 实体已含字段,生产库缺列,getFeatured 精选查询报错 - - 生产 DB 已直连 ALTER(即时生效) - - schema.sql 同步补列 + 解决 unlock_gates/microbiome_article 冲突 - - - 后端: AI自动分类接口 /api/growth/articles/products/ai-classify - - 前端: growth-main 新增推荐文章和推荐商品卡片 - - 前端: api.js 新增 getGrowthRecommendations() - - - 后端: GrowthRecommendationService 推荐查询 + AI分类 - - 后端: GrowthController /api/growth/recommendations + /ai-classify - - 前端: growth-main 新增推荐文章+推荐商品板块 - - - gut-flora-caution-detail → pages/growth/caution-detail - - gut-flora-foods-detail → pages/growth/foods-detail - - growth-main 新增戒备/饮食推荐行动卡片(戒备有数据时显示) - - 更新 gut-flora-detail.vue 跳转链接 - - - profile-main: 新增购物车(角标99+封顶)与收货地址入口 - - profile-main: 移除功能入口网格, 设置改为菜单项放退出登录上方 - - profile-main: loadOrderCounts 修正字段映射(pending/paid/shipped/refunding) - - profile-main: 补充 loadCartCount 方法定义 - - order-list: onLoad 支持 status 参数, 我的订单五宫格点击直达对应状态列表 - Ultraworked with [Sisyphus](https://github.com/oh-my-open-code/oh-my-open-code) - Co-authored-by: Sisyphus - - Co-authored-by: Sisyphus - - /data/cfc-uploads/ 文件,导致解析时报「文件不存在」。 - 修复:将 langgraph-data:/data 拆分为两层挂载: - - /data/cfc-uploads → bind mount 宿主机路径(共享上传文件) - - langgraph-data:/data/chroma_db → 独立命名卷(chroma 向量数据持久化) - - - report-confirm.vue 去除 onLoad 重复的 draftId/memberId 赋值,draftId 模式自动跳转详情页 - - report-upload.vue 上传草稿后跳转详情页 - - 新增健康报告编辑日志(HealthReportEditLog + Mapper + 建表迁移) - - 报告服务/区块组装/排序工具相关后端增强 - - - 前端: 新建 gut-flora-caution-detail.vue 页面,倒序展示 indexScore < 0 的食材 - - 前端: gut-flora-detail.vue 新增'食材戒备'入口卡片(有戒备食材时显示) - - 前端: api.js 新增 getFoodCautionList() - - Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) - Co-authored-by: Sisyphus - - - BeijingNutritionService.analyzeGutFlora: 按功能分类聚合菌属 - (丁酸盐生产者/黏液屏障/蛋白质发酵者/SCFA/产气菌/益生菌等) - - 计算 Prevotella/Bacteroides 比值推断饮食模式 - - 组合风险模型(IBD/代谢/肠易激/神经-肠轴) - - 益生菌补充指导 - - POST /api/nutrition/beijing/analysis - 前端: - - gut-flora-detail.vue 新增分析卡片(功能维度评估/PB比值/饮食模式/风险/益生菌) - - api.js 添加 getGutFloraAnalysis - - Ultrawwork 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 - - - 后端: SortInterceptor + SortUtil 全量支持 - - 支持单击设主排序、Shift+Click追加、双击切换方向,最多3列组合 - - - 新增 SortUtil.applySort(wrapper) 自动注入 ORDER BY - - 批量 patch 110+ 个 controller/service 文件 - - 解决方案,平台承诺未经授权不向第三方提供报告内容。未勾选时点击上传 - 卡片会弹出确认弹窗,用户同意后自动勾选并继续选文件流程。 - Closes: 报告上传用户隐私声明需求 - - Co-authored-by: Sisyphus - - - 后端: AdminFoodController 解析前端 sort 数组传入 Service - - 前端: 列头点击排序(单击设主排序,Shift+Click追加,Ctrl+Click切换方向) - - 前端: 排序徽章显示当前排序链,最多支持3列组合排序 - - 前端: 排序列高亮 + 方向图标 - - - DietRecordService: getDailySummary/getWeeklyTrend 增加 userId 参数 + resolveMemberId 反查当前用户自己的 family_members 记录 - - SurveyController: 移除 status/history/submit 的缺少成员ID 报错 - - SurveyServiceImpl: resolveMemberId 兜底,submit 时仍无法确定则抛业务异常返回 400 - - - 11个分类: 蔬菜58、水果42、水产品35、肉类27、干果15、豆类14、主食14、蛋类7、乳制品6、汤3、快餐3 - - 字段: name, category, energy_kj, protein, fat, carbs, fiber, starch, cholesterol - - SQL: docs/superpowers/specs/food_seed_data.sql (可直接执行) - - 数据库已有 UNIQUE INDEX idx_name(name) 防重复 - - Co-authored-by: Sisyphus - - - 新增月度引导语(12个月差异化文案) - - 💧金色主题样式 - 健康页(health-main)登录前: - - 新增五维闭环体系可视化(身/心/智/行/富环形图) - - 相生关系: 身→智→富→行→心→身 - - 相克关系: 身克富·智克行·富克心·行克身·心克智 - - 五维介绍卡片(点击跳转对应维度页) - 成长页(growth-main)登录前: - - 同构五维闭环体系(绿色主题区分) - - 替换原理念卡位置,内容更丰富 - - 保留原登录后逻辑不变 - - - 品牌定位语'科学管理全家健康数据' - - 痛点卡: 指标正常≠健康 + 孩子反复生病文案 - - 4宫格功能预览(报告/认知测评/心理测评/智能方案) - - 15题五维健康自检入口 - - LoginGuideCard 升级版 - 成长页(growth-main)登录前: - - 品牌定位语'看见改变正在发生' - - 理念卡: 记录不是目的,看见改变才是 - - 脱敏案例展示(小明3个月前后对比) - - 4宫格功能预览(打卡/调研/里程碑/家庭挑战) - - LoginGuideCard 升级版 - - 原登录后逻辑不变 - - - pages.json 注册 pages/action-detail/index 页面 - - custom-tab-bar dimMap.action 从首页改为 /pages/action-detail/index - - - monitoring.py: Java后端检查由GET /api/改为POST /api/admin-auth/login-by-password - - monitoring.py: LLM检查由ainvoke改为abatch(max_tokens=1)加速 - - .env.production: JAVA_BASE_URL改为172.17.0.1(Docker桥接网关) - - (Java后端所有接口均为POST,GET返回404) - - .env.production: JAVA_BASE_URL由远程IP改为172.17.0.1(Docker桥接网关) - (Java后端运行在同服务器宿主机,Docker容器通过桥接网络访问) - - - parent-index.vue: 去掉自动选中children[0],默认显示自己,用户从FamilyMemberStrip选择后设置selectedChild - - 后端: HealthSleep/Water/Exercise/DailyCheckin/HealthDimension 五个Controller添加@RequestAttribute('currentMemberId')回退 - - 前端: sleep/water/exercise/daily-checkin/diet 五个健康页,child角色不从storage取currentChildId - - - 理念依据:《家的算法》书稿(测量先行→最小输入→循环→反馈→系统升级) - - 主线硬门禁:家庭级判据,任一成员完成五维自检解锁全家沙盘 - - 增值关卡:下单菌群检测/DAN测评(无前置依赖,可先于主线完成) - - 软引导:微行动/打卡里程碑/复测趋势,推荐不锁死 - - 管理端完整配置页:开关/顺序/奖励/条件,数据驱动 - - 同步更新 PROJECT-OVERVIEW.md 功能表与文档索引 - - - 表格高度自适应,无固定 max-height - - Java后端健康检查由 /health 改为 /api/(返回401=正常需认证) - - 组件详情展示 detail 字段而非 code - - - 健康页登录前新增痛点卡、功能预览、五维自测入口 - - 成长页新增登录前内容(理念卡+示例展示+功能预览+LoginGuideCard) - - 所有内容来自《家的算法》书稿(book/目录) - - 登录后内容保持不变 - - Co-authored-by: Sisyphus - - Co-authored-by: Sisyphus - - - LoginResultDTO.roles: String → List - - UpdateUserDTO.roles: String → List - - UserService: 移除 parseRoles/joinRoles,直接使用 List - - EnergyService: 简化 parent 角色检查 - - SupplyManageController: 直接使用 List.contains() - - DataMigrationService: 使用 Arrays.asList() - - ServiceRoleApplicationServiceImpl: 保留 JSON 序列化(独立表字段) - - 形成 '/dashboard → / → /dashboard → …' 无限循环。 - 改为 next('/403') 直接跳 403 页面,终止循环。 - - 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 - - 低于 JWT HMAC-SHA 要求的 256 位。新增自动扩展逻辑: - - SHA-256 哈希扩展(密钥>=256位时直接使用原密钥) - - 字节填充回退 - - Co-authored-by: Sisyphus - - Co-authored-by: Sisyphus - - Co-authored-by: Sisyphus - - Co-authored-by: Sisyphus - - Co-authored-by: Sisyphus - - - 移除功能测试面板(quickTests) - - API端点列表高度 500→700px - - 日志面板高度 250→600px - - 状态判定改为只看LLM/ChromaDB,Java后端因内外网隔离不作为降级依据 - - 刷新间隔从30s改为60s - 后端: - - adapter.py 新增 POST /api/v1/health/coach/generate 端点 - - 接收 {familyId, memberIds, dimensions, goal},调用 health_coach_graph - - 修复 Java 后端 HealthPlanServiceImpl 调用端点 404 问题 - 部署: - - 新增 deploy.sh 脚本(rsync同步 + docker-compose重启 + 健康检查) - - - 前端 profile.vue: loadUserInfo 按14个字段计算个人信息完整度 profileProgress, 修复一直显示0/14的问题 - - 后端: users/consignees 表新增 province/city/district/street 字段(迁移211 + schema.sql同步) - - UserService.updateUserInfo: 保存地区后自动创建/更新同名同手机号联系人, 共享地区数据 - - ConsigneeService.save: 联系人姓名手机号与当前用户一致时, 反向同步地区回用户 - - - 步骤指示器 + 卡片式报告选择 - - 需求输入区改为标准表单,非对话样式 - - LangGraph 调用逻辑不变(aiSendMessage),仅前端 UI 改造 - - 方案结果以普通卡片展示,任务列表支持执行人修改 - - - 后端 HealthReportService 新增 getFamilyReports(familyId) 方法 - - report-confirm.vue 确认后跳转 health-plan-summary - - 重写 health-plan-summary.vue: - - 选择全家已有报告(含其他家人) - - AI 对话式输入需求,返回方案内容 - - 自动解析任务列表,支持修改执行人 - - 确认后批量创建任务单 - - - 后端 HealthReportService 新增 getFamilyReports(familyId) 方法 - - report-confirm.vue 确认后跳转 health-plan-summary - - 重写 health-plan-summary.vue: - - 选择全家已有报告(含其他家人) - - AI 对话式输入需求,返回方案内容 - - 自动解析任务列表,支持修改执行人 - - 确认后批量创建任务单 - - (未知文本一律算异常),而 _cssClass/statusText 用白名单映射(未知显示正常), - 导致分组标题'X 项异常'把样式正常的指标计入异常数。 - 改为与 _cssClass 一致的白名单判定(仅 high/low/abnormal/偏高/偏低/异常/ - 缺乏/不足/注意/高风险 计异常),并补齐 _cssClass/statusText 的'异常'中文键。 - - parse/parse-preview 读取时又拼一次 uploadBaseDir,形成 - /data/cfc-uploads/data/cfc-uploads/uploads/... 的重复路径导致文件找不到。 - 新增 resolveUploadFilePath 兼容绝对/相对两种历史格式,两处读取统一走该方法。 - - 前端 uploadReportOnly 仍调旧路由命中一体化 uploadReport(返回详情无 draftId), - 导致上传成功但 res.data.draftId 为空、不跳转确认页且 toast 显示 message=success。 - 修正 URL 为 /api/health/report/upload-only。 - - - 新增SurveyTemplate/SurveyRecord实体 + Mapper + SurveyService - - 新增SurveyController(小程序端status/active/submit/history) - - 新增AdminSurveyController(管理端save/list/delete/ai-generate) - - AI生成调研题目调用LangGraph,失败回退本地fallback - - 前端小程序:新增survey-questionnaire/survey-history页面 - - 重构growth-main为干预中心(今日干预进度卡+持续追踪Tab+里程碑+定期调研) - - 前端api.js新增调研API,pages.json注册新页面 - - Web管理端:新增SurveyTemplates.vue(CRUD+AI生成)+ survey.js API - - 修复getSurveyStatus命名冲突(旧report-survey重命名为getReportSurveyStatus) - - 同步更新schema.sql + PROJECT-OVERVIEW.md - - - VARCHAR(50)→VARCHAR(255),源数据(菌种检出率描述)可能超过50字符 - - 生产 DB 已直连 ALTER(即时生效) - - schema.sql 新增 health_gut_flora 表 DDL - - - CouponGrantLog/DanExecution/CfValueManage/MembershipCenter/PendingRefund/ButlerAudit/ServiceRoleApplications/supply-system/Detail/HealthReportAudit: 新增resolveUserNames方法,通过searchUsers API将userId解析为用户名显示 - - - 在线测评(dimension-questionnaire.vue)扩展:cognitive/mental/relationship三套题库(各8题)+dim参数路由 - - 方案汇总页(health-plan-summary.vue)新建:生成表单+结果展示+历史列表 - - 后端:health_plans表+HealthPlan实体/Mapper/Service/Controller(4端点) - - 数据库迁移207:health_plans表 - - 前端API:generateHealthPlan/saveHealthPlan/getHealthPlanList/getHealthPlanDetail - - pages.json注册health-plan-summary页面 - - PROJECT-OVERVIEW更新 - - Co-authored-by: Sisyphus - - - 成长Tab: 移除重复体征记录入口,保留每日打卡等8项执行层入口 - - 全局改名: 成长档案 → 成长记录 (15个文件: 页面文本/导航标题/注释) - - 导航修复: mind-detail和wealth的TabBar页跳转改用nav.goPage; child-index/child-detail goToGrowth改用switchTab - - Co-authored-by: Sisyphus - - Co-authored-by: Sisyphus - - Co-authored-by: Sisyphus - - Co-authored-by: Sisyphus - - - ArticleBookshelf 组件: 书册横滑改四列网格, 显示4篇文章 - - index-home: 推荐阅读移到推荐商品下方, 推荐商品请求数量 2->4 - - FamilyMemberStrip: 无 props 用法时自我加载可见家庭成员 - - UserService: 家庭成员列表按 userId 去重(创建者双表记录) - - - 8 个不存在的表(user_operation_log/daily_health_checkin等)不再产生噪声 - - → 改用 tableExists() 前置检查 + RENAME TABLE(无 IF EXISTS) - - 修复 1 处 CHANGE COLUMN min_quantity(列已不存在时报错) - → 改用 columnExists() 前置检查,不存在则跳过 - - 新增 tableExists() + columnExists() 辅助方法 - - 不影响业务,仅消除启动日志噪声 - - - 移除 dead code: 无意义的 empty-tip 视图 - - 移除无用 import: generateFamilyInviteQrCode - - onInvite 使用 uni.share type=5(小程序原生卡片分享),不再依赖 QR 图片 - - 分享卡片带标题+家庭名,被邀请人直接打开 invite/join 页面 - - 🛒 购物车 (pages/shop/cart/cart) 快捷入口。 - Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) - Co-authored-by: Sisyphus - - 当 store familyId 为空时显示 FamilyEmptyState(暂无数据)。 - 编辑个人资料不应依赖是否有家庭,改为老用户 (isNewUserFlow=false) 始终显示表单。 - Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) - Co-authored-by: Sisyphus - - - 移除 FamilyEnergyBar(沙盘已含能量信息) - - 移除 DimensionTasks/圈子模块,移入功能入口 - - 新增 3列功能入口网格(对齐健康/成长页 grid-3col) - - 移除未登录态五维全景幸福矩阵 - - 重构结构:Banner → FamilyMemberStrip → 沙盘 → 网格 → 挑战 → 推荐 - - 清理冗余 JS 数据/方法/API调用和 CSS 样式 - - 导致 ProfileHeader/Badges/Growth/Menu 加载失败,页面仅显示内联个人信息卡片。 - 将 4 个 Profile 组件复制到全局 components/ 目录,并更新两处 import 路径。 - Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) - Co-authored-by: Sisyphus - - pages/health/index → pages/health-main/index - pages/growth/index → pages/growth-main/index - pages/profile/profile → pages/profile-main/profile - - 更新 nav.js, custom-tab-bar, pages.json 等 10 处引用 - - main.js 添加 custom-tab-bar 显式注册(强制构建编译) - - pages.json 4个Tab页添加 usingComponents 引用 custom-tab-bar - - 修复 checkout.vue ES6 简写方法语法错误 - - - 五维 index 页移入分包: mind→mind-detail, body→body-detail, wisdom→wisdom-detail, wealth分包 - - 新建 custom-tab-bar: 4Tab + 中间⭐按钮 + 五维半屏浮层, 规划师5Tab不变 - - 新建 pages/health/index.vue 健康Tab页(报告/测评/打卡概览) - - 增强 pages/growth/index.vue 为方案执行中心(待办/功能入口) - - 新建 utils/nav.js 统一导航工具 - - 替换 switchTab 引用为 nav.goPage/navigateTo - - 活动推荐移至成长页, 健康页新增科普文章推荐 - - profile 显示完整菜单(showServices=true) - - - 旧版 INSERT 未携带 type 字段,DB 列 NOT NULL 无默认值导致插入失败 - - 使用 MODIFY COLUMN 添加 DEFAULT 'login'(向后兼容,无需改代码) - - 直连生产 DB ALTER 已执行(下次服务重启 DBI 迁移幂等跳过) - - - 迁移191: foods 添加 report_id/score 列 - - 直连生产 DB ALTER 已执行 - - 修复 菌属-食材映射 JSON 解析失败: - - DB 顶层为 JSON Array 但代码期望 Map,加载时包装为 {_list: [...]} - - 消费端兼容两种形态 - - 修复 迁移112 日志等级: - - Duplicate column 已存在是幂等预期,log.error → log.warn - - 避免误报 - - - report_parse API 对接报告类型注册表 - - 新增 test_auto_tag 自动标注测试 - - report_unknown_cluster/report_unknown_upload/report_parser_import 五表 - - 新增 ReportParserController + ReportParserAdminController - - 新增 5 entity + 5 mapper + 3 service(ReportFingerprintService/ - ReportImportService/ReportParserDispatchService) - - schema.sql 同步 5 张新表定义 - - - addIngredient/removeIngredient/addFood 方法缺少 var self = this - - 2. 前端:无菌群报告/无推荐食材时弹窗引导上传报告 - 3. 后端:generateIngredientList 未配置共餐时降级为查询 - 家庭全部成员,而非返回空列表 - - 导致 ArrayIndexOutOfBoundsException: Index 7 out of bounds for length 7 - - 改为指向正确的饮食模块首页 /pages/diet/index - - - 修复 Unknown column 'is_living_together'(family_members, 迁移174已生效但DBI嵌套错误未触发) - - 修复嵌套 try/catch 结构(迁移178/180 误嵌在迁移179 catch 内) - - 迁移号校正:178→180, 180→181(diet 模块占用了原 178-181 编号) - - health_reports 新增 proxy_uploader_id / proxy_upload_note / ai_analysis - - health_report_drafts 新增 remark - 生产 DB 已直连 ALTER(无需等下次重启) - - - - - product-detail.vue: 详情页按会员身份展示 - 非会员显示普通价+加入会员享会员价链接,会员显示会员价+原价划线;去掉底部栏价格 - - 修复远端合并引入的编译错误: HealthReportController缺import、HealthReportService的reportMapper笔误、HealthReportDraft实体补remark字段 - - revert(frontend): 撤销 tabbar 4Tab 重构, 恢复 5维TabBar(行心身智富) - revert(frontend): 撤销分包重命名 -pkg, 恢复为 health/growth/profile - revert(frontend): 撤销 tabbar 入口页移至 pages/tabs/ 的改动 - 改为 v-if="!fanOpen"(默认常驻),且背景由透明边框改为实心半透明 - rgba(249,115,22,0.25)。该层绝对定位 72rpx 与 .fab-avatar 完全重合、 - DOM 顺序在后且未设 pointer-events: none,常驻覆盖在 FAB 按钮上层, - 拦截所有点击,导致家庭成员扇形无法展开。 - - .fab-pulse 增加 pointer-events: none,点击穿透到按钮本体 - - FAB 位置从 bottom: 33.33% 上移至 bottom: 45%(黄金分割位下移后过于靠下) - Reviewed-by: Sisyphus - - (