Просмотр исходного кода

chore: auto bump version and changelog [skip ci]

iwt 4 дней назад
Родитель
Сommit
fb44982a05

+ 1 - 1
cfc-web/.last_build_commit

@@ -1 +1 @@
-001e0c2bcbb7039f3ad79cbcdd69baf4391129b9
+78546847bb2e49a95f101d7368d8c76dd18035ee

+ 2 - 2
cfc-web/package-lock.json

@@ -1,12 +1,12 @@
 {
   "name": "cfc-web",
-  "version": "1.0.2205",
+  "version": "1.0.2206",
   "lockfileVersion": 3,
   "requires": true,
   "packages": {
     "": {
       "name": "cfc-web",
-      "version": "1.0.2205",
+      "version": "1.0.2206",
       "dependencies": {
         "@wangeditor/editor": "^5.1.23",
         "@wangeditor/editor-for-vue": "^1.0.2",

+ 1 - 1
cfc-web/package.json

@@ -1,6 +1,6 @@
 {
   "name": "cfc-web",
-  "version": "1.0.2206",
+  "version": "1.0.2207",
   "private": true,
   "scripts": {
     "dev": "vue-cli-service serve",

+ 84 - 0
cfc-web/public/CHANGELOG-v1.0.md

@@ -4,6 +4,90 @@
 
 ---
 
+## v1.0.2207 (2026-11-08)
+
+### 测试
+- S-cfc-76 admin.family.actionMenu — RED 契约单测(更多按钮去掉查看成员/删除,4例全红)
+- S-cfc-74 能力键 admin.family.planEntry 契约级单测(TDD-RED,预期红 6/6)——planCount=0 可点击进方案明细 + plans 弹窗补「代生成方案」入口
+- S-cfc-73 能力键 admin.family.reportEntry 契约级单测(TDD-RED,预期红 6/6)——reportCount=0 可点击进报告明细 + 报告弹窗补代传报告入口
+- S-cfc-72 admin.familyCoupon.backToList — RED 契约单测(3例全红)
+
+### 其他
+- 溯源·需求:docs/superpowers/specs/2026-11-08-family-admin-list-polish.md §需求5
+- (更多按钮里去掉查看成员,家庭不能删除)
+- 溯源·设计:Families.vue L92-96 删除 viewMembers/delete 两个 dropdown-item;
+- L384-390 handleActionCmd 清理对应 case;后端保留 deleteFamily API 不删。
+- 契约断言(6例,4红2绿):
+- - 操作列存在 / 「更多」下拉菜单渲染(基线,绿)
+- - 下拉菜单不再出现 command=viewMembers(红:当前仍存在)
+- - 下拉菜单不再出现 command=delete(红:当前仍存在)
+- - handleActionCmd 不再分发 viewMembers(红:当前仍分发)
+- - handleActionCmd 不再分发 delete(红:当前仍分发)
+- 当前实现未落地,预期 RED;GREEN 阶段按设计删除对应 dropdown-item 与 case 后转绿。
+- 参考同批 S-cfc-75 Families.createdAtDisplay.spec.js 的读源码风格。
+- 
+- 溯源:docs/superpowers/specs/2026-11-08-family-admin-list-polish.md §需求1
+- 契约断言:
+- - 从家庭管理列表进入优惠券管理页时,PageHeader 渲染返回按钮(back=true)
+- - 点击返回按钮应 router.push 回 /admin/families(显式导航)
+- - 返回列表不使用 history.back(),而是 router.push 指定目标路径
+- 当前实现未落地,预期 RED;GREEN 阶段实现后三例转绿。
+- 参考 PageHeader 现有 idiom(OrderDetail.vue back + @back 显式 push)。
+- 
+- merge(S-cfc-58): family.invite.joinValidationRules 准入校验规则(MIN_BIRTHDAY+分错误文案;统一以58为基准,57/59同源实现)
+- 
+- - 真实姓名 trim 非空且长度 1-20 字;出生日期非空、不晚于今天、不早于 1900-01-01(不设年龄上限)
+- - 性别严格 male/female(大小写敏感);缺失/非法直接抛错、不落库
+- - 对齐 UserService.java:492-505 解析口径(规格 2026-11-07-family-join-required-info §3 AC-R3 / §5 WI-3)
+- - FamilyJoinValidationRulesContractTest 14/14 绿;同实现的 Gate 12/12、RequiredInfo 10/10 同步转绿
+- 
+- (契约 §5.2: inviteCode + 小程序码wxacode(独立团队落地页) + systemId + teamName + inviterId):
+- - 复用 distributionService.generateInviteCode 生成 8 位邀请码(§7.7 不新建表);
+- - wxacode = WechatService.generateWxacode(scene=code, page=pages/team-invite/join),
+-   WechatService 不可用/失败时降级返回落地页路径兜底(契约仅要求非空);
+- - teamName = getUserTeams 解析命中体系名, 查询不可用降级空串;
+- - 错误透传: 体系不存在/未启用/不在体系中沿用 service message。
+- TeamInvitationCreateContractTest 7 用例 2 红转绿(5 边界/权限流维持绿)。
+- 
+- - realName null/空白/超20字、birthday null、gender 非 male|female → 拒绝加入且不落库
+- - birthday 晚于今天 / 早于1900-01-01 → 拒绝(年龄不设上限)
+- - 契约测试 12/12 全绿(FamilyJoinRequestServiceJoinValidationGateTest)
+- 
+- - StarScoreCalculator 补齐看板契约:starThreshold / weightedScore / gapToNextStar /
+-   isPromotable(双门槛,兼容看板与重评两种调用约定) + 实时聚合 currentStarLevel / totalScore /
+-   dimensionBreakdown / dualThresholdProgress / conversionRates / conversionPaths(按最易够到排序) /
+-   twelveMonthTrajectory(读 team_star_snapshot 近 12 月,升序)/ myView 聚合
+- - 新增 TeamStarController:POST /api/team-star/my-view,统一 Result<T>,@RequestAttribute userId
+- - 新增看板 DTO:TeamStarMyViewVO + 三维构成/双门槛进度/换算率/换算路径/轨迹点
+- - TeamProfitConfigService 增加 team_profit.star_conversion 换算率读取(默认 250/200/10)
+- - 数据源:TeamProfitStatsMapper(直接/团队/推荐收入、团队直推)+ TeamStarSnapshotMapper;
+-   无 Spring/DB 的反射契约场景安全回退默认值
+- - schema.sql / team_star_snapshot(uk_user_period)与实体沿用既有实现,测试已在 origin/cfclub 绿
+- 验证:mvn -o -Dtest=TeamStarMyViewContractTest(24/24 通过);
+- 邻接 StarScoreCalculatorContractRedTest 10/10、TeamProfitAdminManageContractTest 20/20 通过;
+- TeamProfitCronContractTest.refundWithinCooling_cancelAllRecordsFundsNotPaid 为改动前既有红(已复现基线确认)。
+- 
+
+### 文档
+- 测试负责人第86轮闭环汇报 - langgraph 27→26(-1, B-54 DLL漂移)、B-51本地Chromium闭环、浏览器5/5+6/6零回归
+- 测试负责人第85轮工作汇报 - B-61源码已修/部署滞后、B-64装置漂移、langgraph 27/43、3条用例补录
+- 第85轮研发交接通知 - B-61 部署请求(P0)、B-64 装置漂移、langgraph环境红清单
+- 测试负责人第85轮闭环汇报 - B-61源码已修/部署滞后、B-64新增、langgraph +1转绿、3条用例补录(S-cfc-57/58/59/60/70)
+- 研发负责人第67轮汇报(错峰03)账本收口:S-cfc-57/58/59/60/70+B-61 改判done + 5键YELLOW回填yellow_sha
+
+### Bug 修复
+- S-cfc-57/58/59 统一校验实现 - 调用点前移至用户存在检查后(兼容三键契约测试设计锚点,58实现为基准)
+- 健康方案 family 接口纳入登录鉴权 - JwtInterceptor LOGIN_REQUIRED_PATHS 补 /api/health/plan/ 前缀,匿名请求将 401(同族 /api/health/report/ 风格)
+
+### 新功能
+- 实现 team.star.digest 月度星级简报(升/降/持平 + 行动建议 + 权益)
+- S-cfc-58 使绿 - createJoinRequest 准入校验门禁 validateJoinRequiredInfo
+- S-cfc-60 team.invitation.create 生成团队邀请返回对象(含wxacode/teamName)
+- S-cfc-57 family.invite.joinValidationGate 加入申请前校验真实姓名/出生日期/性别
+- S-cfc-71 我的星级看板与差距换算(§12-T7 + §4.3.1 ①②)
+- S-cfc-59 家庭加入准入校验门禁 validateJoinRequiredInfo 实现(真实姓名/出生日期/性别三必填,WI-2/WI-3)
+
+
 ## v1.0.2206 (2026-11-08)
 
 ### 文档

+ 85 - 1
cfc-web/public/CHANGELOG.md

@@ -1,6 +1,6 @@
 # 更新日志
 
-> 当前版本: v1.0.2206
+> 当前版本: v1.0.2207
 
 ## 历史版本
 
@@ -8,6 +8,90 @@
 
 ---
 
+## v1.0.2207 (2026-11-08)
+
+### 测试
+- S-cfc-76 admin.family.actionMenu — RED 契约单测(更多按钮去掉查看成员/删除,4例全红)
+- S-cfc-74 能力键 admin.family.planEntry 契约级单测(TDD-RED,预期红 6/6)——planCount=0 可点击进方案明细 + plans 弹窗补「代生成方案」入口
+- S-cfc-73 能力键 admin.family.reportEntry 契约级单测(TDD-RED,预期红 6/6)——reportCount=0 可点击进报告明细 + 报告弹窗补代传报告入口
+- S-cfc-72 admin.familyCoupon.backToList — RED 契约单测(3例全红)
+
+### 其他
+- 溯源·需求:docs/superpowers/specs/2026-11-08-family-admin-list-polish.md §需求5
+- (更多按钮里去掉查看成员,家庭不能删除)
+- 溯源·设计:Families.vue L92-96 删除 viewMembers/delete 两个 dropdown-item;
+- L384-390 handleActionCmd 清理对应 case;后端保留 deleteFamily API 不删。
+- 契约断言(6例,4红2绿):
+- - 操作列存在 / 「更多」下拉菜单渲染(基线,绿)
+- - 下拉菜单不再出现 command=viewMembers(红:当前仍存在)
+- - 下拉菜单不再出现 command=delete(红:当前仍存在)
+- - handleActionCmd 不再分发 viewMembers(红:当前仍分发)
+- - handleActionCmd 不再分发 delete(红:当前仍分发)
+- 当前实现未落地,预期 RED;GREEN 阶段按设计删除对应 dropdown-item 与 case 后转绿。
+- 参考同批 S-cfc-75 Families.createdAtDisplay.spec.js 的读源码风格。
+- 
+- 溯源:docs/superpowers/specs/2026-11-08-family-admin-list-polish.md §需求1
+- 契约断言:
+- - 从家庭管理列表进入优惠券管理页时,PageHeader 渲染返回按钮(back=true)
+- - 点击返回按钮应 router.push 回 /admin/families(显式导航)
+- - 返回列表不使用 history.back(),而是 router.push 指定目标路径
+- 当前实现未落地,预期 RED;GREEN 阶段实现后三例转绿。
+- 参考 PageHeader 现有 idiom(OrderDetail.vue back + @back 显式 push)。
+- 
+- merge(S-cfc-58): family.invite.joinValidationRules 准入校验规则(MIN_BIRTHDAY+分错误文案;统一以58为基准,57/59同源实现)
+- 
+- - 真实姓名 trim 非空且长度 1-20 字;出生日期非空、不晚于今天、不早于 1900-01-01(不设年龄上限)
+- - 性别严格 male/female(大小写敏感);缺失/非法直接抛错、不落库
+- - 对齐 UserService.java:492-505 解析口径(规格 2026-11-07-family-join-required-info §3 AC-R3 / §5 WI-3)
+- - FamilyJoinValidationRulesContractTest 14/14 绿;同实现的 Gate 12/12、RequiredInfo 10/10 同步转绿
+- 
+- (契约 §5.2: inviteCode + 小程序码wxacode(独立团队落地页) + systemId + teamName + inviterId):
+- - 复用 distributionService.generateInviteCode 生成 8 位邀请码(§7.7 不新建表);
+- - wxacode = WechatService.generateWxacode(scene=code, page=pages/team-invite/join),
+-   WechatService 不可用/失败时降级返回落地页路径兜底(契约仅要求非空);
+- - teamName = getUserTeams 解析命中体系名, 查询不可用降级空串;
+- - 错误透传: 体系不存在/未启用/不在体系中沿用 service message。
+- TeamInvitationCreateContractTest 7 用例 2 红转绿(5 边界/权限流维持绿)。
+- 
+- - realName null/空白/超20字、birthday null、gender 非 male|female → 拒绝加入且不落库
+- - birthday 晚于今天 / 早于1900-01-01 → 拒绝(年龄不设上限)
+- - 契约测试 12/12 全绿(FamilyJoinRequestServiceJoinValidationGateTest)
+- 
+- - StarScoreCalculator 补齐看板契约:starThreshold / weightedScore / gapToNextStar /
+-   isPromotable(双门槛,兼容看板与重评两种调用约定) + 实时聚合 currentStarLevel / totalScore /
+-   dimensionBreakdown / dualThresholdProgress / conversionRates / conversionPaths(按最易够到排序) /
+-   twelveMonthTrajectory(读 team_star_snapshot 近 12 月,升序)/ myView 聚合
+- - 新增 TeamStarController:POST /api/team-star/my-view,统一 Result<T>,@RequestAttribute userId
+- - 新增看板 DTO:TeamStarMyViewVO + 三维构成/双门槛进度/换算率/换算路径/轨迹点
+- - TeamProfitConfigService 增加 team_profit.star_conversion 换算率读取(默认 250/200/10)
+- - 数据源:TeamProfitStatsMapper(直接/团队/推荐收入、团队直推)+ TeamStarSnapshotMapper;
+-   无 Spring/DB 的反射契约场景安全回退默认值
+- - schema.sql / team_star_snapshot(uk_user_period)与实体沿用既有实现,测试已在 origin/cfclub 绿
+- 验证:mvn -o -Dtest=TeamStarMyViewContractTest(24/24 通过);
+- 邻接 StarScoreCalculatorContractRedTest 10/10、TeamProfitAdminManageContractTest 20/20 通过;
+- TeamProfitCronContractTest.refundWithinCooling_cancelAllRecordsFundsNotPaid 为改动前既有红(已复现基线确认)。
+- 
+
+### 文档
+- 测试负责人第86轮闭环汇报 - langgraph 27→26(-1, B-54 DLL漂移)、B-51本地Chromium闭环、浏览器5/5+6/6零回归
+- 测试负责人第85轮工作汇报 - B-61源码已修/部署滞后、B-64装置漂移、langgraph 27/43、3条用例补录
+- 第85轮研发交接通知 - B-61 部署请求(P0)、B-64 装置漂移、langgraph环境红清单
+- 测试负责人第85轮闭环汇报 - B-61源码已修/部署滞后、B-64新增、langgraph +1转绿、3条用例补录(S-cfc-57/58/59/60/70)
+- 研发负责人第67轮汇报(错峰03)账本收口:S-cfc-57/58/59/60/70+B-61 改判done + 5键YELLOW回填yellow_sha
+
+### Bug 修复
+- S-cfc-57/58/59 统一校验实现 - 调用点前移至用户存在检查后(兼容三键契约测试设计锚点,58实现为基准)
+- 健康方案 family 接口纳入登录鉴权 - JwtInterceptor LOGIN_REQUIRED_PATHS 补 /api/health/plan/ 前缀,匿名请求将 401(同族 /api/health/report/ 风格)
+
+### 新功能
+- 实现 team.star.digest 月度星级简报(升/降/持平 + 行动建议 + 权益)
+- S-cfc-58 使绿 - createJoinRequest 准入校验门禁 validateJoinRequiredInfo
+- S-cfc-60 team.invitation.create 生成团队邀请返回对象(含wxacode/teamName)
+- S-cfc-57 family.invite.joinValidationGate 加入申请前校验真实姓名/出生日期/性别
+- S-cfc-71 我的星级看板与差距换算(§12-T7 + §4.3.1 ①②)
+- S-cfc-59 家庭加入准入校验门禁 validateJoinRequiredInfo 实现(真实姓名/出生日期/性别三必填,WI-2/WI-3)
+
+
 ## v1.0.2206 (2026-11-08)
 
 ### 文档