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

chore: auto bump version and changelog [skip ci]

zxyj-langgraph 18 часов назад
Родитель
Сommit
47b3efc7d0

+ 1 - 1
cfc-web/.last_build_commit

@@ -1 +1 @@
-b0fe06fa4a14c6ebd6b168243726bc3f7ecfe4bc
+d88e1f8c064ef3974f68e7b8c998c9e207457b40

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

@@ -1,12 +1,12 @@
 {
   "name": "cfc-web",
-  "version": "1.0.2394",
+  "version": "1.0.2395",
   "lockfileVersion": 3,
   "requires": true,
   "packages": {
     "": {
       "name": "cfc-web",
-      "version": "1.0.2394",
+      "version": "1.0.2395",
       "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.2395",
+  "version": "1.0.2396",
   "private": true,
   "scripts": {
     "dev": "vue-cli-service serve",

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

@@ -4,6 +4,77 @@
 
 ---
 
+## v1.0.2396 (2026-11-12)
+
+### 文档
+- 研发负责人第146轮闭环汇报 2026-11-12 1033(稳态延续轮:互斥放行距145轮28min;池空第31轮零派发 dispatched0/pending0;状态机86键 RED0/YELLOW63/GREEN8/DONE15 零流转;--changes 0新键无add-task;--resume 0候选;--auto 0派发+REQUEUE-SKIP-O22 0复发;部署pending12/confirmed77;SC 15/241无漂移;主工作树710处他人WIP零接触单文件入库)
+- 研发负责人第146轮闭环汇报 2026-11-12 1040(稳态轮:实现侧收口 70/70 能力键 YELLOW+(63 YELLOW 全有 sha 在链)/0 新键/⏳0/--resume 0 候选;任务池 161done+1failed 清零;--auto 幂等推进:多键 YELLOW✓+testing 部署验证派发(新增 1f31f4b094d5=S-cfc-157 实现条目),部署未收口13=6旧(O-24)+6中+1新/confirmed77;SC 15/241 无飘移,226 待测试三类流证据;710 处他人 WIP 零触碰)
+
+### Bug 修复
+- 删 modal 虚假恢复承诺 + 同步过时注释(纯文案,零逻辑)
+- 用户级分销绑定资产一致性返工(仅前端1文件)
+
+### 其他
+- 误导文案,合入前修掉。本轮只改文案与注释,不动任何逻辑闸门。
+- P1 删虚假恢复承诺:showBindRetryHint 的 modal content 删除「或从邀请链接重新进入」。
+- 核验实证该路径走不通——重进是新实例,onLoad 解析 refCode 后 checkExistingApply 命中
+- 已有 status=0 记录 → showStatusView=true → 表单 v-else 隐藏 → pending 态无补绑入口,
+- 走不到 handleSubmit→bindUserReferral。改为真实可达兜底:
+-   改前:申请已提交成功,但推荐人未绑定成功。请重试,或从邀请链接重新进入。
+-   改后:申请已提交成功,但推荐人绑定未成功。请点击「重试绑定」;若已离开本页,请联系邀请人或客服补绑。
+- 保留后端原文 serverMsg 前缀、保留「申请已提交成功」准确表述、保留 confirmText「重试绑定」
+- 及回调、不泛化「提交失败」、不丢后端具体原因。
+- 同步过时注释(非功能):绑定源已改用 this.inviteRefCode,getStorageSync('refCode') 仅残存
+- 于防错配说明注释。修正 :463/:479/:489/:507 处「保留 storage.refCode 以便重试」「失败绝不清码
+- 保证可重试/重新进入」等过时措辞——storage.refCode 已成僵尸字段(不参与绑定、清不清都不影响),
+- 可重试的真正保证是 this.inviteRefCode 组件字段未清 + userRefBound=false + bindingRef=false + modal 回调。
+- 未触碰(核验已 PASS 的资产闸门):doSubmit 返回值语义与唯一 return true 闸门、bindUserReferral
+- 三个调用点与 if(submitted) 前置、userRefBound/bindingRef 幂等防重入、removeStorageSync('refCode')
+- 仅成功分支、两级同源 this.inviteRefCode、openLoginSheet 透传、失败分支不清码、401 统一 reLaunch。
+- 自验:vue-template-compiler 模板编译 + acorn script parse 双 OK;diff 新增行全部为注释/文案,
+- 零逻辑代码改动;无可选链/CSS Grid/新增 emoji;仅改 1 文件。
+- 
+- 记录级 inviter_user_id 保持零副作用/强校验/三口径不变。本轮只堵资产一致性缺口。
+- P0 串行化: doSubmit 改为返回 boolean(仅 res.code==200 落库成功才 true);
+- handleSubmit(已登录) 与 onInviteLoginSuccess(浮层登录后) 两条路径同构,
+- 均 await doSubmit 确认成功后才串行 await bindUserReferral, 绝不并发;
+- 申请失败/邀请码无效/查重拒绝/网络失败 → doSubmit 返回 false → 不绑定、不发 CF;
+- 删除旧并发链 doSubmit().catch(function(){}) 与 bind().catch(function(){}), 不再有空 catch 吞失败。
+- P0 失败可恢复: removeStorageSync('refCode') 从并发块移入绑定成功(resolve 含 skipped)
+- 分支; 失败保留码 + userRefBound 保持 false; showBindRetryHint 弹 modal 承载后端
+- 具体 message(不覆盖 request toast) + 明确重试引导 + '重试绑定'就地补绑入口。
+- P0 防错配: 用户级绑定源改用组件字段 this.inviteRefCode(与记录级同源, onLoad 解析),
+- 不再读 uni.getStorageSync('refCode'); 码空不绑定; openLoginSheet 透传保持不变。
+- P1 幂等防重复发: userRefBound 成功/skipped 置 true, 整个流程(含 handleReapply/
+- handleAddRole 多次提交)至多成功绑定一次; 首次失败保持 false 以便重试补绑(那次未发资产);
+- 后端 CommissionService:140 已有推荐人直接抛为第二道幂等闸, 双重保证不重复发资产。
+- P1 修注释矛盾: onInviteLoginSuccess 旧注释'本页不重复调用 bindReferralIfNotSelf'
+- 与实际调用矛盾, 改为准确描述(就地浮层登录后主动补绑, 与 user-edit 路径互斥, 受幂等保护)。
+- 自验: vue-template-compiler 模板编译 + acorn script parse 双 OK; 无可选链/CSS Grid/新增 emoji;
+- 仅改 1 文件。CommissionService.bindReferral 幂等: :140 已有推荐人抛错, 走不到 :156 发资产。
+- 
+- 1. 两级归属并存(互不替代)
+-    - 记录级: service_role_applications.inviter_user_id, 后端按 refCode 服务端
+-      反查 User.referral_code 写入, 拒绝前端直传 inviterUserId(防冒领)
+-    - 用户级: users.referrerId, 沿用 App.vue→storage.refCode→bindReferralIfNotSelf
+-      链路; 就地浮层登录成功后显式消费一次, 保证推荐人=邀请人
+- 2. 注册判据=微信授权建号, 不引入短信验证码, 不碰 register-with-invite
+- 3. 分享直达现有 /pages/profile/service-role-apply?refCode=<码>, 不新建邀请页,
+-    不加邀请人头像/昵称展示
+- 后端三口径: ①无refCode正常受理(inviter_user_id=NULL) ②带码反查失败/自邀请
+- Result.error 显式拒绝不落库 ③带有效码写归属。记录级写入绝不调用
+- CommissionService.applyReferralSideEffects(不物化推荐树/directCount/F24 CF等)。
+- DDL: schema.sql 新部署建列+索引; DatabaseInitializer 迁移467 存量幂等补列+索引。
+- 前端: profile 两个邀请入口改透明 button open-type=share 覆盖, 页面级
+- onShareAppMessage 直达申请表并携带本人推广码(data+storage 双缓冲保证非空);
+- 申请页 onLoad 解析 refCode 存独立 key, 提交透传, 未登录就地浮层登录后续提交。
+- 改动 8 文件: 后端 5 / 前端 2 / API_REFERENCE 1。
+- 
+
+### 新功能
+- 团队邀请两级归属 + 分享直达服务角色申请表
+
+
 ## v1.0.2395 (2026-11-12)
 
 ### 文档

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

@@ -1,6 +1,6 @@
 # 更新日志
 
-> 当前版本: v1.0.2395
+> 当前版本: v1.0.2396
 
 ## 历史版本
 
@@ -8,6 +8,77 @@
 
 ---
 
+## v1.0.2396 (2026-11-12)
+
+### 文档
+- 研发负责人第146轮闭环汇报 2026-11-12 1033(稳态延续轮:互斥放行距145轮28min;池空第31轮零派发 dispatched0/pending0;状态机86键 RED0/YELLOW63/GREEN8/DONE15 零流转;--changes 0新键无add-task;--resume 0候选;--auto 0派发+REQUEUE-SKIP-O22 0复发;部署pending12/confirmed77;SC 15/241无漂移;主工作树710处他人WIP零接触单文件入库)
+- 研发负责人第146轮闭环汇报 2026-11-12 1040(稳态轮:实现侧收口 70/70 能力键 YELLOW+(63 YELLOW 全有 sha 在链)/0 新键/⏳0/--resume 0 候选;任务池 161done+1failed 清零;--auto 幂等推进:多键 YELLOW✓+testing 部署验证派发(新增 1f31f4b094d5=S-cfc-157 实现条目),部署未收口13=6旧(O-24)+6中+1新/confirmed77;SC 15/241 无飘移,226 待测试三类流证据;710 处他人 WIP 零触碰)
+
+### Bug 修复
+- 删 modal 虚假恢复承诺 + 同步过时注释(纯文案,零逻辑)
+- 用户级分销绑定资产一致性返工(仅前端1文件)
+
+### 其他
+- 误导文案,合入前修掉。本轮只改文案与注释,不动任何逻辑闸门。
+- P1 删虚假恢复承诺:showBindRetryHint 的 modal content 删除「或从邀请链接重新进入」。
+- 核验实证该路径走不通——重进是新实例,onLoad 解析 refCode 后 checkExistingApply 命中
+- 已有 status=0 记录 → showStatusView=true → 表单 v-else 隐藏 → pending 态无补绑入口,
+- 走不到 handleSubmit→bindUserReferral。改为真实可达兜底:
+-   改前:申请已提交成功,但推荐人未绑定成功。请重试,或从邀请链接重新进入。
+-   改后:申请已提交成功,但推荐人绑定未成功。请点击「重试绑定」;若已离开本页,请联系邀请人或客服补绑。
+- 保留后端原文 serverMsg 前缀、保留「申请已提交成功」准确表述、保留 confirmText「重试绑定」
+- 及回调、不泛化「提交失败」、不丢后端具体原因。
+- 同步过时注释(非功能):绑定源已改用 this.inviteRefCode,getStorageSync('refCode') 仅残存
+- 于防错配说明注释。修正 :463/:479/:489/:507 处「保留 storage.refCode 以便重试」「失败绝不清码
+- 保证可重试/重新进入」等过时措辞——storage.refCode 已成僵尸字段(不参与绑定、清不清都不影响),
+- 可重试的真正保证是 this.inviteRefCode 组件字段未清 + userRefBound=false + bindingRef=false + modal 回调。
+- 未触碰(核验已 PASS 的资产闸门):doSubmit 返回值语义与唯一 return true 闸门、bindUserReferral
+- 三个调用点与 if(submitted) 前置、userRefBound/bindingRef 幂等防重入、removeStorageSync('refCode')
+- 仅成功分支、两级同源 this.inviteRefCode、openLoginSheet 透传、失败分支不清码、401 统一 reLaunch。
+- 自验:vue-template-compiler 模板编译 + acorn script parse 双 OK;diff 新增行全部为注释/文案,
+- 零逻辑代码改动;无可选链/CSS Grid/新增 emoji;仅改 1 文件。
+- 
+- 记录级 inviter_user_id 保持零副作用/强校验/三口径不变。本轮只堵资产一致性缺口。
+- P0 串行化: doSubmit 改为返回 boolean(仅 res.code==200 落库成功才 true);
+- handleSubmit(已登录) 与 onInviteLoginSuccess(浮层登录后) 两条路径同构,
+- 均 await doSubmit 确认成功后才串行 await bindUserReferral, 绝不并发;
+- 申请失败/邀请码无效/查重拒绝/网络失败 → doSubmit 返回 false → 不绑定、不发 CF;
+- 删除旧并发链 doSubmit().catch(function(){}) 与 bind().catch(function(){}), 不再有空 catch 吞失败。
+- P0 失败可恢复: removeStorageSync('refCode') 从并发块移入绑定成功(resolve 含 skipped)
+- 分支; 失败保留码 + userRefBound 保持 false; showBindRetryHint 弹 modal 承载后端
+- 具体 message(不覆盖 request toast) + 明确重试引导 + '重试绑定'就地补绑入口。
+- P0 防错配: 用户级绑定源改用组件字段 this.inviteRefCode(与记录级同源, onLoad 解析),
+- 不再读 uni.getStorageSync('refCode'); 码空不绑定; openLoginSheet 透传保持不变。
+- P1 幂等防重复发: userRefBound 成功/skipped 置 true, 整个流程(含 handleReapply/
+- handleAddRole 多次提交)至多成功绑定一次; 首次失败保持 false 以便重试补绑(那次未发资产);
+- 后端 CommissionService:140 已有推荐人直接抛为第二道幂等闸, 双重保证不重复发资产。
+- P1 修注释矛盾: onInviteLoginSuccess 旧注释'本页不重复调用 bindReferralIfNotSelf'
+- 与实际调用矛盾, 改为准确描述(就地浮层登录后主动补绑, 与 user-edit 路径互斥, 受幂等保护)。
+- 自验: vue-template-compiler 模板编译 + acorn script parse 双 OK; 无可选链/CSS Grid/新增 emoji;
+- 仅改 1 文件。CommissionService.bindReferral 幂等: :140 已有推荐人抛错, 走不到 :156 发资产。
+- 
+- 1. 两级归属并存(互不替代)
+-    - 记录级: service_role_applications.inviter_user_id, 后端按 refCode 服务端
+-      反查 User.referral_code 写入, 拒绝前端直传 inviterUserId(防冒领)
+-    - 用户级: users.referrerId, 沿用 App.vue→storage.refCode→bindReferralIfNotSelf
+-      链路; 就地浮层登录成功后显式消费一次, 保证推荐人=邀请人
+- 2. 注册判据=微信授权建号, 不引入短信验证码, 不碰 register-with-invite
+- 3. 分享直达现有 /pages/profile/service-role-apply?refCode=<码>, 不新建邀请页,
+-    不加邀请人头像/昵称展示
+- 后端三口径: ①无refCode正常受理(inviter_user_id=NULL) ②带码反查失败/自邀请
+- Result.error 显式拒绝不落库 ③带有效码写归属。记录级写入绝不调用
+- CommissionService.applyReferralSideEffects(不物化推荐树/directCount/F24 CF等)。
+- DDL: schema.sql 新部署建列+索引; DatabaseInitializer 迁移467 存量幂等补列+索引。
+- 前端: profile 两个邀请入口改透明 button open-type=share 覆盖, 页面级
+- onShareAppMessage 直达申请表并携带本人推广码(data+storage 双缓冲保证非空);
+- 申请页 onLoad 解析 refCode 存独立 key, 提交透传, 未登录就地浮层登录后续提交。
+- 改动 8 文件: 后端 5 / 前端 2 / API_REFERENCE 1。
+- 
+
+### 新功能
+- 团队邀请两级归属 + 分享直达服务角色申请表
+
+
 ## v1.0.2395 (2026-11-12)
 
 ### 文档