| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393 |
- [
- {
- "id": "T15",
- "title": "规划师培训认证前端:认证中心/课程/题库管理端 + 小程序培训中心页",
- "priority": "P0",
- "module": "fullstack",
- "instance": "",
- "status": "done",
- "spec": "docs/superpowers/specs/2026-10-22-planner-learning-assessment-gate-design.md",
- "prompt": "规格文档 2026-10-22-planner-learning-assessment-gate-design.md 后端已全量落地(迁移394-401 九表 + PlannerCertificationService 认证状态机 + PlannerCertificationGuard 中央闸门 + 规划师端7接口 + 管理端26接口),但前端缺失,本任务补齐:①小程序规划师端「培训认证」中心页:展示类别(planner/nutritionist/assessor)认证状态、课程列表与学习进度(planner_courses/planner_course_progress)、考试入口(planner_exam_attempts)、线下课打卡(activity_checkins);②cfc-web 管理端三页:认证看板(审批/状态流转,对接管理端26接口)、课程管理(CRUD + 关联类别)、题库管理(题目/试卷维护);③引导计划:认证通过后 Guide.status=active 的联动说明与失败态提示。落点:cfc-frontend/pages/guide/ 新增 training 相关页面并注册 pages.json;cfc-web/src/views/ 新增 admin 认证管理页 + 路由 + perm 配置;utils/api.js 与 cfc-web/src/api/ 增加对应封装。验收要点:后端已存在的 7+26 接口全部被前端调用;认证状态机 init/learning→exam_passed→certified 在小程序可视可操作;管理端可完成课程/题库维护与认证审批;mvn clean compile 与两前端 node --check/build 通过;不触碰后端 Java 代码(除非发现接口缺口,需先回来汇报)。",
- "session_id": "ses_e9183f23cffe6q3vnmLOWy9lyq",
- "dispatched_at": "2026-10-24 23:16:26",
- "dispatched_to": "lan-248",
- "model": "axonhub/deepseek",
- "done_at": "2026-10-25 00:51:52"
- },
- {
- "id": "T16",
- "title": "后台多渠道发货对话框:按 deliveryType 切换快递/同城/自提/虚拟商品",
- "priority": "P1",
- "module": "fullstack",
- "instance": "",
- "status": "done",
- "spec": "docs/superpowers/specs/2026-10-22-fulfillment-multi-mode-design.md",
- "prompt": "规格 2026-10-22-fulfillment-multi-mode-design.md:管理端发货要对齐微信小程序后台四种方式——快递 logistics_type=1 / 同城配送 2(ProductOrder.deliveryMethod 的注释已含 6=同城配送)/ 用户自提 4(不再跳过微信同步)/ 虚拟商品 3(支付成功自动发货 autoShipVirtualOrder 幂等 fail-open)。现后端已具备 ship(orderNo, shipType, ...) 与 WechatService.uploadShippingInfo 按 logisticsType 1/2/3/4 分流;缺口在 cfc-web 发货对话框仍是旧的仅快递/自提二态(OrderManage.vue / OrderDetail.vue 中 deliveryMethod==2 才显示自提)。本任务:①OrderManage.vue 发货对话框按订单 deliveryMethod 切换表单字段(快递=物流公司+单号;同城配送=配送公司+运单;自提=仅确认提示,仍同步微信 logisticsType=4;虚拟商品=展示自动发货状态,按钮置灰并说明);②OrderDetail.vue 配送方式展示扩展为 1/2/3/4/5/6 全编码可读文案与图标;③确认发货后子订单明细同样是微信对照 logisticsType 传参。落点:cfc-web/src/views/admin/OrderManage.vue、OrderDetail.vue,必要时改 src/api/。验收要点:四类订单发货表单正确切换且微信同步参数类型正确(同城走 logistics_type=2 需单号公司、自提=4 无单号、虚拟=3 自动发货不弹表单);deliveryMethod=6 的订单显示「同城配送」而非「快递」;vue-cli-service build SUCCESS;微信 upload_shipping_info URL 带 /wxa 前缀;不改后端接口签名。",
- "session_id": "ses_e9183e8f9ffeXVXv6Wiv5TFKhk",
- "dispatched_at": "2026-10-24 23:16:28",
- "dispatched_to": "lan-248",
- "model": "axonhub/deepseek",
- "done_at": "2026-10-24 23:58:46"
- },
- {
- "id": "T17",
- "title": "报告快速分析:Redis 每日频控(免费1次/日)+ 付费多轮 + 配额联动",
- "priority": "P1",
- "module": "backend",
- "instance": "",
- "status": "done",
- "spec": "docs/superpowers/specs/2026-09-10-report-quick-analyze-design.md",
- "prompt": "规格 2026-09-10-report-quick-analyze-design.md 与扩展版 2026-09-13-report-quick-analyze-extend-design.md:报告详情页快速分析需免费版每日 1 次 Redis 计数、付费版多轮,复用 chat_graph + AiGateway/langgraph,LangGraph 零改动。现状:后端已有 POST /api/chat/report/analyze(AIChatController#report/analyze,与 /chat/send 共用 buildChatInputs),前端 report-detail.vue 已接入报告反馈入口,但「每日限次」与「付费多轮」尚未落地(代码检索未发现 reportAnalyzeLimit/多轮配额逻辑)。本任务:①引入 Redis 依赖与配置(application.yml 已有 redis 配置则复用),新增 ReportAnalyzeQuotaService:免费用户每日 1 次(key=report:analyze:{userId}:{yyyyMMdd},INCR+EXPIRE),会员按 membership levels features/maxDailyAnalyze 配置次数;②超限返回 Result 明确 message(区分「今日已用完/请升级会员」);③前端 report-detail.vue 消费限次结果:展示剩余次数、超限弹窗带升级入口(跳 membership 页);④付费多轮在同一订单/会话内计数,不可重复刷。落点:cfc-backend/src/main/java/com/etotem/cfc/service/ 新增 QuotaService + AIChatController 限流接线;cfc-frontend/pages/health/report-detail.vue 适配。验收要点:免费用户第 2 次调用被拒且 Redis key 到期后恢复;会员次数准确;mvn clean compile 通过;新增 2-3 个纯 Mockito 单测(不依赖真实 Redis,可用模拟);API_REFERENCE 4.x 同步限次语义。",
- "session_id": "ses_e9183dc8fffecmHzAeN1UWqMuu",
- "dispatched_at": "2026-10-24 23:16:32",
- "dispatched_to": "pub-iwintrue",
- "model": "etotem/deepseek",
- "done_at": "2026-10-25 00:21:24"
- },
- {
- "id": "T18",
- "title": "五维自检深度 AI 集成(P1-1 历史趋势解读 + P1-2 Chat 上下文注入)",
- "priority": "P1",
- "module": "fullstack",
- "instance": "",
- "status": "done",
- "spec": "docs/superpowers/specs/2026-08-31-self-check-ai-integration-design.md",
- "prompt": "规格 2026-08-31-self-check-ai-integration-design.md:P0-1 纯AI替换静态建议与 P0-2 用户点击生成健康计划已在 self-check-result.vue 落地(有 AI 解读区块、生成健康计划按钮、self-check-ai.vue AI出题页),P1-1 历史趋势AI解读与 P1-2 Chat 上下文注入未实现。本任务:①P1-1:自检结果页新增「历史趋势」区块,调后端聚合该成员历次自检得分(FiveDimensionSelfCheck 表按维度)→ 组装上下文 → 走 AiGateway/langgraph chat_graph 生成趋势解读(上升/下降/波动 + 建议),展示折线趋势与 AI 解读文字;②P1-2:AIChatController 或统一上下文中注入最近一次自检摘要(维度分 + 低分项),使 /chat/send 能针对自检结果连续对话;③后端零 LangGraph 改动,仅 Java 侧组装 prompt 上下文(遵循 AiGateway 熔断/超时/Fallback 规范)。落点:cfc-backend/src/main/java/com/etotem/cfc/service/ 新增 SelfCheckTrendService(或扩展 FiveDimensionSelfCheckService)+ AIChatController 上下文注入;cfc-frontend/pages/family/self-check-result.vue 新增趋势区块。验收要点:3 次以上自检记录可出趋势解读;无记录时优雅降级(隐藏区块或引导);Chat 提问「我上次自检哪项最低」能答对;mvn clean compile + node --check 通过;新增单测覆盖上下文拼装与历史聚合。",
- "session_id": "ses_e9183d076ffegxj0N2urb9YYoQ",
- "dispatched_at": "2026-10-24 23:16:34",
- "dispatched_to": "pub-iwintrue",
- "model": "etotem/deepseek",
- "done_at": "2026-10-25 04:29:24"
- },
- {
- "id": "T19-A",
- "title": "营养商品标注·A线:Product 营养成分(热量/蛋白质/脂肪/碳水/膳食纤维)+ 管理端录入 + 小程序展示",
- "priority": "P2",
- "module": "fullstack",
- "instance": "pub-iwintrue",
- "status": "done",
- "spec": "docs/superpowers/specs/2026-10-27-nutrition-product-tagging-prd.md",
- "prompt": "A 线(营养成分)。已派发。两条硬约束已写进指令:① 迁移必须写进 DatabaseInitializer.runMigrations()(application.yml 无 schema 自动初始化,只改 schema.sql 线上不建列);② 必须扩展 ProductService.syncFromProduct()(调用点 316/355/592),否则营养侧永远拿不到数据。营养基准加 nutrition_basis 列(默认 per_100g,预留每份)。留空存 NULL 不是 0。无数据整块隐藏。禁止治疗/保健功能宣称。 | 原判定=从未开工,2026-10-27 派发。",
- "session_id": "ses_e91745133ffebXvnPFXhnF7SBM",
- "dispatched_at": "2026-10-24 23:33:31",
- "dispatched_to": "pub-iwintrue",
- "model": "axonhub/deepseek",
- "done_at": "2026-10-26 12:45",
- "note": "已 push origin/feature/nutrition-product-tagging = 328443d43(feat(shop) 迁移417+后台录入+小程序展示)。2026-10-27 复核分支存在,标记 done。原 instance 字段混写会话ID,已拆分。"
- },
- {
- "id": "T20",
- "title": "食材营养均衡分析链路落地(diet-ingredient-balance)",
- "priority": "P2",
- "module": "fullstack",
- "instance": "",
- "status": "done",
- "spec": "docs/superpowers/specs/2026-09-13-diet-ingredient-balance-design.md",
- "prompt": "规格 2026-09-13-diet-ingredient-balance-design.md 设计的是饮食均衡分析(按食材类别/营养素覆盖评估家庭成员食谱缺口),目前代码检索未发现对应实现(无 ingredientBalance 相关后端类与前端页面)。本任务按规格落地最小可用的 P0 范围:①后端新增 DietBalanceService:入参家庭成员的饮食偏好/忌口/近期打卡(diet_checkin / diet_preferences),输出五类食材(谷薯/蔬果/肉蛋奶/豆坚果/油盐)覆盖度与缺口建议(缺口建议可调用 AiGateway/langgraph 生成自然语言,失败降级为模板文案);暴露 POST /api/diet/balance 接口(Result 包装 + JWT 鉴权);②小程序新增或复用 diet 页展示均衡结果(雷达/环形 canvas 或纯文本卡片均可),入口放在 dial 打卡页或 diet-index;③涉及新表则优先 DB 迁移幂等,尽量复用现有表。落点:cfc-backend/src/main/java/com/etotem/cfc/service/DietBalanceService.java + controller/diet/DietBalanceController.java + 迁移(如需要);cfc-frontend/pages/diet/ 新增 balance 区块。验收要点:mvn clean compile 通过;接口可按成员返回均衡评分与缺口清单;无打卡数据时给出可用默认分析或友好空态;新增 2 个纯 Mockito 单测;API_REFERENCE 同步新增接口(4.x 递增)。",
- "session_id": "ses_e91742972ffeTwqN5eAge61gQp",
- "dispatched_at": "2026-10-24 23:33:40",
- "dispatched_to": "lan-204",
- "model": "axonhub/deepseek",
- "done_at": "2026-10-25 00:21:24"
- },
- {
- "id": "T21",
- "title": "团队层级树形可视化完善 + 富页面推荐码清理",
- "priority": "P2",
- "module": "frontend",
- "instance": "",
- "status": "done",
- "spec": "docs/superpowers/specs/2026-09-09-team-hierarchy-design.md",
- "prompt": "规格 2026-09-09-team-hierarchy-design.md:团队层级树从下往上生长 + 团队消费额分级统计 + 直推成员消费/CF明细 + 我的推荐人展示 + 去掉富页面推荐码。现状:promotion/team.vue 已有团队统计卡(团队规模/返佣比例/档位)、L1/L2 Tab、成员列表、成长曲线与消费曲线(canvas),后端 CommissionController 已提供 team/team/list/team/consumption/my-referrer/team/tree/team/growth-curve/team/all-members-consumption-curve 等接口;「我的推荐人展示」与「树形生长图」「富页面推荐码移除」未确认落地。本任务:①team.vue 增加「我的推荐人」区块(调 /my-referrer,无推荐人时展示邀请入口);②在现有列表/曲线基础上叠加层级树形视图(用后端 /team/tree 扁平数据递归渲染成员树,方向自下而上为符合规格,如 canvas 成本高可先以嵌套列表+缩进呈现,注明偏离);③检索并移除富(profile)页面的推荐码展示(规格明确要求去掉),并核对 promotion 页不受影响;④消费分级统计(按档位聚合)若接口已存在则前端展示。落点:cfc-frontend/pages/promotion/team.vue、profile 相关页面;必要时补 utils/api.js 封装(后端接口已存在则零后端改动)。验收要点:node --check 通过;我的推荐人/无推荐人引导正确;树形视图数据与 /team/tree 响应一致;富页面不再出现推荐码;不影响现有 L1/L2 列表与曲线。",
- "session_id": "ses_e9163b087ffefjmH21pIB4bieD",
- "dispatched_at": "2026-10-24 23:51:40",
- "dispatched_to": "local-45278",
- "model": "axonhub/deepseek",
- "done_at": "2026-10-25 10:02:27"
- },
- {
- "id": "T22",
- "title": "方案→任务全链路回流传真(plan_json.sections[].tasks 驱动任务中心,含删除/降级兜底验收)",
- "priority": "P2",
- "module": "fullstack",
- "instance": "",
- "status": "done",
- "spec": "docs/superpowers/plans/2026-09-04-plan-to-task-unification.md",
- "prompt": "实现计划 2026-09-04-plan-to-task-unification.md 与本仓库 AGENTS.md 所述:plan_json.sections[].tasks 是唯一事实源,配套 plan-standard-content(2026-08-28)已有 LangGraph 输出 tasks + 正则兜底 + 存量懒加载回填 + 规划师端结构化编辑 UI。任务要求对「方案→任务」全链路做一次端到端确认与收尾:①确认 approveAndPublish 后 HealthPlan 的 plan_json.sections[].tasks 是否正确生成 tasks 实例(source_type=plan,关联 taskId),缺失时是否有懒加载回填兜底;②确认方案删除(2026-10-17 已实施)与每日实例二次删除对 plan 任务同样生效;③确认小程序任务中心 tasks.vue 对 plan 来源任务的展示(来源标签/跳转方案页/完成回写);④管理端/schema:确认无孤儿任务(方案删任务留)与重复生成(重复发布同方案不应重复插任务,应幂等);⑤如发现缺口,修复修复,不做范围外重构。落点:cfc-backend TaskPlanService/GrowthTaskService/HealthPlanService 相关链路 + cfc-frontend/pages/tasks/tasks.vue。验收要点:发布含 tasks 的方案后任务中心可见 plan 任务且不重复;删除方案后其 tasks 级联删除(含每日实例);对存量无 plan_json.tasks 的方案懒加载回填生效;mvn clean compile 通过;补 2-3 个单测覆盖幂等与级联。",
- "session_id": "ses_e9163add7ffe5EmrvRRcAB3Adv",
- "dispatched_at": "2026-10-24 23:51:41",
- "dispatched_to": "local-45278",
- "model": "axonhub/deepseek",
- "done_at": "2026-10-25 02:23:36"
- },
- {
- "id": "F-8",
- "title": "F-8 清理",
- "priority": "P2",
- "module": "backend",
- "instance": "",
- "status": "done",
- "spec": "docs/superpowers/plans/2026-10-24-cf-value-unification-plan.md",
- "prompt": "实现「F-8 清理」。完整规格见仓库内设计文档 docs/superpowers/plans/2026-10-24-cf-value-unification-plan.md(请先读取该文档,定位到「F-8 清理」对应的批次/章节,按其口径实现)。\n\n纪律:\n- git fetch origin cfclub → 基于 origin/cfclub 新建 feature/<slug> 分支(不要合并主干);\n- 只 git add 自己新增/修改的文件;\n- 先 mvn -pl cfc-backend -am compile 通过,再 cfc-web npm run build/lint 通过;\n- 不新增 DB 迁移,除非文档明确要求;\n- 完成后 git push -u origin feature/<slug>,回报 commit 哈希、改动文件清单、编译/构建结果;\n- 不要自行合并 cfclub;\n- 若指定规格文档在 checkout 中不存在,请停止并在回复中说明,不要凭空实现。",
- "generated_from": "sync_design_tasks",
- "generated_at": "2026-10-25 13:17:06",
- "session_id": "ses_e8e7c1499ffe868UgJouwwo1jj",
- "dispatched_at": "2026-10-25 13:23:53",
- "dispatched_to": "local-45278",
- "model": "axonhub/deepseek",
- "done_at": "2026-10-25 15:59:37"
- },
- {
- "id": "AL-1",
- "title": "后台素材库(asset-library) 恢复续做(上一会话卡死已中断重派)",
- "priority": "P1",
- "module": "fullstack",
- "instance": "",
- "status": "done",
- "spec": "docs/superpowers/plans/2026-10-26-asset-library-design.md",
- "prompt": "规格见 docs/superpowers/plans/2026-10-26-asset-library-design.md;派发指令为 self-contained 内联版(已含 data-layer/后端接口/前端改造/纪律)。上一会话 ses_e8e8cdf6cffeeGoW3oCpGCaTg6 于 lan-248 卡死(24h+无活动、cost=0、未 push)已中断,本会话接手同 worktree /sc-data/cfc/.worktrees/asset-library 续做并 commit+push feature/asset-library。",
- "generated_from": "manual-recovery",
- "recovered_from": "ses_e8e8cdf6cffeeGoW3oCpGCaTg6",
- "session_id": "ses_e8e680a53ffejn9lEv1p5BvFbp",
- "dispatched_at": "2026-10-25 13:46:24",
- "dispatched_to": "lan-248",
- "model": "axonhub/deepseek",
- "done_at": "2026-10-25 14:47:13"
- },
- {
- "id": "T23",
- "title": "后台报告处理链路追踪 / 归因功能(report-trace)",
- "priority": "P1",
- "module": "fullstack",
- "instance": "会话已结束未回填,但分支有实质产出",
- "status": "done",
- "spec": "docs/superpowers/plans/2026-10-26-report-trace-design.md",
- "prompt": "实现后台「报告处理链路追踪 / 归因」功能。完整规格见仓库内设计文档 docs/superpowers/plans/2026-10-26-report-trace-design.md(请先读取该文档,按其 §四~§五 口径实现)。\n\n背景与根因(已源码确认):用户上传报告后小程序查不到、也无法对应到成员。根因有二——①链路 A(POST /api/report-parser/upload)建 HealthReportDraft 时 familyId=null、memberId=null,导致 ReportCollectService.insertReport 中 matchFamilyMemberByName(name, familyId) 因 familyId=null 恒返 null,健康报告落入 health_reports 时 family_id=null 且 subject_id=null,成为家庭成员维度不可见的孤儿报告;②现有后台 ReportParseAdminController 只查 health_report_drafts,看不到 DAN 上传(dan_report_uploads/dan_assessment_results)与未知上传(report_unknown_upload)的处理状态。\n\n范围(严格按文档):①后端新增 ReportTraceService + ReportTraceAdminController(/api/admin/report-trace 下 list/detail/retry/bind-member/unknown-list/stats 六接口),四表(health_report_drafts / health_reports / dan_report_uploads(+dan_assessment_results) / report_unknown_upload(+report_unknown_cluster))联查归一化为 TraceNode,展示解析服务(parseMethod/langgraph/opencode/dan_java/unknown_llm)、解析状态、是否已归因+原因、落地报告ID、解析数据摘要(指标数/菌群数/疾病风险数/综合分/items数);②健康报告孤儿(subject_id=null 或 family_id=null)可在后台手动归因:bind-member 调 HealthReportService.bindReportToMember + 回填 familyId + 刷新五维/食材推荐(复用 reassignReport 逻辑);③DAN/未知 重试路由:DAN→DanReportUploadService.reparseUpload,未知→重识别后入链;④前端 cfc-web/src/views/admin/ReportTrace.vue(筛选+表格+详情抽屉+重试/归因按钮),新增独立菜单项「报告链路追踪」,不动既有 report-parse 页。\n\n纪律:\n- git fetch origin cfclub → 基于 origin/cfclub 新建 feature/report-trace 分支(不要合并主干);\n- 只 git add 自己新增/修改的文件;不改动 ReportCollectService / DanReportUploadService / ReportParseAdminController 的公开行为(仅调用);\n- 先 mvn -pl cfc-backend -am compile 通过,再 cfc-web npm run build/lint 通过;\n- 不新增 DB 迁移(仅读现有表);\n- 完成后 git push -u origin feature/report-trace,回报 commit 哈希、改动文件清单、编译/构建结果;\n- 不要自行合并 cfclub;\n- 若指定规格文档在 checkout 中不存在,请停止并在回复中说明,不要凭空实现。\n- 关键源码落点(已核对):ReportCollectService.java:668-737(insertReport/matchFamilyMemberByName 调用)、HealthReportDraftService.java、HealthReportService.java:686(matchFamilyMemberByName)/1282(bindReportToMember)/1304(reassignReport)、DanReportUploadService.java:85(uploadAndParse)/296(reparseUpload)/184(confirmUpload)、ReportParseAdminController.java:43(list)、entity HealthReportDraft/HealthReport/DanReportUpload/ReportUnknownUpload/ReportUnknownCluster/ReportTypeRegistry。 | 判定=实质完成:分支 feature/report-trace @ eeea6c5d3,7 文件 +2412 行:ReportTraceService 1386 行 + ReportTraceAdminController 149 + cfc-web ReportTrace.vue 801(统计卡/7天趋势/筛选/表格/详情抽屉/归因弹窗/未知聚类)+ 路由 + API_REFERENCE 登记 6 个新接口。含重试路由(健康草稿异步重跑/DAN reparseUpload/未知指纹重识别重新入链)。未经独立核验。 | 独立核验已完成(2026-10-27): OK 6接口权限校验完备; OK 主链路不变(只读辅助层); OK 无N+1(批量查询); OK API文档一致; WARN 中风险: retryBySource 同步调用LLM无防重入/限流, 管理员频繁点击重试会并发触发, 可能打爆 LangGraph(9000), 合入主线前需加限流(synchronized 或令牌桶); WARN 前端构建/lint 未验证. 核验方违规在 feature/report-trace 多推了1个空commit 5bf862664(--allow-empty), 已核实未混入他人文件.",
- "generated_from": "manual",
- "generated_at": "2026-10-26",
- "session_id": "ses_e8e651be9ffe1nrAL6aVGk07bi",
- "dispatched_at": "2026-10-25 13:48:59",
- "dispatched_to": "local-45278",
- "model": "axonhub/deepseek"
- },
- {
- "id": "T24",
- "title": "生产 bug:睡眠打卡 /complete 返回 500 + 双身份任务列表不同",
- "priority": "P0",
- "module": "fullstack",
- "instance": "",
- "status": "done",
- "spec": "docs/superpowers/plans/2026-10-25-task-complete-500-bug.md",
- "prompt": "修复生产环境(cfc.etotem.com.cn)两个关联 bug。完整诊断与证据链见 docs/superpowers/plans/2026-10-25-task-complete-500-bug.md,请先读取。根因一句话:睡眠打卡是每日进度型任务,POST /api/health/sleep/create 落库后由 HealthSleepController.create:76-86 以任务归属为准修正成员并调 TaskService.updateCheckinTaskProgress 自动置 completed(awardTaskCompletionRewards:918-921 真落库),但前端 cfc-frontend/pages/growth/sleep-checkin.vue:448-452 又冗余调 POST /api/tasks/{id}/complete(传 self.memberId);叠加双身份(family_members 同 user_id 存在多条「家长本人」重复记录,见 EnergyService:121/263;JwtInterceptor:177-182 用 LIMIT 1 非确定性解析),导致 /complete 命中 TaskService.completeTask:587(task.familyMemberId≠memberId)或 :591(已 completed)返回 null → TaskController:139 吐 500。\n\n分三块(按风险排序,逐一验收):\nA【后端热修·低危·必做】TaskService.completeTask(585-593) 对「本人已完成任务」幂等返回成功(复用既有 result 结构 pointsEarned=0/newBalance=当前积分/needReview=false/alreadyCompleted=true),不再返回 null→500;覆盖 587 与 591 两种触发。\nB【前端正本清源·低危·必做】删除 sleep-checkin.vue:448-452 冗余 /complete 调用(create 已自动完成);并全量排查 daily-checkin/diet-checkin/exercise-checkin/wealth-sub/checkin/emotion-checkin/body-detail/checkin 等打卡页是否存在「create 自动完成 + 再调 /complete」的同类冗余,一律移除或改为幂等。\nC【数据根治·双身份·中高危·需授权】先在备份/从库只读跑诊断 SQL(文档 §三 给出)确认受影响 (user_id, family_id) 重复行范围;再制定合并迁移方案(保留一条主成员、外键 tasks/task_executions/health_*/points_log 迁到保留行、删重复行、加 UNIQUE(user_id, family_id) 允许 user_id IS NULL 的 local 成员);JwtInterceptor:177-182 的 LIMIT 1 改为确定性取值(优先 status=active 且 userId 匹配的『主成员』);成员切换器(FamilyMemberVO.isSelf)对本人去重。\n\n纪律:git fetch origin cfclub → 基于 origin/cfclub 新建 feature/task-complete-500 分支(不要合并主干);只 git add 自己新增/修改的文件;先 mvn -pl cfc-backend -am compile 通过,再 cfc-web 与 cfc-frontend 各自 npm run build/lint 通过;A 不新增 DB 迁移,C 的迁移须在文档明确且经授权;任务完成后 git push -u origin feature/task-complete-500,回报 commit 哈希、改动文件清单、编译/构建结果;不要自行合并 cfclub;prod 部署(prod-etotem)属 manual_only,未经主理人显式授权不得 push 到 prod 分支或触发生产发布——本任务只完成代码与(若授权)迁移,生产发布单独拍板。",
- "generated_from": "manual",
- "generated_at": "2026-10-25",
- "session_id": "ses_e8e2fac76ffeHxTIZMUs8B1SN7",
- "dispatched_at": "2026-10-25 14:47:21",
- "dispatched_to": "lan-248",
- "model": "axonhub/deepseek",
- "done_at": "2026-10-25 17:01:01"
- },
- {
- "id": "T25",
- "title": "统一成员选择器组件(去重双身份,覆盖所有成员选择页)",
- "priority": "P1",
- "module": "frontend",
- "instance": "",
- "status": "done",
- "spec": "docs/superpowers/plans/2026-10-25-unified-member-selector.md",
- "prompt": "实现「统一成员选择器」组件,消除所有页面把同一用户显示成「本人 + 本人所对应的成员」两项的问题。完整设计见 docs/superpowers/plans/2026-10-25-unified-member-selector.md,先读。\n\n核心约束(务必先读 §一.3):纯前端去重会丢数据——两条重复 family_members 行各自挂着不同任务外键,隐藏一行会导致该行业务数据不可达。因此本任务必须与 T24-C 数据合并(合并重复行 + 外键迁移 + UNIQUE(user_id,family_id))配套;在本任务中组件层只做防御性去重,真正消除重复靠数据层。\n\n范围(严格按文档):\n①新增 cfc-frontend/utils/memberNormalize.js:入参(原始成员数组, viewer)→ 折叠同 user_id 多行为一条,canonical memberId 取 isSelf→active→外键最多→id 最小;保证每用户至多一条且 isSelf 唯一;统一身份键为 familyMemberId(id),userId 仅作折叠依据。\n②新增 cfc-frontend/components/MemberSelector.vue,variant 支持 strip(替代 FamilyMemberStrip)/tabs(替代 DimensionMemberTabs)/minimal(替代 food-query 等内联 member-bar,含家庭总览/个人/各成员);内部先 memberNormalize 再渲染;emit select 带 canonical memberId。\n③P1(用户可见 bug 页,必做):food-query.vue 迁 userId→memberId 主键并改用 MemberSelector;tasks.vue 改用 MemberSelector;用 MemberSelector 替代 FamilyMemberStrip(parent-index/child-index/member-home-detail/action-detail) 与 DimensionMemberTabs(body-detail/wisdom-detail/wealth/index/mind-detail),完整保留 FamilyMemberStrip 长按操作菜单(移除/切换/编辑)逻辑。\n④P2(其余内联选择器,文档 §四清单)逐页替换为 MemberSelector,消除 userId 作主键写法。\n⑤后端配合:/api/food/recommendation/members 等返回 familyMemberId 字段;若未合并数据,列表接口应先按 user_id 折叠下发(同 user 多行→一行 canonical id),避免重复。\n\n纪律:git fetch origin cfclub → 基于 origin/cfclub 新建 feature/unified-member-selector 分支(不合并主干);只 git add 自己新增/修改文件;先 mvn -pl cfc-backend -am compile 通过,再 cfc-frontend node --check / npm run build 通过;不新增 DB 迁移(数据合并在 T24-C);完成后 git push -u origin feature/unified-member-selector,回报 commit 哈希、改动文件清单、编译/构建结果;不要自行合并 cfclub。prod 发布属 manual_only,未经授权不得 push prod 分支。",
- "generated_from": "manual",
- "generated_at": "2026-10-25",
- "session_id": "ses_e8e14dfa7ffeXQdvfhbTOXHCOb",
- "dispatched_at": "2026-10-25 15:16:36",
- "dispatched_to": "lan-248",
- "model": "axonhub/deepseek",
- "done_at": "2026-10-25 20:16:33"
- },
- {
- "id": "A1",
- "title": "活动时间选择器:选择时即只显示 5 分钟粒度,删除「以 5 分钟为一个单元」提示文案",
- "priority": "P1",
- "module": "frontend",
- "instance": "",
- "status": "done",
- "spec": "docs/superpowers/plans/2026-10-26-activity-create-page-ux-and-audience-design.md",
- "prompt": "改造小程序「创建活动」页的时间选择器,让 5 分钟粒度在【选择过程中】生效,而不是选中后才被改写。完整设计与代码证据见 docs/superpowers/plans/2026-10-26-activity-create-page-ux-and-audience-design.md 的 §一 与 §零 0.1,请先读。\n\n背景(一句话):现在 3 处时间字段都用微信原生 <picker mode=\"time\">,原生时间选择器不支持步长,只能按 60 分钟逐项滚动,选中后再由 onStartTimeChange/onEndTimeChange/onRegTimeChange 调 normalizeTimeTo5Min 把分钟向下取整到 5 的倍数(14:07→14:05);为此页面上还重复写了 3 句提示「以 5 分钟为一个单元(如 14:00、14:05)」(create.vue:27/39/51,另有 CSS 注释 create.vue:677)。用户明确不想要这句话,也不想要「选了 07 分却变 05 分」。\n\n范围(唯一文件 cfc-frontend/pages/activity/create.vue,只做这一件事):\n①把 3 处 <picker mode=\"time\">(行 24/36/48)改为原生 <picker mode=\"multiSelector\" :range=\"[hourOptions, minuteOptions]\" :value=\"[hourIdx, minuteIdx]\">,时列 ['00'..'23'] 共 24 项,分列严格只有 ['00','05','10','15','20','25','30','35','40','45','50','55'] 共 12 项,让用户在选择过程中就无法选中非 5 倍数分钟。\n②data 新增 hourOptions/minuteOptions 与 3 组时间各自的时/分索引(hourIdx/minuteIdx、endHourIdx/endMinuteIdx、regHourIdx/regMinuteIdx);新增 onStartTimeColChange/onEndTimeColChange/onRegTimeColChange(e) 取 e.detail.value(列索引数组)拼成 HH:MM 写入 timePart/endTimePart/regTimePart,再调用既有 syncStartTime/syncEndTime/syncRegDeadline。\n③日期逻辑完全不动:onStartDateChange/onEndDateChange/onRegDateChange → syncXxx 保持现状;提交串必须仍为 YYYY-MM-DDTHH:mm:00、秒恒 00。\n④删除 3 处 <text class=\"picker-hint\">…</text>(行 27/39/51);并删除行 677 那条「活动时间以 5 分钟为一个单元」的 CSS 注释。\n⑤索引与字符串必须双向同步:fmtTime 回填(create.vue:593-599)与 loadDetail 三处回填(create.vue:300-324)在 normalizeTimeTo5Min 之后要按 mi/5 反算分钟索引,否则 picker 会显示默认值 00:00。建议抽一个 applyTimeParts(timePart, hourIdxRef, minuteIdxRef) 供初始化与回填共用。\n⑥normalizeTimeTo5Min 必须保留作为兜底(历史脏数据、后台或接口写入非 5 倍数时仍能收敛),不要删。\n\n明确不做(超出范围,做了一定要停手汇报):不做结束时间≥开始时间、报名截止时间≤开始时间等业务校验(现状本来就没有);不动后台 cfc-web/src/views/admin/ActivityEdit.vue 的 element-ui datetime 面板(element-ui 2.x 不支持分钟步长,维持现状 @change 收敛);不动任何费用字段、不做适用人群(那是 A2/A3)。\n\n验收:①分列恰好 12 项且选择过程中无法选中非 5 倍数分钟;②grep \"以 5 分钟为一个单元\" cfc-frontend/pages/activity/create.vue 零命中(含 CSS 注释);③normalizeTimeTo5Min 1440 分钟全量扫描仍全部正确(可把 <script> 提取为 .mjs 跑 node --check + 全量灌入);④提交串恒为 YYYY-MM-DDTHH:mm:00、秒恒 00;⑤编辑既有活动且历史时间为非 5 倍数(如 14:07)时,回填后 picker 显示与提交值一致(均为 14:05);⑥<template> 经 vue-template-compiler 编译零 error。\n\n纪律:git fetch origin cfclub → 基于 origin/cfclub 新建 feature/activity-time-picker 分支(不要合并主干);只 git add 自己修改的这一个文件(禁止 git add .);完成后自行 git commit(提交信息写明任务号 A1 与改动摘要)并 git push -u origin feature/activity-time-picker,回报 commit 哈希、改动文件清单与验证结果;无需等待主理人确认即可提交;不要自行合并 cfclub;prod 发布属 manual_only,未经授权不得 push prod。若规格文档在 checkout 中不存在,请停止并在回复中说明。",
- "note": "2026-10-25 22:52 首派 local-45278 与 A2 并行抢同一工作树 E://cfc;实测 A1 会话在中断前已成功 commit 7c0009bf1(multiSelector 双列 5 分钟粒度 + 删 3 处提示文案与 CSS 注释 + normalizeTimeTo5Min 兜底保留),该提交成为 A2 分支基点,未被冲掉,主理人已复核 create.vue 实现完整。7c0009bf1 已推送到远端 feature/activity-time-picker-5min(2026-10-26 校验:3 处 picker 均为 multiSelector,minuteOptions 12 项,picker-hint 零命中)。fill_slots 曾于 00:13 把 A1 重派到 lan-248(ses_e8c29b773ffe4DX2ch95ZhRrcV)属重复会话,已中断并加 72h 冷却锁;A1 完成态以本地提交为准,不需要再合入主干的 A1 工作。",
- "session_id": "ses_e8c737725ffeD3CXiKEMJ4whgo",
- "dispatched_at": "2026-10-26 00:13:05",
- "dispatched_to": "local-45278",
- "model": "axonhub/deepseek",
- "done_at": "2026-10-26 00:40:17"
- },
- {
- "id": "A2",
- "title": "活动适用人群 + 费用模型重构(audienceScope/audienceType + 结算按参与者身份分类 + 仅会员硬门禁)",
- "priority": "P1",
- "module": "fullstack",
- "instance": "",
- "status": "done",
- "spec": "docs/superpowers/plans/2026-10-26-activity-create-page-ux-and-audience-design.md",
- "prompt": "重构活动的人群与费用模型。完整设计、字段表、迁移写法与结算伪代码见 docs/superpowers/plans/2026-10-26-activity-create-page-ux-and-audience-design.md 的 §二(2.1–2.5)与 §零 0.2,请先读。\n\n现状两个必须修的缺陷:\n①两端口径分裂:小程序创建页只填 childFee/childMemberFee/parentFee/parentMemberFee(create.vue:67-85),后台管理端只填 price/memberPrice(cfc-web/.../ActivityEdit.vue:140-153),两套列互不互通,后台设的价小程序填不了、小程序填的价后台改不了。\n②结算语义错误:ActivityOrderService.java:81-84 用 boolean isChild = memberId != null 决定收 childFee 还是 parentFee,快照 type 写死 \"child\"/\"parent\"。在统一成员选择器(T25)之后 memberId 可以是儿童/长者/配偶等任意家庭成员,不能一律当「孩子」收费;快照 type 同理。\n\n实现(按 §二 2.1–2.5):\n①数据层:新增 audience_scope VARCHAR(20) DEFAULT 'all'(取值 all / member_only)、audience_type VARCHAR(20) DEFAULT 'adult'(取值 adult / include_child / include_elder / include_child_elder),用 DatabaseInitializer 既有的 information_schema.COLUMNS 存在性检查范式(参考行 2254-2266 的 visible_scope 迁移),ALTER TABLE 定位 AFTER visible_to。【长者价格列不新增】——长者复用成人价,audienceType 只留长者标签用于展示与筛选(D1 默认口径)。Activity 实体与 ActivityDTO 同步新增两个字段;ActivityRegistration 及报名参数不变。\n②表单(小程序 cfc-frontend/pages/activity/create.vue):新增 audienceScope 单选(全部用户 / 仅会员参加)与 audienceType 多选(成人 / 含儿童 / 含长者,成人恒选);新增「价格(元)」「会员价(元)」两个输入对应 price/memberPrice 并始终可见(当前完全缺失);孩子费用两档仅在 audienceType 含 child 时显示,隐藏时提交写 0;长者不出现独立价格输入。\n③结算(cfc-backend ActivityOrderService.java:81-91):删掉 isChild = memberId != null,改为按参与者身份分类 self(本人,memberId 为空)/child(age<18)/elder(age>=60)/adult(其他成年家庭成员),分别取 price|memberPrice、childFee|childMemberFee、price|memberPrice、price|memberPrice;会员判定沿用现有 membershipService.getMemberLevel(userId) 的 FAMILY/PREMIUM 口径;依据只用 FamilyMember 现有 age/generation/isSpouse,不新增角色字段。快照 type 改为 self/child/elder/adult(去掉 \"parent\" 这个语义)。关键回归点:FamilyMember.age 为空一律回落 adult,绝不可当 child 处理(否则会多收费)。\n④仅会员硬门禁(§二 2.5):audienceScope=member_only 时在下单入口既有校验块(ActivityOrderService.java:55-64)之后追加后端拦截,非会员返回「该活动仅会员可参加」;非登录用户(userId 为空)必须拒绝并走引导登录。前端提示仅作体验优化,不以前端为准。范式对齐 TaskController.java:48 的 task.memberOnly。\n⑤兼容存量(必须实现,§二 2.4):audience_type 为空视为 adult,成人档取值按「优先新列回退旧列」——非会员价 price>0?price:parentFee,会员价 memberPrice>0?memberPrice:parentMemberFee,儿童档 childFee/childMemberFee 原样保留。即 parentFee 降级为「成人非会员价」的历史别名,不做数据回迁,不改存量活动收费。\n\n本任务【不做】展示层改造(活动详情/列表/海报/报名弹窗的展示在 A3,避免两个会话同时改 activity-detail.vue);【不做】任何家长/孩子措辞清理(属 G1);【不做】child_id→member_id 列名迁移(属 G2)。\n\n验收:①information_schema 确认两列已建且 DEFAULT 生效;②mvn -pl cfc-backend -am compile 通过;③audienceScope=member_only + 非会员下单被拒并返回指定文案,非登录用户被引导登录;④报名人 age 为空时按成人档计费(不得误判为儿童);⑤老活动(audience_type 为空)结算金额与改造前逐分一致——用 price/parentFee/memberPrice/parentMemberFee 四个字段各非空、组合覆盖 4 种取值路径各测一例;⑥免费活动(totalAmount==0)的免报名快照分支行为不变;⑦小程序 <script> node --check 通过、模板 vue-template-compiler 零 error。\n\n纪律:git fetch origin cfclub → 基于 origin/cfclub 新建 feature/activity-audience-fee 分支(不要合并主干);只 git add 自己新增/修改的文件(禁止 git add .);先 mvn -pl cfc-backend -am compile 通过再改前端;完成后自行 git commit(提交信息写明 A2 与改动摘要)并 git push -u origin feature/activity-audience-fee,回报 commit 哈希、改动文件清单、编译结果与验收⑤的四例对比数据;无需等待主理人确认即可提交;不要自行合并 cfclub;prod 发布属 manual_only,未经授权不得 push prod。若规格文档在 checkout 中不存在,请停止并在回复中说明。\n\n【并行冲突协调(重要,必读)】上个任务 A1 也在改 create.vue(顺序器区块),本任务同样改 create.vue(费用与人群区块),两个会话很可能并行派发。因此:开工先 git fetch origin cfclub,若基线已含 A1 提交(feature/activity-time-picker 或同类提交),就以最新 origin/cfclub 为基线新建分支再做;若 merge/rebase 时 create.vue 出现冲突,只解自己负责的费用/人群区块冲突,必须完整保留 A1 的 multiSelector 时间选择器改造,不得回退或丢弃对方区块;改完全库 grep 确认无冲突标记残留。",
- "session_id": "ses_e8c73751effeMCoJwOVQBETEbF",
- "dispatched_at": "2026-10-25 22:52:33",
- "dispatched_to": "local-45278",
- "model": "axonhub/deepseek",
- "done_at": "2026-10-26 00:40:17",
- "note": "2026-10-26 交付:commit d64617c84 已 push 到 origin/feature/activity-audience-fee(父提交 7c0009bf1=A1,一并推送)。8 文件:Activity.java/ActivityDTO.java(+basePrice 兼容)+DatabaseInitializer.java+schema.sql(audience_scope/audience_type 迁移)ActivityOrderService.java(self/child/elder/adult 分类计费 + 仅会员硬门禁 + 老数据回落)+ create.vue(audienceScope/audienceType/price/memberPrice 表单)+ 2 个单测。mvn clean compile + create.vue 模板编译通过。待主理人决定合入主线。"
- },
- {
- "id": "A3",
- "title": "活动费用展示层口径统一(小程序详情/列表/海报/报名弹窗 + 后台管理端适用人群)",
- "priority": "P1",
- "module": "fullstack",
- "instance": "",
- "status": "done",
- "spec": "docs/superpowers/plans/2026-10-26-activity-create-page-ux-and-audience-design.md",
- "prompt": "把活动费用的展示层全部统一到「成人/儿童/长者 × 会员/非会员 + 适用人群」新口径。完整字段表、逐文件改造表与验收见 docs/superpowers/plans/2026-10-26-activity-create-page-ux-and-audience-design.md 的 §二 2.6,请先读。本任务依赖 A2 已合入(audience_scope / audience_type / price / memberPrice / childFee / childMemberFee 字段与后端分类逻辑已就绪),开始前先确认 A2 提交已在分支基线上。\n\n要改的地方(照 §二 2.6 表格逐条):\n①cfc-frontend/pages/activity/activity-detail/activity-detail.vue:61-62 现在恒显「孩子:¥…」「家长:¥…」——改为按 audienceType 条件渲染:成人档恒显,儿童/长者档仅当 audienceType 含该类别且对应价格 > 0 才显示;标签文案用「成人」「儿童」「长者」,不得再出现「家长」「孩子」。\n②同文件 827/829 海报价格文案「(家长)」「(孩子)」→ 按 audienceType 选「(成人)」「(儿童)」「(长者)」。\n③同文件 hasFee(977-985) / hasMemberPrice(982-985) 现在只读 4 个 child/parent 字段,必须纳入 price/memberPrice——否则只填成人价、childFee/parentFee 全 0 的付费活动会被误显为「免费」,这是必须修的真实 bug。\n④同文件 minFeeText(1008-1015) 取 4 费最小值 → 改为取「当前用户可用档位」的最小值(会员用会员价列,非会员用非会员价列)。\n⑤cfc-frontend/pages/activity/index.vue:852-857 normalizeActivity 现在用 4 个 child/parent 费用的最小值覆盖 act.price —— 改为不再覆盖 price,仅在 price 为空时回落 parentFee(兼容老活动)。\n⑥报名弹窗 activity-detail.vue:246-300:报名人目前只有姓名+手机+家庭成员勾选,看不出每个人按哪个价收费——为每个报名人加身份标签(成人/儿童/长者)与对应单价展示。\n⑦后台 cfc-web/src/views/admin/ActivityEdit.vue:在 140-153 的价格区之后追加 audienceScope(单选)与 audienceType(多选)表单项,条件显示儿童费用两档,字段读写对齐 A2 的 DTO 字段名,保存后回显正确;后台与小程序保存出来的活动数据必须一致。\n\n本任务【不做】时间选择器改造(属 A1);【不做】数据层与结算逻辑(属 A2);【不做】其他页面的家长/孩子措辞清理(属 G1,且 G1 明确排除 activity-detail.vue 与 create.vue,避免与本任务冲突)。\n\n验收:①audienceType=adult 的活动详情页完全不出现「儿童」「长者」「孩子」「家长」字样;②只填 price/memberPrice、childFee 与 parentFee 全 0 的付费活动,详情页正确显示价格且不再误显「免费」(这是回归重点);③报名弹窗按报名人身份显示对应单价;④后台可设置并回显 audienceScope/audienceType,两端数据一致;⑤海报价格文案无「家长」「孩子」;⑥小程序 node --check 与模板编译通过、cfc-web vue-cli-service build 通过。\n\n纪律:git fetch origin cfclub → 基于 origin/cfclub 新建 feature/activity-fee-display 分支(不要合并主干);只 git add 自己新增/修改的文件(禁止 git add .);先编译再构建;完成后自行 git commit(写明 A3 与改动摘要)并 git push -u origin feature/activity-fee-display,回报 commit 哈希、改动文件清单、构建结果与验收②的回归结论;无需等待主理人确认即可提交;不要自行合并 cfclub;prod 发布属 manual_only,未经授权不得 push prod。若规格文档在 checkout 中不存在,请停止并在回复中说明。\n\n【依赖确认(重要,必读)】本任务要求 A1 与 A2 均已合入 cfclub:开工先 git fetch origin cfclub,确认基线含 A1 的时间选择器 multiSelector 改造与 A2 的 audience_scope/audience_type 字段(实体与 ActivityDTO 已有这两个字段即代表 A2 已合入)。若任一条不满足,不要在回复里自行实现,直接停止并说明缺哪一条。",
- "session_id": "ses_e8c734769ffeu8ysluw623VQEk",
- "dispatched_at": "2026-10-25 22:52:47",
- "dispatched_to": "lan-248",
- "model": "axonhub/deepseek",
- "note": "2026-10-26 交付:commit 4a202be94 已 push 到 origin/feature/activity-fee-display。4 文件:activity-detail.vue / activity/index.vue / utils/activity-fee.js(新增)/ cfc-web ActivityEdit.vue。已完成 57 用例自检:audienceType=adult 详情页无「儿童/长者/孩子/家长」字样;只填 price/memberPrice 的付费活动不再误显免费;海报文案中性化。⚠ A3 基于旧基线 3582e3580 完成(当时 A2 未合入 cfclub),与 A2 零文件重叠,但 utils/activity-fee.js 依赖 A2 的 DTO 字段——合入顺序必须 A2 先、A3 后,合并时按 feature/activity-audience-fee → feature/activity-fee-display 顺序 rebase/merge,随后全量编译回归。",
- "done_at": "2026-10-26 00:40:17"
- },
- {
- "id": "G1",
- "title": "全系统「家长/孩子」措辞清查:L1 文案层统一为本人/家庭成员/儿童/长者",
- "priority": "P2",
- "module": "fullstack",
- "instance": "",
- "status": "done",
- "spec": "docs/superpowers/plans/2026-10-26-activity-create-page-ux-and-audience-design.md",
- "prompt": "清理全系统用户可见的「家长」「孩子」措辞,统一为中性口径。现状分布数据、分层策略与排除范围见 docs/superpowers/plans/2026-10-26-activity-create-page-ux-and-audience-design.md 的 §三,请先读。\n\n前提认知(重要):系统身份模型只有【登录用户】与【非登录用户】,家庭成员是家庭成员(FamilyMember 模型已是 nickname/age/generation/isSpouse 的中性口径)。因此「家长」「孩子」这类亲子关系表达只应作为【家庭成员的人群标签】出现(儿童/长者/成人),不应作为系统角色出现。数据模型本身没错,遗留集中在文案、API 名、页面目录名、后端方法名与日志文案。\n\n本任务只做 L1 文案层(低风险):\n①小程序前端 cfc-frontend/pages 与 components 下所有 .vue 的【用户可见文字】:「家长」→「本人」或「家庭成员」,「孩子」→「家庭成员」或按上下文用「儿童」,涉年龄的表述用「成人/儿童/长者」。已知命中较多的文件(cfclub tip 实测):body-detail/dimension-questionnaire.vue(17)、home-pages/parent-index.vue(11)、index-home/index.vue(9)、rewards/rewards.vue(8)、wealth/index.vue(7)、parent/child-detail.vue(6)、child/tasks.vue(6),以及 member-detail、child/rewards、teacher-profile、policy/privacy、mind-detail、wishes/detail、tasks/review、profile/components/ProfileHeader 等。请以 grep 结果为准全量覆盖,不要只看这个清单。\n②后端返回给前端的用户可见文案:toast / Result.error 提示语 / 消息模板 / 订阅消息模板 / 推送文案中的「家长」「孩子」同样替换。已知命中较多的:EnergyService(57)、WishService(28)、TaskService(25)、RewardService(25)、FamilyMemberService(24)、UserService(16)、WechatAlertTemplateService(11)、CircleMatchService(10) 等。DatabaseInitializer.java(66) 命中多但多为种子数据与注释,【只改其中会作为用户可见文案下发的种子字符串】,纯注释与列注释不动。\n\n严格排除(做了就超范围,必须停手汇报):\n①不改 DB 列名、不改 API 路径、不改页面目录、不改 pages.json 路径、不改 Java 方法名与变量名(这些属 G2);\n②不改 cfc-frontend/pages/activity/activity-detail/activity-detail.vue 与 pages/activity/create.vue(A2/A3 正在改这两个文件,会冲突);\n③不改 utils/api.js 的函数名(属 G2);\n④不改 dist/ 与 unpackage/ 构建产物;\n⑤不删除或改写 policy/privacy.vue 中涉及未成年人保护的合规表述(只把「家长」按语境替换为「监护人」这类合规词,如判断不清就保留原样并在回报中列出)。\n\n验收:①grep -rl \"家长\\|孩子\" cfc-frontend/pages cfc-frontend/components --include=\"*.vue\" 结果为空,或仅剩白名单文件(如 policy/privacy.vue 的合规表述)并在回报中逐个说明理由;②后端返回给前端的文案中无「家长」「孩子」(可用 grep 排除列注释后核对);③DB 列名、API 路径、页面目录、pages.json、Java 方法名 git diff 中【零改动】;④mvn -pl cfc-backend -am compile 与小程序 node --check / 模板编译全部通过。\n\n纪律:git fetch origin cfclub → 基于 origin/cfclub 新建 feature/terminology-neutralize-l1 分支(不要合并主干);只 git add 自己修改的文件(禁止 git add .);完成后自行 git commit(写明 G1 与改动摘要)并 git push -u origin feature/terminology-neutralize-l1,回报 commit 哈希、改动文件清单、验收①的白名单说明、编译结果;无需等待主理人确认即可提交;不要自行合并 cfclub;prod 发布属 manual_only,未经授权不得 push prod。若规格文档在 checkout 中不存在,请停止并在回复中说明。",
- "session_id": "ses_e8c7316daffe0ZGKPTRhzI2jnB",
- "dispatched_at": "2026-10-25 22:53:00",
- "dispatched_to": "lan-204",
- "model": "axonhub/deepseek",
- "done_at": "2026-10-26 02:24:19"
- },
- {
- "id": "G2",
- "title": "契约/目录/DB 列名中性化(L2 前端契约与页面目录 + L3 后端内部命名)",
- "priority": "P3",
- "module": "fullstack",
- "instance": "",
- "status": "done",
- "spec": "docs/superpowers/plans/2026-10-26-activity-create-page-ux-and-audience-design.md",
- "prompt": "风险最高的一批:把 parent/child 命名从契约层与存储层清掉。必须先读 docs/superpowers/plans/2026-10-26-activity-create-page-ux-and-audience-design.md 的 §三 3.2 与 §三 3.3(冲突面提示),再读 T25 的设计文档 docs/superpowers/plans/2026-10-25-unified-member-selector.md 了解已完成的部分。\n\n前置条件(不满足就停止并回报,不要硬做):①T25「统一成员选择器」所有批次已完全收口合入主线;②G1 文案层已完成合入;③本任务开工前需主理人对 DB 列名迁移方案单独确认(本任务的 L3 包含活动报名表 child_id → member_id 的列迁移,属破坏性变更)。\n\n范围(照 §三 3.2 的 L2 + L3):\nL2 前端契约与页面层:①cfc-frontend/utils/api.js 为遗留函数增加中性别名(getChildren→getFamilyMembers、switchToChild→switchToFamilyMember、switchBackToParent→switchBackToSelf、getParentDashboard→getFamilyDashboard、getChildOverview→getMemberOverview、createChild→addFamilyMember 等),【旧函数名必须保留为转发别名】,不得直接删除(外部可能引用);②pages/parent/、pages/child/ 迁到 pages/family/,pages/home-pages/parent-index.vue 与 child-index.vue 改中性名,pages.json 同步;③【旧路径必须保留跳转壳】(wx.redirectTo 到新路径),因为小程序已发布版本仍在用旧路径;④cfc-web 侧同步(api/、router/index.js、views 下 admin 页面引用)。\nL3 后端内部层:①Java 方法名与变量名中性化(childId→memberId、isChild→isMinorMember、ParentController→FamilyMemberController 等);②ActivityRegistration 的 DB 列 child_id → member_id:新增 member_id 列 + 数据回填 + 双写过渡 + 旧列保留一个版本,外键引用面(activity_registrations 及相关查询)必须先出影响清单再动手;③DatabaseInitializer 中 child 语义的种子数据与列注释同步。\n\n严格禁止:①不得重做成员去重逻辑(T25 已完成,MemberSelector.vue / memberNormalize.js / member_normalize 相关代码只在必要处做重命名,不得改算法);②不得改动与成员语义无关的业务逻辑;③不得动 Activity.childFee/parentFee 的语义(已由 A2 降级为别名,不要再动)。\n\n验收:①旧 API 函数名全部仍可调用且转发到新别名(逐个 grep 确认调用点零断链);②旧页面路径重定向可用;③pages.json 与新目录一致;④child_id→member_id 迁移脚本可重复执行(幂等),迁移前后记录数一致且抽样行内容一致;⑤mvn clean compile、cfc-frontend node --check、cfc-web build 全部通过;⑥报名/取消/退款链路(ActivityRegistrationService.register/cancel/refund)回归通过。\n\n纪律:git fetch origin cfclub → 基于 origin/cfclub 新建 feature/terminology-neutralize-l2-l3 分支(不要合并主干);只 git add 自己新增/修改的文件(禁止 git add .);开工前先在回复里给出 child_id 影响面清单与迁移方案供主理人确认,确认后再动列名;完成后自行 git commit(写明 G2 与改动摘要)并 git push -u origin feature/terminology-neutralize-l2-l3,回报 commit 哈希、改动文件清单、编译构建结果与回归结论;无需等待主理人确认即可提交代码到特性分支;不要自行合并 cfclub;prod 发布属 manual_only,未经授权不得 push prod。若规格文档在 checkout 中不存在,请停止并在回复中说明。",
- "session_id": "ses_e8c72e9c5ffelYziJOL2FYW1Lg",
- "dispatched_at": "2026-10-25 22:53:09",
- "dispatched_to": "lan-189",
- "model": "sensenova/deepseek-v4.1-flash",
- "note": "L1 命名已中性化(terminology-neutralize-l1 = 04d87cfd1)+ L2/L3 合约与 DB 列(terminology-neutralize-l2-l3 = b9b24bc8e)均已推送到 origin。本项 done。",
- "done_at": "2026-10-26 12:45"
- },
- {
- "id": "U1",
- "title": "小程序 UI 令牌收敛:font-scale 补漏+品牌色变量化+AI味文案清理+spacing令牌",
- "priority": "P1",
- "module": "cfc-frontend",
- "instance": "lan-204",
- "status": "done",
- "spec": "docs/superpowers/plans/2026-10-26-ui-token-convergence-tasks.md",
- "prompt": "见任务书 U1 批次(派发时已全文携带,此处不重复)",
- "session_id": "ses_e8a4a1696ffeX0jUo3C8vEzW2c",
- "dispatched_at": "2026-10-26 08:56:58",
- "dispatched_to": "local-45278",
- "model": "axonhub/deepseek",
- "session": "ses_e8a510558ffeLL9hENkbQiyGZh",
- "done_at": "2026-10-26 09:49:46"
- },
- {
- "id": "U2",
- "title": "后台 UI 令牌收敛:#1677FF去硬编码+20px→24px+13px归位+非标圆角收敛",
- "priority": "P1",
- "module": "cfc-web",
- "instance": "pub-iwintrue",
- "status": "done",
- "spec": "docs/superpowers/plans/2026-10-26-ui-token-convergence-tasks.md",
- "prompt": "见任务书 U2 批次(派发时已全文携带,此处不重复)",
- "session_id": "ses_e8a4a0771ffeD6ETns1lX17pqR",
- "dispatched_at": "2026-10-26 08:57:01",
- "dispatched_to": "lan-248",
- "model": "axonhub/deepseek",
- "session": "ses_e8a5103edffeOmOX3aScI6mkA7",
- "done_at": "2026-10-26 09:39:00"
- },
- {
- "id": "C1",
- "title": "今日成长入口补传 taskId:打卡同步完成任务(growth-main → diet/exercise/sleep)",
- "priority": "P1",
- "module": "frontend",
- "instance": "",
- "status": "done",
- "spec": "docs/superpowers/plans/2026-10-26-checkin-task-growth-linkage-and-diet-multi-meal.md",
- "prompt": "完整设计、代码证据链与验收见 docs/superpowers/plans/2026-10-26-checkin-task-growth-linkage-and-diet-multi-meal.md 的 §一.A 与 §二.A,请先读。\n\n背景(一句话):任务列表页 tasks.vue:560-612 navigateByAction 跳 diet/sleep/exercise 打卡页时已带 ?taskId=X&memberId=Y,后端 Health{Meal,Sleep,Exercise}Controller.create 已有带 taskId 的 updateCheckinTaskProgress / completeTask 回写;但今日成长页 growth-main/index.vue:325-332 handleProgressClick 对 diet/exercise/sleep 完全不带 taskId,只能走 updateProgress(taskKey) 兜底,该路径仅命中 isDailyProgress=1 且 title 前缀 [DIET]/[SLEEP]/[EXERCISE] 的每日任务——一次性健康任务通过今日成长入口打卡时不会完成。\n\n范围(唯一文件 cfc-frontend/pages/growth-main/index.vue):\n①在 loadProgressItems(行 398-468)阶段一并查询当日当前成员(this.memberId)未完成的对应类型任务。取数建议:调 getTodayTasks 或等价接口(utils/api.js 已有 getTodayTasks(memberId) 见 loadRecentTasks),筛出 status in ('pending','in_progress') 且 actionType 匹配 diet/exercise/sleep 的任务,按 actionType 索引到对应 progressItem 上(如 item.taskId、item.taskId 为空则保留 undefined)。\n②handleProgressClick(行 325-332):命中 diet/exercise/sleep 时,若有 taskId 则拼 ?taskId=X&memberId=Y(memberId 取 item 对应成员或 this.memberId,保持与 tasks.vue 同口径);无 taskId 时维持现状纯跳转(退化为纯记录打卡,后端走 updateProgress 兜底,不报错)。\n③不要改今日成长完成度判定逻辑(loadProgressItems 基于记录查询的 done 判定保持现状);不要改 onShow 刷新逻辑。\n④三个打卡页(diet/sleep/exercise-checkin.vue)的 taskId 接线与提交逻辑全部保持现状,不要动——它们已经正确透传 taskId 且后端已自动完成。\n⑤后端零改动:updateCheckinTaskProgress / completeTask / updateProgress 三条路径均已存在且幂等。\n\n明确不做(超出范围):不改打卡页、不改后端、不改任务生成器、不改任务完成度判定、不做饮食多选(属 C2)。\n\n验收:①今日成长页点击饮食/运动/睡眠打卡 → 跳转 URL 带 taskId(有当日未完成任务时)→ 打卡成功后返回,该任务在任务中心变 completed;②无当日对应任务时跳转不带 taskId,打卡不报错、记录正常写入;③打卡完成后返回今日成长页,对应 progressItem 变 done(onShow 触发 loadAllData);④小程序 node --check 与模板编译通过。\n\n纪律:git fetch origin cfclub → 基于 origin/cfclub 新建 feature/growth-checkin-taskid 分支(不要合并主干);只 git add 自己新增/修改的文件(禁止 git add .);完成后自行 git commit(写明 C1 与改动摘要)并 git push -u origin feature/growth-checkin-taskid,回报 commit 哈希、改动文件清单、验收结论;无需等待主理人确认即可提交;不要自行合并 cfclub;prod 发布属 manual_only,未经授权不得 push prod。若规格文档在 checkout 中不存在,请停止并在回复中说明。",
- "generated_from": "manual",
- "generated_at": "2026-10-26",
- "session_id": "ses_e8a11876effepKN5yQHrqPw3lq",
- "dispatched_at": "2026-10-26 09:58:45",
- "dispatched_to": "local-45278",
- "model": "axonhub/deepseek",
- "done_at": "2026-10-26 10:43:32",
- "note": "交付 commit a25b49f30 已推 origin/feature/growth-checkin-taskid(基线 origin/cfclub@6b098fe60,仅 1 提交 atop,未合主干)。改动:cfc-frontend/pages/growth-main/index.vue(唯一文件 +45/-5)。实现:新增 fetchTodayTasks() 统一取当日任务(与今日任务预览共用,避免重复请求)+ findTaskByAction() 筛 status in (pending,in_progress) 且 actionType 匹配 + loadProgressItems 内把 taskId/taskMemberId 挂到 diet/exercise/sleep 项 + handleProgressClick 命中三类时拼 ?taskId=X&memberId=Y(无当日任务则退化为纯记录打卡,不报错)。完成度判定仍以记录查询为准,未改;后端零改动。已代码级复核通过。⚠ 主理人 10:13 手动重派到 lan-204 属重复派发(巡检 09:58 已先派发):ses_e8a04a124ffe8XDRQoguOlAYh0 因 --dir 'D:\\cfc' 路径被转义成字面双反斜杠建会话失败(0 消息);重派会话 ses_e89c9782bffeHHGIfq2MM0YWfc 已 interrupt 并写 72h 冷却锁。⚠ 本分支与 C2 分支均修改 cfc-frontend/pages/growth-main/index.vue(C1 改 handleProgressClick/taskId 挂载,C2 改 mealTypeLabel),两分支同基线 6b098fe60,合入主线需 rebase 且 C1 先、C2 后(冲突面:同文件不同函数块,可手工解)。",
- "verified_at": "2026-10-26 11:30"
- },
- {
- "id": "C2",
- "title": "饮食打卡餐次多选:早/中/晚/加餐 TagChip 多选 + 后端 mealType 逗号拼接 + 展示层适配",
- "priority": "P1",
- "module": "fullstack",
- "instance": "",
- "status": "done",
- "spec": "docs/superpowers/plans/2026-10-26-checkin-task-growth-linkage-and-diet-multi-meal.md",
- "prompt": "完整设计、代码证据链与验收见 docs/superpowers/plans/2026-10-26-checkin-task-growth-linkage-and-diet-multi-meal.md 的 §一.B 与 §二.B,请先读。\n\n背景(一句话):饮食打卡页 diet-checkin.vue 的餐次选择是 TagChip 单选(form.mealType 单值),用户一次只能选一餐;后端 HealthMealRecord.mealType 是单个 String,health_meal_record.meal_type 列是 VARCHAR(32)。需求是让早/中/晚/加餐可多选。关键约束:meal_type VARCHAR(32) 足够存 'breakfast,lunch,dinner'(21 字符)与 'breakfast,lunch,dinner,snack'(25 字符),**无需 schema 迁移**——用逗号拼接单值方案,1 条记录承载多餐次。\n\n范围:\n①前端 cfc-frontend/pages/growth/diet-checkin.vue:data 新增 form.mealTypes 数组(初始 [])与 mealType 计算属性/方法;TagChip 改为 toggle 多选(:active 判断数组包含 m.value,@select 切换数组成员);submitCheckin 校验改为「mealTypes 至少一项」,提交时把 mealTypes 序列化为逗号拼接字符串写入 payload.mealType(保持后端契约不变);历史列表 mealTypeLabel(item.mealType) 改为接收逗号拼接字符串,内部 split(',') 逐项映射后 join('、')(行 283 的 mealTypeLabel 定义改)。\n②前端 cfc-frontend/pages/growth-main/index.vue:386 的 mealTypeLabel 同样改为逗号拼接兼容版(与 ① 保持一致逻辑,可抽到 utils 共用但不强制)。\n③前端 cfc-frontend/pages/diet/records.vue:147-148::class=\"'meal-' + r.mealType\" 改为取逗号拼接的首项(split(',')[0])以保留样式语义;mealLabel(r.mealType) 改为逗号兼容版。\n④前端 cfc-frontend/pages/diet/record-detail.vue:17:现在直接显示 {{ record.mealType }}(原始值),改为显示中文标签(逗号拼接的 label)。\n⑤后端 cfc-backend/src/main/java/com/etotem/cfc/controller/HealthMealController.java create:mealType 非空校验改为「按逗号拆分 trim 去空后至少一项」;其余逻辑(任务回写、CF 发放、补打校验、成员归属修正)全部零改动。\n⑥数据库零改动:health_meal_record.meal_type VARCHAR(32) 够用,不加迁移。\n\n计数语义(已定,不要改):一次提交多餐次计 1 次任务进度(与 RepeatTaskGenerator 每日任务 targetValue=1 一致);CF 发放 1 次(按记录 ID 幂等,现状不变)。\n\n明确不做(超出范围):不做今日成长入口 taskId 补传(属 C1);不做 health/diet-index.vue 另一入口的多选改造(属旧入口,另行评估);不改 RepeatTaskGenerator / TaskService;不拆 N 条记录;不改补打逻辑。\n\n验收:①饮食打卡可多选早/中/晚/加餐任意组合,提交成功,记录 mealType 为逗号拼接字符串;②历史记录列表与详情页正确显示多餐次中文标签(如「早餐、午餐」);③tasks.vue 任务列表或今日成长入口发起的饮食任务,一次多餐打卡后任务进度计 1 次,targetValue=1 时任务立即 completed;④CF 发放 1 次(幂等不变);⑤补打场景不受影响(isBackfill=1 不参与回写);⑥mvn -pl cfc-backend -am compile 与小程序 node --check / 模板编译通过。\n\n纪律:git fetch origin cfclub → 基于 origin/cfclub 新建 feature/diet-multi-meal 分支(不要合并主干);只 git add 自己新增/修改的文件(禁止 git add .);先 mvn -pl cfc-backend -am compile 通过,再小程序 node --check / 模板编译通过;不新增 DB 迁移;完成后自行 git commit(写明 C2 与改动摘要)并 git push -u origin feature/diet-multi-meal,回报 commit 哈希、改动文件清单、编译构建结果与验收结论;无需等待主理人确认即可提交;不要自行合并 cfclub;prod 发布属 manual_only,未经授权不得 push prod。若规格文档在 checkout 中不存在,请停止并在回复中说明。",
- "generated_from": "manual",
- "generated_at": "2026-10-26",
- "session_id": "ses_e8a116c80ffejyHPhbsgKc5r8w",
- "dispatched_at": "2026-10-26 09:58:51",
- "dispatched_to": "lan-248",
- "model": "axonhub/deepseek",
- "done_at": "2026-10-26 10:43:32",
- "note": "交付 commit df15b7ac9 已推 origin/feature/diet-multi-meal(基线 origin/cfclub@6b098fe60,未合主干)。改动 5 文件 +78/-12:cfc-backend/.../controller/HealthMealController.java(create 校验改为按逗号 split+trim+filter 去空后至少一项,归一化回写;import java.util.* 与 java.util.stream.Collectors 均既有,编译无需新增依赖)+ cfc-frontend/pages/growth/diet-checkin.vue(form.mealType → form.mealTypes 数组 + TagChip toggle 多选 + toggleMealType + mealType 计算属性固定早餐→午餐→晚餐→加餐顺序输出 + 校验改数组非空 + payload.mealType 用计算属性)+ cfc-frontend/pages/diet/records.vue(class 取 split(',')[0] 首项保留样式语义 + mealLabel 逗号兼容)+ cfc-frontend/pages/diet/record-detail.vue(原直显原始值改显中文标签)+ cfc-frontend/pages/growth-main/index.vue(mealTypeLabel 逗号兼容)。DB 零迁移(meal_type VARCHAR(32) 够 25 字符)。计数语义按方案锁定:一次多餐提交计 1 次任务进度(targetValue=1 即 completed)+ CF 发放 1 次(按记录 ID 幂等)。已代码级复核通过。⚠ 与 C1 同基线 6b098fe60 且都改 cfc-frontend/pages/growth-main/index.vue,合入主线须 rebase 且 C1 先、C2 后。",
- "verified_at": "2026-10-26 11:30"
- },
- {
- "id": "U3",
- "title": "小程序圆角收敛为 4 档(8/16/24/999rpx):消除 10 种值并存的视觉不一致",
- "priority": "P0",
- "module": "cfc-frontend",
- "instance": "lan-204(会话已结束未回填,但分支有实质产出)",
- "status": "done",
- "spec": "docs/superpowers/plans/2026-10-26-ui-token-convergence-tasks.md",
- "prompt": "全局纪律见任务书首节:基于 origin/cfclub 新建 feature/ui-token-<slug> 分支、禁止 git add .、只改样式不改逻辑、改前后 grep 基线计数、不得改动 admin-tokens.css / uni.scss 既有令牌值、完成后自行 commit+push 自己的分支不需等主理人确认、不要自行合并 cfclub。改前必读任务书对应章节全文。 U3 批次:uni.scss 缺 radius 令牌则按 8/16/24/999rpx 追加;页面 border-radius 按映射归并(4/6rpx→8rpx、10rpx→8rpx、12rpx→16rpx、16rpx 保留、20rpx→24rpx、24rpx 保留、40/44rpx→24rpx),半圆角写法只换数字保留方位,999rpx/50%/circle 保留,JS 内圆角字符串跳过并报告。验收:border-radius 数值种类收敛到 ≤4 种,报告归并前后各档命中数与跳过清单。 | 判定=实质完成:分支 feature/ui-token-u3-radius @ 300dd0765,334 文件 / 1564 处,rpx 数值 37 种→4 种(8/16/24/999)。任务书字面映射 + 主理人批准的就近档扩展均已落地;保留 50%/circle/999rpx/0/px 与 $uni-radius-* 令牌引用;仅样式变更无逻辑/DB 改动。未经独立核验。",
- "session_id": "ses_e89ab3f1effeK3fN6pLCzrnxZS",
- "dispatched_at": "2026-10-26 11:50:28",
- "dispatched_to": "local-45278",
- "model": "axonhub/deepseek"
- },
- {
- "id": "U4",
- "title": "小程序 30rpx 归并(492 处):安全边距→$uni-space-page,内部间距→24/32rpx 令牌",
- "priority": "P1",
- "module": "cfc-frontend",
- "instance": "",
- "status": "done",
- "spec": "docs/superpowers/plans/2026-10-26-ui-token-convergence-tasks.md",
- "prompt": "全局纪律见任务书首节:基于 origin/cfclub 新建 feature/ui-token-<slug> 分支、禁止 git add .、只改样式不改逻辑、改前后 grep 基线计数、不得改动 admin-tokens.css / uni.scss 既有令牌值、完成后自行 commit+push 自己的分支不需等主理人确认、不要自行合并 cfclub。改前必读任务书对应章节全文。 U4 批次:区分两种 30rpx——页面安全边距(根容器 padding:30rpx、对称 padding-left/right:30rpx)改用 $uni-space-page 值不变;内部间距(子元素 margin/gap:30rpx)就近归并 $uni-space-lg(24rpx) 默认、明显区块大间距用 $uni-space-xl(32rpx)。本批只处理 30rpx,不扩散到 26/22/18/80rpx。不做像素级救视觉微调。验收:30rpx 总数从 492 大幅下降,剩余逐条说明为安全边距语义保留。",
- "session_id": "ses_e89ab2bfdffeF3NmZyf9QItKUT",
- "dispatched_at": "2026-10-26 11:50:32",
- "dispatched_to": "lan-248",
- "model": "axonhub/deepseek",
- "done_at": "2026-10-26 12:55:25"
- },
- {
- "id": "U5",
- "title": "后台品牌色残余收口:16 处 #1677FF(JS 数据对象/echarts canvas/el-tag color)统一到 colorTokens.js",
- "priority": "P1",
- "module": "cfc-web",
- "instance": "",
- "status": "done",
- "spec": "docs/superpowers/plans/2026-10-26-ui-token-convergence-tasks.md",
- "prompt": "全局纪律见任务书首节:基于 origin/cfclub 新建 feature/ui-token-<slug> 分支、禁止 git add .、只改样式不改逻辑、改前后 grep 基线计数、不得改动 admin-tokens.css / uni.scss 既有令牌值、完成后自行 commit+push 自己的分支不需等主理人确认、不要自行合并 cfclub。改前必读任务书对应章节全文。 U5 批次:新建 src/utils/colorTokens.js 收敛五维色映射(身#FF8C42/智#1677FF/富#F59E0B/行#10B981/心#FF6B9D)为单一出口;收敛重复定义点 DimensionWeightPicker.vue、admin/Dashboard.vue、EnergyBehaviorConfig.vue、EnergySandbox.vue、admin/org/Dashboard.vue、ProfileManagement.vue、teacher/TeacherTeam.vue、MbtiProfiles.vue;el-tag color 改 class 绑定;echarts/canvas itemStyle.color 与 color 数组走 adminColor() 封装(getComputedStyle 读 --adm-primary,因 canvas 不解析 CSS var);注释里色值不动;admin-tokens.css 不动。验收:grep -rni '#1677ff' views+components 从 16 降到只剩注释与令牌定义。",
- "session_id": "ses_e89ab1a7cffeBug0bMNhYu8Ap2",
- "dispatched_at": "2026-10-26 11:50:37",
- "dispatched_to": "lan-204",
- "model": "axonhub/deepseek",
- "done_at": "2026-10-26 12:31:28"
- },
- {
- "id": "U6",
- "title": "后台间距令牌引用率提升:teacher 全目录 + OrderManage + Dashboard 裸写 px → var(--space-*)",
- "priority": "P2",
- "module": "cfc-web",
- "instance": "",
- "status": "done",
- "spec": "docs/superpowers/plans/2026-10-26-ui-token-convergence-tasks.md",
- "prompt": "全局纪律见任务书首节:基于 origin/cfclub 新建 feature/ui-token-<slug> 分支、禁止 git add .、只改样式不改逻辑、改前后 grep 基线计数、不得改动 admin-tokens.css / uni.scss 既有令牌值、完成后自行 commit+push 自己的分支不需等主理人确认、不要自行合并 cfclub。改前必读任务书对应章节全文。 U6 批次(控制批次规模,不做全库):只做 src/views/teacher/ 全目录 + src/views/admin/OrderManage.vue + src/views/admin/Dashboard.vue;把 padding/margin 裸写 px 归并到 var(--space-*)(按 8/12/16/20/24/32px 就近匹配,优先 24px 对齐规范方向);不改 border-radius/font-size/width/height/line-height/top/left,不改 admin-tokens.css。验收:报告本批文件前后裸写 px 数,并给出全库新的 var(-- 引用率(基线 21.9%)作为后续批次起点。",
- "session_id": "ses_e89ab0a74ffeCpVE1cVLKXH3Zi",
- "dispatched_at": "2026-10-26 11:50:43",
- "dispatched_to": "lan-189",
- "model": "opencode/deepseek-v4.1-flash-free",
- "done_at": "2026-10-26 12:31:28"
- },
- {
- "id": "U7",
- "title": "小程序大字号段裸值(40~120rpx 共 13 种)+ font-weight 800/900 收口(需真机目检后再派)",
- "priority": "P3",
- "module": "cfc-frontend",
- "instance": "",
- "status": "done",
- "spec": "docs/superpowers/plans/2026-10-26-ui-token-convergence-tasks.md",
- "prompt": "blocked:40~120rpx 有 13 种裸值、font-weight 800×19 + 900×3 超 uni.scss 令牌上限(只到 700),中文系统字体在 20-30rpx 下 800/900 会糊字。归并必然改变视觉重量与醒目度,需先出「值→令牌映射表 + 视觉影响评估」并由主理人确认后再派,禁止盲派批量替换。",
- "note": "U7 三轮闭环:首轮 FAIL(a41de06a9)→ 返工(a63e8b635)→ 二次核验 FAIL 2 项(0b41da86d)→ 第三轮(0dd76905c)→ 三次核验 PASS(d5efed8dc)→ 合入 cfclub(b5a7e4116)",
- "session_id": "ses_e6b64e18dffeqC2eBtpj3v6fDD",
- "dispatched_at": "2026-11-01 09:02:27",
- "dispatched_to": "lan-204",
- "model": "axonhub/deepseek",
- "done_at": "2026-11-05 23:50",
- "merge_commit": "b5a7e4116"
- },
- {
- "id": "U8",
- "title": "小程序 16 个 >800 行页面拆分(index-home 3057 行为最重)(需先出拆分方案再派)",
- "priority": "P3",
- "module": "cfc-frontend",
- "instance": "",
- "status": "done",
- "spec": "docs/superpowers/plans/2026-10-26-ui-token-convergence-tasks.md",
- "prompt": "blocked:工程结构重构,与 UI 令牌收敛不同域,涉及模板/数据/方法拆分与路由、组件引用链,风险高。需先出「组件抽取清单 + 拆分顺序 + 每步回归范围」方案,主理人确认后按页面逐个拆,禁止一次性批量拆分。",
- "note": "2026-10-31 22:0x 主理人拍板解封。拆分方案已存在:docs/superpowers/plans/2026-10-27-miniprogram-large-page-split-plan.md(origin/docs/u8-split-plan @ c646fec87,43页盘点+优先级矩阵+子任务拆解),按方案 §6 分批实施。",
- "session_id": "ses_e6da9cba1ffeEQOuHjw6ijqS1Q",
- "dispatched_at": "2026-10-31 22:21:24",
- "dispatched_to": "lan-248",
- "model": "axonhub/deepseek",
- "done_at": "2026-10-31 22:41:10"
- },
- {
- "id": "RP-1",
- "title": "报告详情页查看态可修改报告日期(严格校验+失败提示+防数据丢失)",
- "priority": "P1",
- "module": "cfc-backend+cfc-frontend",
- "instance": "pub-iwintrue / lan-204",
- "status": "done",
- "spec": "docs/superpowers/specs/2026-10-26-report-date-editable-design.md",
- "prompt": "已完成。分支 feat/report-date-editable @ 2133cfaeb(基于 origin/cfclub be9e539bb,独立可合入,未合主线)。4 commit:3c8d132ec 后端严格解析+未来日期拦截+快照联动+date_source 兜底;18b0dd437 前端查看态日期入口;b3b683f67 修 D1 失败提示被覆盖(.catch 用 err.message,因微信 hideLoading 吞 toast 需重放);2133cfaeb 修 D2 数据丢失(改发最小 payload {type,summary:{reportDate}} 不带三表键→instanceof List 保护缺键即跳过,三表零 SQL,单测 2/2 实证)。mvn -o compile exit 0;前端 387 vue 全三通;audit 0 error。独立只读核验(lan-248 ses_e89b6f683):A 时序同步静态链路通过、运行时不可验(indicator_values 0 行);B 覆盖率确认 0%(indicator_definitions 33 条全 body 域与 1139 行菌群指标 name 精确匹配 0/1139,属测试数据缺口非缺陷);C date_source 列存在(varchar16 default 'unknown')走 UPDATE 分支。明确排除:dan 报告走独立存储;gut-flora-detail/report-result 入口未做(P1-2);批量/管理端未做。残留风险:D3 step7/8 try/catch 吞异常致时序同步可静默失效;D2 通用版(编辑态全量重写仍丢 collectionDate/description/relatedBacteria 3 列)本次仅堵住日期路径。运行时落库联查未跑(未起 9082 服务)。"
- },
- {
- "id": "T01",
- "title": "指标多期展示·数据地基 + 变化计算底座(迁移422/423 + collectionDate放开映射 + G3补时序 + IndicatorChangeService + backfill dryRun端点)",
- "priority": "P0",
- "module": "cfc-backend",
- "instance": "lan-248",
- "status": "done",
- "spec": "docs/superpowers/specs/2026-10-25-indicator-timeline-display-design.md",
- "prompt": "已完成。分支 feat/indicator-timeline-t01 @ 02892080d(5 commit / 11 文件 / +1214 行,未合主线)。5 项交付齐全:85dcdd06b 迁移422-423;27f2d0de8 collectionDate 放开映射+日期来源/参考范围快照;eff28f10d G3 事后绑定成员补时序 + confirm 链路补写;1d4370a34 IndicatorChangeService+单测;02892080d /api/admin/indicator/backfill(dryRun)。实测覆盖率:测试库 20 份活跃报告全菌群,eligible=6(回填后 6/6),dateFixable=0(payload 内 reportDate 全 null,真实采样日不可恢复),indicator_values 存量 0 行。"
- },
- {
- "id": "T02",
- "title": "指标多期展示·后端接口层(/api/health/report/indicators 等 6 接口,两段共用一次性全量部署)",
- "priority": "P0",
- "module": "cfc-backend",
- "instance": "lan-248 / ses_e872b553affe2sPM7YcLmXZM62 / feat/indicator-timeline-t02",
- "status": "done",
- "spec": "docs/superpowers/specs/2026-10-25-indicator-timeline-display-design.md",
- "prompt": "设计文档 §2761-2799。依赖 T01(已完成,分支 feat/indicator-timeline-t01 @ 02892080d)。基线必须基于该分支建(否则拿不到迁移/IndicatorChangeService)。后端接口一次性全量部署(接口上线≠功能上线,前端不接即不可见)。注意:HealthIndicator 删 @TableField(exist=false) 依赖 T01 兜底建列;goodDirection/refRange 字典配置是验收要点。 | 派发: lan-248 / ses_e872b553affe2sPM7YcLmXZM62 / feat/indicator-timeline-t02(基线 feat/indicator-timeline-t01 @ 02892080d,模型 axonhub/deepseek)",
- "done_at": "2026-10-27 00:25",
- "branch": "feat/indicator-timeline-t02",
- "note": "会话 ses_e872b553affe2sPM7YcLmXZM62 (lan-248) 10-27 00:24 交付完成,9 commits push 至 origin/feat/indicator-timeline-t02 = ff7ef5b97。注:后端 61 个测试失败为存量(与本次改动无关),详见交付报告。"
- },
- {
- "id": "T03",
- "title": "指标多期展示·前端公共底座(utils/indicator-change.js + IndicatorDegrade/IndicatorIncompleteBanner 组件 + 趋势图)",
- "priority": "P0",
- "module": "cfc-frontend",
- "instance": "lan-204 / ses_e872b36b3ffeIM55oXGHWB3aig / feat/indicator-timeline-t03",
- "status": "done",
- "spec": "docs/superpowers/specs/2026-10-25-indicator-timeline-display-design.md",
- "prompt": "设计文档 §2800-2831。依赖 T01(只依赖接口契约)。可与 T02 并行(后端 java vs 前端 vue,无文件冲突)。要点:后端下发 trendCode+chartMode,前端禁止自行按 delta 正负推好坏;残缺横幅组件化;sparkline 禁 canvas 用 view 点阵(已挪 P1-2)。 | 派发: lan-204 / ses_e872b36b3ffeIM55oXGHWB3aig / feat/indicator-timeline-t03(基线 feat/indicator-timeline-t01 @ 02892080d,模型 axonhub/deepseek)",
- "done_at": "2026-10-26 16:56",
- "branch": "feat/indicator-timeline-t03",
- "note": "会话 ses_e872b36b3ffeIM55oXGHWB3aig (lan-204, D://cfc) 10-26 16:54 完成,3 commits push 至 origin/feat/indicator-timeline-t03 = 3693d2392,5 项 AC 全部自验通过。"
- },
- {
- "id": "T04",
- "title": "指标多期展示·小程序页面改造 + 新建时间轴页(按 D12=B 裁定拆两段:先对照+趋势入口,后时间轴页)",
- "priority": "P0",
- "module": "cfc-frontend",
- "instance": "lan-189(Windows C://code//cfc)",
- "status": "done",
- "spec": "docs/superpowers/specs/2026-10-25-indicator-timeline-display-design.md",
- "prompt": "设计文档 §2832-2928。依赖 T02+T03。D12 已裁定=B:第一段=报告详情页对照+趋势入口+bugfix+降级;第二段=新时间轴页。第二段须过三级验收门槛(L1≥85% ∧ L2≥90% ∧ L3 抽样)。只有 T04 按文件拆两次发版,后端只发一次。 | 判定=误派已中断:23:40 巡检 fill_slots 自动派发到 local-45278(本机主工作树 E://cfc,有他人未提交改动,有破坏风险),且依赖的 T02/T03 才刚开工。已 interrupt。依赖满足后改回 pending 再派。",
- "session_id": "ses_e850327a1ffe2ioKwfLAzUIaCS",
- "dispatched_at": "2026-10-27 09:11",
- "dispatched_to": "lan-189",
- "model": "axon/deepseek",
- "note": "2026-10-27 16:00 复核修订:第一段主体已由并发会话 1f2f9cd01 合入 origin/cfclub;lan-189 会话(ses_e850327a,09:11派发)全量验收 5 文件 + 修复 TrendChart chartRenderConfig 错误导入源(白板 bug),推送 feature/t04-segment1 = 9efb65396(+2/-1 单文件)。编译 391 文件 0 ERROR、反模式 0 ERROR。待办:① 9efb65396 独立核验后合 cfclub;② 第二段(report-detail.vue 改造 + L1/L2/L3 门槛)未派。⚠️ 08:58 并发流程曾把 T04 派到 local-45278(ses_e85227149),该会话实为 backfill 修复无关内容,勿混淆。",
- "done_at": "2026-10-27 16:49:35"
- },
- {
- "id": "T05",
- "title": "指标多期展示·P1+P2 收尾(体脂秤 G4 sourceId=recordId+upsertMapping 修第二次测量报错、管理端字典治理、sparkline 等)",
- "priority": "P1",
- "module": "fullstack",
- "instance": "lan-248 / ses_e8729178bffeX4QY3HnTLZ6sZf(23:40 巡检派发,已限定范围只做体脂秤 G4)",
- "status": "done",
- "spec": "docs/superpowers/specs/2026-10-25-indicator-timeline-display-design.md",
- "prompt": "设计文档 §T05。体脂秤 BodyFatScaleService:253-264 用 insert 撞唯一键→第二次测量整体报错,必须改 sourceId=recordId + upsertMapping。管理端:cfc-web/src/views/admin/indicators/index.vue 默认 status=1 + 待审核 tab + 批量启用/丢弃(T05-5c)。 | 判定=巡检误派但保留(限范围):体脂秤 G4 是独立真 bug(第二次测量整体报错)且不依赖 T02/T03,保留执行;管理端字典治理(IndicatorService.listDefinitions status=1 / admin indicators 页)与 T02 文件重叠,已指令其跳过。",
- "session_id": "ses_e8729178bffeX4QY3HnTLZ6sZf",
- "dispatched_at": "2026-10-26 23:31:52",
- "dispatched_to": "lan-248",
- "model": "axonhub/deepseek",
- "done_at": "2026-10-27 03:26:07"
- },
- {
- "id": "T28-FIX",
- "title": "T28 AC-09 P0 修复:food_recommend_idx 键语义对齐(memberId vs users.id)",
- "priority": "P0",
- "module": "backend",
- "instance": "",
- "status": "done",
- "spec": "docs/superpowers/plans/2026-10-25-food-overview-persistent-min.md",
- "prompt": "【T28 核验 P0 返工】独立核验报告(分支 origin/verify/t28-food-overview = 90798afd1,文件 docs/T28食材总览持久化核验报告.md)实锤:AC-09 不通过,T28 不可合入主流程。\n根因:报告确认链路把 family_members.id(memberId)写入 food_recommend_idx.user_id,而家庭总览按 family_members.user_id(users.id)关联,两条键不对齐 → 报告确认触发的总览重算链路完全失效(总览恒 0 行)。\n写侧:HealthReportService.resolveSubjectToMemberId(:1243-1279) 把 subjectId 归一到 family_members.id;HealthReportController(:2062/:2707) 传 confirmedSubjectId 进 recalculateForUser;FoodRecommendService(:127-135) index.setUserId(subjectId) 原样落库;refreshFamilyOverviews(:188-193) 按 family_members.user_id=memberId 反查 → 无行 → 家庭重算不触发。\n读侧:FamilyFoodOverviewService.doRecalculate(:116-156) 成员来源是 family_members.user_id,:154-156 IN(userIds) 批量查 food_recommend_idx → memberId 键行永不命中 → byFood 空 → 总览 0 行。\n⚠️ 本任务需先出方案经主理人裁决,两个方向(核验报告第三章已评估,尚未实施):\n 方向1(写侧统一):recalculateForUser 入库前把 subjectId 归一为成员 user_id 再写; refreshFamilyOverviews 用归一后 userId;历史 memberId 键行需一次性迁移。\n 方向2(读侧兼容):doRecalculate 查询键同时覆盖 user_id 与 family_members.id; refreshFamilyOverviews 反查双轨;总览 memberScores.userId 语义需明确。\n开工要求:① 先读规格与核验报告;② 【主理人已裁定:方向1(写侧统一),2026-10-30 19:35 拍板】按方向1执行,不再出方案待裁。;③ 写侧代码修复(recalculateForUser 归一 + refreshFamilyOverviews 用归一 userId)可直接实施;历史 memberId 键行一次性迁移属**不可逆操作**,必须先出迁移方案(含生产 food_recommend_idx 键分布 dryRun 统计 + 迁移 SQL + 回滚预案)回报主理人确认,**经确认后方可执行**,不得擅自迁移;严禁在测试库执行任何 DELETE;④ 修复后必须复现核验报告 §三 的 v3 复现步骤(confirm → food_recommend_idx 键 → family_food_overview 行数)验证 AC-09 转通过;⑤ 补单测覆盖键对齐;⑥ 严禁在测试库执行任何 DELETE(核验报告 §四 两起误删事故的教训)。",
- "note": "2026-10-26 独立核验发现 AC-09 P0(键语义不对齐),需主理人裁决修复方向后才可开工。 [2026-10-30 19:35 放行] 主理人拍板方向1(写侧统一)。写侧代码可直接实施;历史键行迁移出方案+dryRun 回报确认后执行。",
- "generated_at": "2026-10-26 23:30",
- "generated_from": "T28-V 独立核验报告 90798afd1",
- "session_id": "ses_e7364e8caffeTbv3z5UDq4idJd",
- "dispatched_at": "2026-10-30 19:38:57",
- "dispatched_to": "lan-204",
- "model": "axonhub/deepseek",
- "done_at": "2026-10-30 22:38:15"
- },
- {
- "id": "T29-B2",
- "title": "报告代传功能修复·第二批:权限越权与安全策略收敛",
- "priority": "P0",
- "module": "backend",
- "instance": "lan-189 / ses_e82f773fcffePaGYPNUK1muSHx / C:////code////cfc (axon/deepseek)",
- "status": "done",
- "spec": "docs/superpowers/plans/2026-10-25-report-proxy-fix-plan.md",
- "prompt": "见 out/t29_b2_security_prompt.txt(派发指令文件,自包含纪律++实现要点++验收清单+)。",
- "note": "origin/feature/proxy-fix-b2-security = 751145b9d(已 push 到 origin,2026-10-27 17:25 会话完成)。⚠️ 未合入 cfclub,需先派独立核验(已新增 T29-B2V)再合入。改动:B2-1 成员列表 familyId 行级隔离+删 ensureUserFamily 兜底 / B2-2 proxyParsePreview 显式 familyId 绑定校验 / B2-3 proxyConfirm 草稿归属与可确认者校验 / B2-4 FamilyAccessInterceptor 空有效家庭集拒绝(全局策略变更,含带 familyId 路由穷举清单)/ B2-5 proxy-parse+proxy-confirm 移入 LOGIN_REQUIRED_PATHS / B2-6 三层校验编排注释。",
- "generated_at": "2026-10-26 23:30",
- "generated_from": "T29 三批修复方案 164c9fbc5",
- "dispatched_at": "2026-10-27 19:07",
- "dispatched_to": "lan-189",
- "session_id": "ses_e82f773fcffePaGYPNUK1muSHx",
- "model": "axon/deepseek",
- "branch": "feature/proxy-fix-b2-security",
- "done_at": "2026-10-28 01:33:40"
- },
- {
- "id": "T29-B3",
- "title": "报告代传功能修复·第三批:健壮性与体验",
- "priority": "P1",
- "module": "fullstack",
- "instance": "",
- "status": "done",
- "spec": "docs/superpowers/plans/2026-10-25-report-proxy-fix-plan.md",
- "prompt": "【T29-B3】规格 docs/superpowers/plans/2026-10-25-report-proxy-fix-plan.md 的批次 B3(B3-1 ~ B3-6)。基线:origin/cfclub(须已含 T29-B1 与 T29-B2 合入)。分支 feature/proxy-fix-b3-robust。\n内容:① 配额不足/AI 解读失败的 toast 文案前端化;② 草稿过期降级(前端引导重传 + 基于 fileUrl 重新解析,复用 /report/upload + /report/parse 两阶段链路);③ LangGraph 失败本地兜底路径的提示文案(B1 已接 parseLocalFallback,本批补提示);④ teacher 端列表分页修复(/report/list 现只收 size 忽略 page;必须兼容小程序端现有调用,默认不传 page 时行为不变);⑤ 部署文档补 LANGGRAPH_BASE_URL 与 uploads 共享 volume 强制检查项;⑥ updateNote 重命名为 updateRemark 或加注释说明实际写 remark 列(同步所有调用点)。\n⚠️ 依赖 B2 先完成(B2 改了同一批接口)。",
- "note": "2026-10-26 23:30 加入。依赖 T29-B2 完成后才能开工。 [19:47 状态恢复] 会话仍在 lan-248 执行,覆盖曾回滚派发状态。",
- "generated_at": "2026-10-26 23:30",
- "generated_from": "T29 三批修复方案 164c9fbc5",
- "session_id": "ses_e739e306dffe28U9lCafYGdpM0",
- "dispatched_at": "2026-10-30 18:36:22",
- "done_at": "2026-10-30 19:54:17"
- },
- {
- "id": "T29-B1V",
- "title": "T29-B1 独立核验:代传主链路打通与数据正确性验收",
- "priority": "P1",
- "module": "backend",
- "instance": "lan-189 / ses_e86e1c8b7ffeZRg1dQtAX0OWqf / C://code//cfc (axon/deepseek)",
- "status": "done",
- "spec": "docs/superpowers/plans/2026-10-25-report-proxy-fix-plan.md",
- "prompt": "【T29-B1V 独立核验】核验对象 origin/feature/proxy-fix-b1-core = 7680b21e7。规格 docs/superpowers/plans/2026-10-25-report-proxy-fix-plan.md 批次 B1(B1-1 ~ B1-6)。\n⛔ 只做核验不改业务代码;发现问题如实报告。允许写操作仅限切分支、跑构建/测试、造临时测试数据(用完必删)、在独立核验分支写核验报告。\n核验要点:\n① B1-1 proxy-parse 返回 draftId 非 null + payload + extractedName/extractedReportNumber/extractedReportDate;数据库草稿表新增 pending 行且 remark=note;LangGraph 不可用时本地兜底仍可解析;重点核 buildParseResultFromLg 是否补齐 extractedReportNumber/extractedReportDate(规格明确要求,原实现缺这两个 key)。\n② B1-2 代传确认后 health_reports.proxy_upload_note = 代传时填的 note(实测查库,不再 NULL)。\n③ B1-3 正式报告 remark = 草稿 remark(代传场景),非代传草稿 remark 为空时行为不变。\n④ B1-4 两个代传页详情弹窗显示报告ID/类型/编号/日期/总分/菌群分/肠型/肠道年龄/AI解读,不再全 '-'。\n⑤ B1-5 proxy-confirm 返回体含 aiAnalysis(成功)/ aiAnalysisStatus + aiAnalysisMessage(失败);后端日志不再吞掉 analyze 异常。注意:analyze 500 的生产复测不属代码范围,如实标注。\n⑥ B1-6 admin 列表标题/上传时间列有值;teacher 列表报告对象/代上传人列有真实姓名;确认 /report/list 分页结构未被改动(分页属 B3)。\n⑦ 附加:mvn -pl cfc-backend -am compile 通过;cfc-web 构建通过;检查是否引入 AGENTS.md 禁止项;新增 SQL 注入风险;测试数据清理确认(禁止按他表 id 列表做主键 DELETE)。\n回报格式:一行结论 + 逐条 B1 编号验收表(证据)+ 问题清单(按 P0/P1/P2)+ 清理确认。",
- "note": "核验完成,结论 CONDITIONAL PASS。报告 origin/feature/t29-b1v-verification = 608f18fbf(T29-B1V_VERIFICATION_REPORT.md,104 行)。通过:B1-1/B1-4/B1-6(admin)/B1-5 错误回传;构建全绿(后端 1948 sources、前端 build)。阻断(均非 B1 代码缺陷):V-01 P0 report_food_suitability.score NOT NULL 无默认 -> confirm 全链路 500;V-02 P0 LangGraph overview 无 report_date 键 -> extractedReportDate 恒 null。V-03/V-04/V-05 为既存技术债(本地兜底异常数值、列表 N+1、admin reportType 前端求值缺陷)。",
- "generated_at": "2026-10-26 23:30",
- "generated_from": "T29-B1 开发会话 ses_e8caa672dffekrokMchz49dL06",
- "done_at": "2026-10-26 19:34",
- "branch": "feature/t29-b1v-verification"
- },
- {
- "id": "T19-B",
- "title": "营养商品标注·B线:年龄分段 + UL 剂量安全校验(含修无效建表SQL+补迁移+修fail-open+接线+补参考数据)",
- "priority": "P2",
- "module": "fullstack",
- "instance": "",
- "status": "blocked",
- "spec": "docs/superpowers/specs/2026-10-27-nutrition-product-tagging-prd.md",
- "prompt": "❌ 整条延后(2026-10-27 廖总拍板)。阻塞原因:UL/月龄专业参考数据未就绪。已核实的现状(不要重复核查):① validateProductForAgeAndDosage()(L357-368) + validateDosageAgainstUlLimit()(L373-420) 已实现但全仓零调用方=死代码;② 该方法 fail-open:查不到UL就continue、无成分就return true,参考数据为空时恒等于全部通过=假安全,比不做更危险;③ UL 校验完全忽略年龄(按nutrientName查完get(0)取首行),但 nutrition_ul_limit 表有 age_min_months/age_max_months,儿童维生素A UL远低于成人;④ nutrition_age_dosage/nutrition_ul_limit 等7张表在 DatabaseInitializer 迁移数为0,且 application.yml 无 schema 自动初始化 → 大概率从未建成;⑤ nutrition_age_dosage 建表SQL无效(表体无 product_id 列却末尾写 INDEX idx_product(product_id),MySQL ERROR 1072,该表从来没能建成),且该表本就没有产品关联字段。 解阻塞条件:廖总已定「开发先用公开 DRIs 表填充初稿,待专业方审核」→ 数据初稿就绪且专业方审核通过后,才可做 B1(安全数据地基)→B2(接线)。",
- "unblocked_at": "2026-10-31 12:02",
- "note": "廖总拍板整条延后(2026-10-27):UL/月龄专业参考数据未就绪,开发不得凭搜索引擎填。2026-10-31 12:0x 误解锁已回退(会话已确认不实施)。前置 T19-A 虽 done,但 B 线依赖专业数据,未到可实施时点。 | 2026-10-31 12:0x 复核确认整条延后:UL/月龄专业参考数据未就绪,开发不得凭搜索引擎填。会话已确认不实现并收口。",
- "session_id": "ses_e6fdf0ba2ffeJk0RS3w5wkzbP3",
- "dispatched_at": "2026-10-31 12:04:01",
- "dispatched_to": "lan-248",
- "model": "axonhub/deepseek",
- "blocked_at": "2026-10-31 12:09"
- },
- {
- "id": "T19-C",
- "title": "合规整改:nutrition_product.efficacy_tags(补钙/补锌/益生菌)与 nutrition_age_dosage.purpose(功效说明)涉嫌保健功能宣称",
- "priority": "P2",
- "module": "fullstack",
- "instance": "",
- "status": "blocked",
- "spec": "docs/superpowers/specs/2026-10-27-nutrition-product-tagging-prd.md",
- "prompt": "2026-10-27 廖总拍板:暂不处理,仅记录风险。普通食品/商品在中国法规下不得宣称保健功能。本轮开发不碰、不扩容这两个字段;已录入内容由业务方自查,必要时另立整改项。风险已在 PRD §7 标红线。另注:B 线产出禁止出现「安全」「可放心服用」「不会过量」等保证性表述(一旦给出保证,法律责任落到平台)。",
- "unblocked_at": "2026-10-31 12:02",
- "note": "廖总拍板暂不处理(2026-10-27):普通食品不得宣称保健功能,本轮不碰不扩容,仅记录风险。2026-10-31 12:0x 误解锁已回退。",
- "session_id": "ses_e6fdee748ffexsGIHJkwRiK5JX",
- "dispatched_at": "2026-10-31 12:04:10",
- "dispatched_to": "lan-248",
- "model": "axonhub/deepseek",
- "done_at": "2026-10-31 12:07:04",
- "blocked_at": "2026-10-31 12:09"
- },
- {
- "id": "T29-B1FIX",
- "title": "代传前置缺陷修复(解锁 B2):V-01 food_suitability.score NOT NULL 兜底 + V-02 LangGraph report_date 提取",
- "priority": "P0",
- "module": "cfc-backend + cfc-langgraph",
- "status": "done",
- "spec": "docs/superpowers/plans/2026-10-25-report-proxy-fix-plan.md(核验报告 T29-B1V_VERIFICATION_REPORT.md 第4/7/8章)",
- "instance": "lan-204(Windows D://cfc)",
- "session_id": "ses_e836fd063ffexZzspMfea0TM5u",
- "dispatched_at": "2026-10-27 16:15",
- "dispatched_to": "lan-204",
- "model": "axonhub/deepseek",
- "branch": "feature/proxy-fix-vfix",
- "prompt": "见 out/t29_b1fix_vfix_prompt.txt。修复 B1V 实锤的两项 P0 既存缺陷:V-01(report_food_suitability.score NOT NULL 无默认,saveFoodSuitability 插 null → confirm 500,代码层 setScore 空值兜底 0,禁止改 DDL/迁移);V-02(cfc-langgraph pdf_parser parse_overview 正则+_CN_TO_EN_OVERVIEW 映射+REPORT_PARSE_GUT_TEMPLATE 补 report_date,PDF 无日期则保持 null 不造假)。基线 7680b21e7(B1 核心),完成后 push feature/proxy-fix-vfix,不推 cfclub。",
- "note": "2026-10-27 完成。产出 c1df0f17d(feature/proxy-fix-vfix,3 文件 +40/-2),已随 T29-B1 合并入 cfclub(4dc706188)。V-01 score 兜底 + V-02 report_date 提取实测生效。",
- "done_at": "2026-10-27 18:41"
- },
- {
- "id": "T04-S2",
- "title": "指标多期展示·第二段:report-detail.vue 改造(卡片头三档筛选 + 指标行四行形态 + 分组头较上次 + 合规话术 + pendingCount 提示条)+ L1/L2/L3 三级验收门槛",
- "priority": "P0",
- "module": "cfc-frontend",
- "status": "done",
- "spec": "docs/superpowers/specs/2026-10-25-indicator-timeline-display-design.md",
- "prompt": "规格 §2832-2930 T04 第二段。第一段已由 1f2f9cd01 合 cfclub + 9efb65396(feature/t04-segment1) 修复推行待核验。第二段 6 项改动 + 三级验收门槛(L1 报告级时序覆盖率≥85% ∧ L2 成员可用率≥90% ∧ L3 近6个月20份 gut_flora 抽样)未达标不得上线。验算 SQL 见规格 Q1/Q2/Q3。需先确认 backfill 数据到位再开派。",
- "note": "2026-10-27 从 T04 拆分承接第二段(T04 主体=第一段,已 done)。第二段硬门槛 L1/L2/L3;依赖 cfclub 已有 indicator_values 回填数据(backfill 相关会话 local-45278 ses_e85227149 曾处理 backfill 缺陷,勿混)。 | 2026-10-31 解锁:T04 第一段 1f2f9cd01 已确认在 origin/cfclub 主线,backfill 会话 ses_e85227149 已处理回填缺陷,前置满足。",
- "unblocked_at": "2026-10-31 12:03",
- "session_id": "ses_e6fdf3036ffenhxdN2npasLyLm",
- "dispatched_at": "2026-10-31 12:03:52",
- "dispatched_to": "local-45278",
- "model": "axonhub/deepseek",
- "done_at": "2026-10-31 14:19:26"
- },
- {
- "id": "T04-S2-GATE",
- "title": "指标多期展示·第二段门槛验算(L1报告级覆盖率≥85% ∧ L2成员可用率≥90% ∧ L3抽样20份):纯只读 SELECT",
- "priority": "P0",
- "module": "database-verify(只读)",
- "status": "done",
- "instance": "lan-189(Windows C://code//cfc)",
- "session_id": "ses_e8353bb5affegXXqIcCWUrLu9A",
- "dispatched_at": "2026-10-27 16:25",
- "dispatched_to": "lan-189",
- "model": "axon/deepseek",
- "branch": "verify/t04-s2-gate",
- "prompt": "见 out/t04_s2_gate_prompt.txt。跑规格 Q1/Q2/Q3 三条只读 SQL(测试库 192.168.16.251),输出 L1/L2/L3 数值与达标判定,不写库不改码。",
- "note": "2026-10-27 16:25 派发。判定 T04 第二段(report-detail.vue 改造)可否放行;硬门槛不达标则建议先补 backfill。",
- "done_at": "2026-10-27 18:04:57"
- },
- {
- "id": "COUPON-C2",
- "title": "优惠券 C2 恢复推送:死表清理(UserCoupon/CouponGrantLog 引用移除)+ used_count 漂移修复",
- "priority": "P1",
- "module": "cfc-backend",
- "instance": "lan-248(会话 ses_e827e5d0 已开发+核验 PASS,未 push)",
- "status": "done",
- "spec": "docs/优惠券需求设计与实现核查.md",
- "prompt": "【COUPON-C2】从 pub-iwintrue 实例恢复已完成的 C2 提交(be16b8eb3 删 UserCoupon.java/UserCouponMapper.java/AdminCouponController 引用 + 3379d4ad1 CouponService used_count 递减 +25行),提取为 patch → push 独立分支 → 派独立核验 → 合入 cfclub。⛔ 若 pub-iwintrue 本地提交已丢失(被 auto-bump 抢跑或仓库重置),则按 docs/优惠券需求设计与实现核查.md §五 C2 重新实现(确认无引用后移除死代码,表不 DROP;revert()/revokeFamilyPopulationCoupons() 还券收回时同步递减 coupon.used_count)。禁止按他表 id 列表做主键 DELETE。",
- "note": "origin/feature/coupon-c2 = b8ade0fab(已 push)。清理 UserCoupon/CouponGrantLog 死代码 + CouponService.used_count 还券/收回递减 +39 行。独立核验 ses_e82673d9 PASS(diff 恰 6 文件全在 cfc-backend/src/main)。⚠️ 未合入 cfclub,待合入。",
- "generated_at": "2026-10-27 21:06",
- "generated_from": "优惠券核查文档 §五 C2(2026-10-24 拍板)",
- "session_id": "ses_e81dc285affeWYCUbg9ksBCYSS",
- "dispatched_at": "2026-10-28 00:14:00",
- "dispatched_to": "lan-248",
- "model": "axonhub/deepseek",
- "done_at": "2026-10-28 01:19:20",
- "branch": "feature/coupon-c2"
- },
- {
- "id": "COUPON-C3",
- "title": "优惠券 C3 恢复推送:用户端独立「领券中心」页面(coupon-center.vue + pages.json 分包 + coupons.vue 空状态跳转)",
- "priority": "P1",
- "module": "cfc-frontend",
- "instance": "lan-204(会话 ses_e827e4ae 已开发,未 push)",
- "status": "done",
- "spec": "docs/优惠券需求设计与实现核查.md",
- "prompt": "【COUPON-C3】从 pub-iwintrue 实例恢复已完成的 C3 提交(3379d4ad1 建 coupon-center.vue+pages.json 分包 + 892a7e7c9 coupons.vue 空状态文案改跳转),提取为 patch → push 独立分支 → 派独立核验 → 合入 cfclub。⛔ 若 pub-iwintrue 本地提交已丢失,则按 docs/优惠券需求设计与实现核查.md §五 C3 重新实现(cfc-frontend 新建领券中心页,pages.json 注册,调 /api/coupon/list 拉可取券 + /api/coupon/claim 领取;coupons.vue:55 空状态文案改为跳转真实页面)。",
- "note": "origin/feature/coupon-center-c3 = 30bb2255d7(已 push)。新建 cfc-frontend/pages/coupon/coupon-center.vue 领券中心 + pages.json 分包注册 + coupons.vue 空状态文案跳转。⚠️ 未合入 cfclub,待核验+合入。",
- "generated_at": "2026-10-27 21:06",
- "generated_from": "优惠券核查文档 §五 C3(2026-10-24 拍板)",
- "session_id": "ses_e81dc1fbdffevCE0ya8MDDSYwT",
- "dispatched_at": "2026-10-28 00:14:04",
- "dispatched_to": "lan-204",
- "model": "axonhub/deepseek",
- "done_at": "2026-10-27 22:45:41",
- "branch": "feature/coupon-center-c3"
- },
- {
- "id": "COUPON-REG",
- "title": "优惠券注册发券缺失:UserService.register* 无发券钩子,「新用户专享10元券」模板无触发",
- "priority": "P1",
- "module": "cfc-backend",
- "instance": "",
- "status": "done",
- "spec": "docs/优惠券需求设计与实现核查.md",
- "prompt": "【COUPON-REG】优惠券注册发券缺失(核查报告 §3.1/§四 主要缺口③/§五注):UserService.register* 无任何发券钩子;「新用户专享10元券」模板存在但无触发。目标:注册成功(或绑定家庭)后按模板自动发券到家庭维度(family_coupon),走现有 issueToFamily/grantFamily 链路,防重复靠 family_coupon_grant_log 唯一键。⛔ 先看 2026-08-31 家庭维度方案确认发券口径,再动手;禁止新建表。",
- "note": "2026-10-27 22:4x 收口:并发会话 ses_e827e7ac(local-45278)已实现并合入 cfclub(commit 055f6da25,8 文件 +84/-6)。按 grant_type=REGISTER 模板发家庭维度券,触发点注册/绑定家庭,@Lazy 规避循环依赖,无 DDL 无新表。远端 28 条任务池未含本条目,本机补录后即收口。",
- "generated_at": "2026-10-27 21:06",
- "generated_from": "优惠券核查文档 §五注(观察项转正式)",
- "session_id": "ses_e827e7ac7ffeMuOceXYSDCw0AN",
- "dispatched_at": "2026-10-27 21:16:43",
- "dispatched_to": "local-45278",
- "model": "axonhub/deepseek",
- "done_at": "2026-10-27 23:08",
- "branch": "cfclub"
- },
- {
- "id": "COUPON-P2",
- "title": "优惠券 P2 技术债打包:后台搜索框失效/假分页 + 枚举标签不全/N+1 + 手写 role 鉴权 + DDL 不一致 + DISCOUNT 分位误差 + apply NPE",
- "priority": "P2",
- "module": "fullstack",
- "instance": "lan-248(会话 ses_e827e6d7 已开发,未 push)",
- "status": "done",
- "spec": "docs/优惠券需求设计与实现核查.md",
- "prompt": "【COUPON-P2】优惠券 P2 技术债打包(核查报告 §四 P2 各项):① AdminCouponController.list 忽略 keyword/page/size(搜索失效+假分页)→ 支持真实分页;② 用户端券类型/适用对象枚举映射不全(PERCENT/PRODUCT 显示原始值)+ CouponGrantLog 家庭名 N+1;③ 后台优惠券接口手写 if(!admin) 而非 @PreAuthorize;④ Coupon.java 缺 family_id 字段(schema.sql:2342 有列,实体未对齐);⑤ DISCOUNT 抵扣整数截断分位误差;⑥ apply:192 applicableTo null 时 NPE。逐项修,前端后端同步,禁止新建表。",
- "note": "origin/feature/coupon-p2-tech-debt = 59bc4100b(已 push)。13 文件:后台搜索框真分页 + 枚举标签 + 鉴权 + Coupon.java 补 family_id + DISCOUNT 分位精度 + apply NPE + spring-boot 测试依赖。⚠️ 未合入 cfclub,待核验+合入。与 C2 同改 AdminCouponController/CouponService,合入时需解冲突。",
- "generated_at": "2026-10-27 21:06",
- "generated_from": "优惠券核查文档 §四 P2 / §五注",
- "session_id": "ses_e81cb8e94ffeh9ikZz9pVsvnTv",
- "dispatched_at": "2026-10-28 00:32:08",
- "dispatched_to": "lan-248",
- "model": "axonhub/deepseek",
- "done_at": "2026-10-28 02:06:30",
- "branch": "feature/coupon-p2-tech-debt"
- },
- {
- "id": "T29-B2V",
- "title": "T29-B2 独立核验:权限越权与安全策略收敛验收(B2-1~B2-6 + 路由穷举清单)",
- "priority": "P1",
- "module": "backend",
- "instance": "",
- "status": "done",
- "spec": "docs/superpowers/plans/2026-10-25-report-proxy-fix-plan.md(B2 章节 + 交付纪律)",
- "prompt": "【T29-B2V 独立核验】核验对象 origin/feature/proxy-fix-b2-security = 751145b9d(基线 origin/cfclub)。⛔ 只核验不改业务代码;允许写操作仅限切分支/跑构建测试/造临时测试数据(用完必删)/在独立核验分支写报告。核验要点:① B2-1 /api/family/member/list 支持 familyId + 行级隔离;确认 ensureUserFamily 静默建空家庭兜底已删除且不新建家庭行。② B2-2 proxyParsePreview 显式 familyId 绑定校验(未绑定 teacher 代传→明确错误)。③ B2-3 proxyConfirm 校验草稿 familyId 与 subjectId 归属一致 + 草稿仅创建者/admin 可确认。④ B2-4 FamilyAccessInterceptor 空有效家庭集拒绝:核对报告的带 familyId 路由穷举清单是否逐条给出结论、有无正常业务依赖旧放行行为(若依赖且会话擅自加白名单→P0 退回);复现路径(family_id NULL + teacher_family_ids 空 + familyId=2009)→ 403;不带 familyId 的既有正常请求回归抽查不误伤(报告列表/成员列表/任务等)。⑤ B2-5 无 token 调 proxy-parse → 401。⑥ B2-6 三层校验编排注释块存在且标明返回码。⑦ mvn -pl cfc-backend -am compile 通过;无 AGENTS.md 禁止项;无 SQL 注入;测试数据清理确认(禁止按他表 id 列表做主键 DELETE)。回报:一行结论 + 逐条 B2 编号验收表(证据)+ 问题清单(P0/P1/P2)+ 路由穷举结论表 + 清理确认。",
- "note": "2026-10-28 加入。T29-B2 开发完成已 push(751145b9d),核验通过后方可合入 cfclub,随后派 T29-B3。",
- "generated_at": "2026-10-28 09:43",
- "generated_from": "T29-B2 开发会话 ses_e82f773fcffePaGYPNUK1muSHx",
- "session_id": "ses_e7fca6b04ffeYxH60KvsfXV23h",
- "dispatched_at": "2026-10-28 09:52:38",
- "dispatched_to": "local-45278",
- "model": "axonhub/deepseek",
- "done_at": "2026-10-28 12:25",
- "result": "PASS: B2-1~B2-6 全部通过(代码+测试+运行态三向),无 P0;P1=合并冲突(实测零冲突,报告静态推断过度);P2x3(返回码口径/注释陈旧/密钥配置说明)",
- "report": "docs/2026-10-28-T29-B2-verification.md @ origin/cfclub=a57af2660"
- },
- {
- "id": "T19",
- "title": "营养商品标注:Product 营养成分信息 + 管理端录入 + 小程序展示",
- "priority": "P2",
- "module": "fullstack",
- "instance": "",
- "status": "done",
- "spec": "docs/superpowers/plans/2026-10-12-nutrition-product-tagging.md",
- "prompt": "实现计划 2026-10-12-nutrition-product-tagging.md:为商城商品补齐营养成分信息(热量/蛋白质/脂肪/碳水/膳食纤维等)与营养标签,支撑饮食推荐按营养学口径排序。现状:Product 实体无营养字段(grep 无 protein/calorie 等字段),Food 实体有 nutritionTags 与营养成分(AdminFoodController 已透出)但商品侧缺失。本任务:①Product 表迁移新增 nutrition 相关列(如 calories_kcal/protein_g/fat_g/carb_g/fiber_g + nutrition_tags JSON 或复用字符串逗号分隔),同步 schema.sql 与 DatabaseInitializer 幂等迁移;②管理端 ProductEdit.vue 加营养成分表单区块(可空,保存 NULL);③小程序 product-detail.vue 展示营养成分表(无数据隐藏区块),推荐接口可按标签过滤;④商品-营养同步:如 dan 商城已有营养数据可复用则做映射导入。落点:cfc-backend schema.sql/DatabaseInitializer + Product 实体/DTO + AdminProductController 保存链路;cfc-web/src/views/admin/ProductEdit.vue;cfc-frontend/pages/discover-detail/product-detail/product-detail.vue。验收要点:mvn clean compile 通过;迁移幂等可重复执行;管理端可保存/回显营养成分;小程序无值不显示、有值正确展示;新增 2-3 个单测(DTO 映射/默认值)。",
- "session_id": "ses_e91745133ffebXvnPFXhnF7SBM",
- "dispatched_at": "2026-10-24 23:33:31",
- "dispatched_to": "local-45278",
- "model": "axonhub/deepseek",
- "note": " [2026-10-28 同步保留:本机已拆分为 T19-A,T19-B,T19-C]",
- "done_at": "2026-10-31 11:21:09"
- },
- {
- "id": "OPS-CI-GATE",
- "title": "CI 编译闸门:防红构建进入 cfclub 主线(方案 B 远端 CI + A 本地 hook,仅 iwintrue/local 编译)",
- "priority": "P1",
- "module": "infra",
- "instance": "",
- "status": "done",
- "spec": "docs/2026-10-29-CI编译闸门待办.md",
- "prompt": "在 cfclub 主线落地「推送前/CI 编译闸门」,防止红构建(如 ee71f7716 的 StatsController lambda 捕获非 effectively-final 错误)未经编译即进入 origin/cfclub。背景:2026-10-28 T29-B2 合入排查发现 ee71f7716 红构建未被拦截即 push,导致主线约 4 小时不可编译、阻断合入。选定方案:B 远端 CI 检查(主闸门,在 git.iwintrue.com 的 CI runner/webhook 上对 cfclub 的 push/PR 触发 mvn compile + 单测,红灯禁合入)+ 互补 A 本地 pre-push hook(githooks/pre-push 检测 cfc-backend 改动并跑 mvn -DskipTests compile,失败退出 1;启用 git config core.hooksPath githooks)+ C 分支保护(cfclub 设受保护分支)。明确约束:编译闸门仅在 iwintrue(远端 CI)与 local(开发者本机)上执行,不在其他环境运行。验收:cfclub 合入前 mvn compile 0 error;红构建无法进入 cfclub;本机自检 < 1 分钟。详见 docs/2026-10-29-CI编译闸门待办.md。",
- "note": "2026-10-29 由 T29-B2 合入复盘提出;根因样例 ee71f7716(已临时修复 66e9cc2ba 并入 60e526602)。",
- "session_id": "ses_e7373efe3ffekw18agWsmkOXis",
- "dispatched_at": "2026-10-30 19:22:31",
- "dispatched_to": "lan-248",
- "model": "axonhub/deepseek",
- "done_at": "2026-10-30 19:54:17"
- },
- {
- "id": "GAP-2026-09-17-product-recom",
- "title": "[差距] 2026 09 17 product recommendation rule engine design",
- "priority": "P1",
- "module": "cfc-backend",
- "instance": "",
- "status": "done",
- "spec": "docs/superpowers/specs/2026-09-17-product-recommendation-rule-engine-design.md",
- "entity": "RecommendationRuleEngine.java",
- "gap_kinds": [
- "missing_file"
- ],
- "prompt": "请核对需求/设计文档 docs/superpowers/specs/2026-09-17-product-recommendation-rule-engine-design.md 与实际实现的差距,并完成以下差距项:\n\n文档主题:2026 09 17 product recommendation rule engine design\n所属模块:cfc-backend\n\n检测到的差距:\n - [文档提及但尚未创建的代码文件] RecommendationRuleEngine.java\n\n任务来源:sync_gap_tasks(巡检发现空闲会话且任务池为空时自动生成)。\n要求:先阅读该文档对应章节,确认差距真实存在(若已实现请如实说明并标记为无需改动),然后按文档口径实现/补齐,完成后自行提交并推送。",
- "generated_from": "sync_gap_tasks",
- "generated_at": "2026-10-30 19:40:06",
- "session_id": "ses_e73639dbcffe7ulNLatpFNg4ZJ",
- "dispatched_at": "2026-10-30 19:40:21",
- "dispatched_to": "lan-189",
- "model": "opencode/deepseek-v4.1-flash-free",
- "done_at": "2026-10-30 19:54:17"
- },
- {
- "id": "GAP-2026-09-17-product-recom",
- "title": "[差距] 2026 09 17 product recommendation rule engine plan",
- "priority": "P1",
- "module": "cfc-backend",
- "instance": "",
- "status": "done",
- "spec": "docs/superpowers/plans/2026-09-17-product-recommendation-rule-engine-plan.md",
- "entity": "RecommendationRuleEngine.java",
- "gap_kinds": [
- "missing_file"
- ],
- "prompt": "请核对需求/设计文档 docs/superpowers/plans/2026-09-17-product-recommendation-rule-engine-plan.md 与实际实现的差距,并完成以下差距项:\n\n文档主题:2026 09 17 product recommendation rule engine plan\n所属模块:cfc-backend\n\n检测到的差距:\n - [文档提及但尚未创建的代码文件] RecommendationRuleEngine.java\n\n任务来源:sync_gap_tasks(巡检发现空闲会话且任务池为空时自动生成)。\n要求:先阅读该文档对应章节,确认差距真实存在(若已实现请如实说明并标记为无需改动),然后按文档口径实现/补齐,完成后自行提交并推送。",
- "generated_from": "sync_gap_tasks",
- "generated_at": "2026-10-30 19:40:06",
- "session_id": "ses_e73638aceffeSRdkfNbV8LCe2F",
- "dispatched_at": "2026-10-30 19:40:26",
- "dispatched_to": "pub-iwintrue",
- "model": "etotem/deepseek",
- "done_at": "2026-10-30 20:07:28"
- },
- {
- "id": "GAP-2026-09-13-user-portrait",
- "title": "[差距] 2026 09 13 user portrait ai generation",
- "priority": "P1",
- "module": "cfc-backend",
- "instance": "",
- "status": "done",
- "spec": "docs/superpowers/plans/2026-09-13-user-portrait-ai-generation.md",
- "entity": "AiGatewayImpl.java",
- "gap_kinds": [
- "missing_file"
- ],
- "prompt": "请核对需求/设计文档 docs/superpowers/plans/2026-09-13-user-portrait-ai-generation.md 与实际实现的差距,并完成以下差距项:\n\n文档主题:2026 09 13 user portrait ai generation\n所属模块:cfc-backend\n\n检测到的差距:\n - [文档提及但尚未创建的代码文件] AiGatewayImpl.java\n\n任务来源:sync_gap_tasks(巡检发现空闲会话且任务池为空时自动生成)。\n要求:先阅读该文档对应章节,确认差距真实存在(若已实现请如实说明并标记为无需改动),然后按文档口径实现/补齐,完成后自行提交并推送。",
- "generated_from": "sync_gap_tasks",
- "generated_at": "2026-10-30 19:40:06",
- "dispatched_to": "local-45278",
- "model": "axonhub/deepseek",
- "note": "[19:55 修正] 19:40 派发 lan-189 会话已结束(404)且无产出证据;基础实现 934c93ba7(9-15) 在 cfclub 但 AI 生成主体未证完成。重派前会话须先核实差距真实存在。\n[20:xx 核实结论] 差距为假阳性/已实现,标记无需改动。核实:设计文档 Task3 Step3 所述 gateway/impl/AiGatewayImpl.java 基于「接口+实现类」拆分假设;实际工程架构为单一具体类 service/AiGateway.java(@Service,git 历史中从未存在 gateway/ 包),其 generatePortrait(Long,Long,String,Map) 已实现(L477-505):调 POST /api/portrait/generate、解析 portrait_text、含熔断/启用门/失败返回 null,与文档口径一致(提交 ef5e6d2cc)。全链路已落地并提交:823a61120 PortraitService+实体+Controller、0f904ba31 portrait_generation_graph.py、231f644bd api/portrait.py、ef5e6d2cc AiGateway+AIService+AIBehaviorController、68a9c8026 PortraitController /generate /regenerate、前端 api.js generatePortrait/regeneratePortrait。mvn compile EXIT_CODE=0。无需新建 gateway/impl/AiGatewayImpl.java(否则成为无人引用的死代码,且与既有单一具体类架构冲突)。",
- "session_id": "ses_e734ac8caffecPTw0yrXY60T2N",
- "dispatched_at": "2026-10-30 20:07:29",
- "done_at": "2026-10-30"
- },
- {
- "id": "GAP-2026-10-30-indicator-fav",
- "title": "2026 10 30 indicator favorite backend design",
- "priority": "P1",
- "module": "cfc-backend",
- "instance": "",
- "status": "done",
- "spec": "docs/superpowers/specs/2026-10-30-indicator-favorite-backend-design.md",
- "entity": "IndicatorFavoriteService.java",
- "gap_kinds": [
- "missing_file"
- ],
- "prompt": "请核对需求/设计文档 docs/superpowers/specs/2026-10-30-indicator-favorite-backend-design.md 与实际实现的差距并完成(任务来源 sync_gap_tasks 恢复)。",
- "generated_from": "sync_gap_tasks",
- "generated_at": "2026-10-30 12:32:17",
- "session_id": "ses_e74eb8507ffe5aPu0F0",
- "dispatched_at": "2026-10-30 12:32:17",
- "note": "[19:47 状态恢复] 覆盖曾删除本记录;会话仍在 local-45278 执行。 [19:55 修正] 会话已结束;cfclub 产出证据 commit bcdd602b7(T04 指标收藏后端化方案A),标 done。",
- "done_at": "2026-10-30 19:55:00"
- },
- {
- "id": "GAP-2026-09-10-pearl-diagram",
- "title": "[差距] 2026 09 10 pearl diagram redesign design",
- "priority": "P1",
- "module": "cfc-backend",
- "instance": "",
- "status": "done",
- "spec": "docs/superpowers/specs/2026-09-10-pearl-diagram-redesign-design.md",
- "entity": "PearlReminderScheduler.java",
- "gap_kinds": [
- "missing_file"
- ],
- "prompt": "请核对需求/设计文档 docs/superpowers/specs/2026-09-10-pearl-diagram-redesign-design.md 与实际实现的差距,并完成以下差距项:\n\n文档主题:2026 09 10 pearl diagram redesign design\n所属模块:cfc-backend\n\n检测到的差距:\n - [文档提及但尚未创建的代码文件] PearlReminderScheduler.java\n\n任务来源:sync_gap_tasks(巡检发现空闲会话且任务池为空时自动生成)。\n要求:先阅读该文档对应章节,确认差距真实存在(若已实现请如实说明并标记为无需改动),然后按文档口径实现/补齐,完成后自行提交并推送。",
- "generated_from": "sync_gap_tasks",
- "generated_at": "2026-10-30 19:52:54",
- "session_id": "ses_e73567860ffe5KxmhmYNiXJABn",
- "dispatched_at": "2026-10-30 19:54:43",
- "dispatched_to": "lan-189",
- "model": "axon/deepseek",
- "done_at": "2026-10-30 20:07:28"
- },
- {
- "id": "GAP-2026-09-09-team-hierarch",
- "title": "[差距] 2026 09 09 team hierarchy design",
- "priority": "P1",
- "module": "cfc-frontend",
- "instance": "",
- "status": "done",
- "spec": "docs/superpowers/specs/2026-09-09-team-hierarchy-design.md",
- "entity": "TreeNode.vue",
- "gap_kinds": [
- "missing_file"
- ],
- "prompt": "请核对需求/设计文档 docs/superpowers/specs/2026-09-09-team-hierarchy-design.md 与实际实现的差距,并完成以下差距项:\n\n文档主题:2026 09 09 team hierarchy design\n所属模块:cfc-frontend\n\n检测到的差距:\n - [文档提及但尚未创建的代码文件] TreeNode.vue\n\n任务来源:sync_gap_tasks(巡检发现空闲会话且任务池为空时自动生成)。\n要求:先阅读该文档对应章节,确认差距真实存在(若已实现请如实说明并标记为无需改动),然后按文档口径实现/补齐,完成后自行提交并推送。",
- "generated_from": "sync_gap_tasks",
- "generated_at": "2026-10-30 19:52:54",
- "session_id": "ses_e7356bed8ffeBfKFRYMrSRuwFX",
- "dispatched_at": "2026-10-30 19:54:25",
- "dispatched_to": "lan-248",
- "model": "axonhub/deepseek",
- "done_at": "2026-10-30 21:57:34"
- },
- {
- "id": "GAP-2026-09-09-team-hierarch",
- "title": "[差距] 2026 09 09 team hierarchy",
- "priority": "P1",
- "module": "cfc-frontend",
- "instance": "",
- "status": "done",
- "spec": "docs/superpowers/plans/2026-09-09-team-hierarchy.md",
- "entity": "cfc-frontend/pages/profile/team-tree.vue",
- "gap_kinds": [
- "missing_file"
- ],
- "prompt": "请核对需求/设计文档 docs/superpowers/plans/2026-09-09-team-hierarchy.md 与实际实现的差距,并完成以下差距项:\n\n文档主题:2026 09 09 team hierarchy\n所属模块:cfc-frontend\n\n检测到的差距:\n - [文档提及但尚未创建的代码文件] cfc-frontend/pages/profile/team-tree.vue\n\n任务来源:sync_gap_tasks(巡检发现空闲会话且任务池为空时自动生成)。\n要求:先阅读该文档对应章节,确认差距真实存在(若已实现请如实说明并标记为无需改动),然后按文档口径实现/补齐,完成后自行提交并推送。",
- "generated_from": "sync_gap_tasks",
- "generated_at": "2026-10-30 19:52:54",
- "session_id": "ses_e735690eaffeNHWYSlww1zwBRw",
- "dispatched_at": "2026-10-30 19:54:36",
- "dispatched_to": "lan-248",
- "model": "axonhub/deepseek",
- "done_at": "2026-10-30 20:07:28"
- },
- {
- "id": "GAP-2026-09-09-tianpan-tradi",
- "title": "[差距] 2026 09 09 tianpan tradition design",
- "priority": "P2",
- "module": "cfc-backend",
- "instance": "",
- "status": "done",
- "spec": "docs/superpowers/specs/2026-09-09-tianpan-tradition-design.md",
- "entity": "(已完成,见提交 26c216342)",
- "gap_kinds": [
- "statement"
- ],
- "prompt": "任务完成,已合入 cfclub(commit 26c216342)。",
- "generated_from": "sync_gap_tasks",
- "generated_at": "2026-10-30 16:59:41",
- "session_id": "ses_e73f6e440ffexE6lTF",
- "dispatched_at": "2026-10-30 16:59:41",
- "done_at": "2026-10-30 16:59:41",
- "note": "[19:50 状态恢复] 会话已结束;cfclub 完成证据 commit 26c216342;原记录被覆盖删除后补回为 done。"
- },
- {
- "id": "GAP-2026-10-04-plan-review-w",
- "title": "[差距] 2026 10 04 plan review workbench design",
- "priority": "P2",
- "module": "cfc-backend",
- "instance": "",
- "status": "done",
- "spec": "docs/superpowers/plans/2026-10-04-plan-review-workbench-design.md",
- "entity": "(已完成,见提交 312308324)",
- "gap_kinds": [
- "statement"
- ],
- "prompt": "任务完成,已合入 cfclub(commit 312308324)。",
- "generated_from": "sync_gap_tasks",
- "generated_at": "2026-10-30 17:10:14",
- "session_id": "ses_e73ed382bffe1eb2X",
- "dispatched_at": "2026-10-30 17:10:14",
- "done_at": "2026-10-30 17:10:14",
- "note": "[19:50 状态恢复] 会话已结束;cfclub 完成证据 commit 312308324;原记录被覆盖删除后补回为 done。"
- },
- {
- "id": "GAP-2026-09-02-product-gift-",
- "title": "[差距] 2026 09 02 product gift selection design",
- "priority": "P1",
- "module": "cfc-backend",
- "instance": "",
- "status": "done",
- "spec": "docs/superpowers/specs/2026-09-02-product-gift-selection-design.md",
- "entity": "GiftItemVO.java",
- "gap_kinds": [
- "missing_file"
- ],
- "prompt": "请核对需求/设计文档 docs/superpowers/specs/2026-09-02-product-gift-selection-design.md 与实际实现的差距,并完成以下差距项:\n\n文档主题:2026 09 02 product gift selection design\n所属模块:cfc-backend\n\n检测到的差距:\n - [文档提及但尚未创建的代码文件] GiftItemVO.java\n\n任务来源:sync_gap_tasks(巡检发现空闲会话且任务池为空时自动生成)。\n要求:先阅读该文档对应章节,确认差距真实存在(若已实现请如实说明并标记为无需改动),然后按文档口径实现/补齐,完成后自行提交并推送。",
- "generated_from": "sync_gap_tasks",
- "generated_at": "2026-10-30 20:24:02",
- "session_id": "ses_e733b56b3ffeE70oldy3cLhRRe",
- "dispatched_at": "2026-10-30 20:24:20",
- "dispatched_to": "pub-iwintrue",
- "model": "etotem/deepseek",
- "done_at": "2026-10-30 21:57:34"
- },
- {
- "id": "GAP-2026-09-01-cf-commission",
- "title": "[差距] 2026 09 01 cf commission redesign",
- "priority": "P1",
- "module": "cfc-backend",
- "instance": "",
- "status": "done",
- "spec": "docs/superpowers/plans/2026-09-01-cf-commission-redesign.md",
- "entity": "cfc-backend/src/main/java/com/etotem/cfc/controller/CfCouponController.java",
- "gap_kinds": [
- "missing_file"
- ],
- "prompt": "请核对需求/设计文档 docs/superpowers/plans/2026-09-01-cf-commission-redesign.md 与实际实现的差距,并完成以下差距项:\n\n文档主题:2026 09 01 cf commission redesign\n所属模块:cfc-backend\n\n检测到的差距:\n - [文档提及但尚未创建的代码文件] cfc-backend/src/main/java/com/etotem/cfc/controller/CfCouponController.java\n - [文档提及但尚未创建的代码文件] CfCouponController.java\n\n任务来源:sync_gap_tasks(巡检发现空闲会话且任务池为空时自动生成)。\n要求:先阅读该文档对应章节,确认差距真实存在(若已实现请如实说明并标记为无需改动),然后按文档口径实现/补齐,完成后自行提交并推送。",
- "generated_from": "sync_gap_tasks",
- "generated_at": "2026-10-30 20:24:02",
- "session_id": "ses_e733b7545ffeRxN2rNiRJDxz3C",
- "dispatched_at": "2026-10-30 20:24:12",
- "dispatched_to": "lan-248",
- "model": "axonhub/deepseek",
- "done_at": "2026-10-30 21:57:34"
- },
- {
- "id": "GAP-verify-activity-detail-r",
- "title": "[差距] verify activity detail redesign",
- "priority": "P2",
- "module": "cfc-backend",
- "instance": "",
- "status": "done",
- "spec": "docs/superpowers/plans/verify/verify-activity-detail-redesign.md",
- "entity": "- 需求2(海报模板):管理端模板 CRUD、小程序端选择/预览、三种绘制引擎、渲染兜底均健壮 → 放行;但\"元素位置与样式可配置\"未实现,属需求范围缩水,作为遗留项另行评估,**不阻塞本次放行**。",
- "gap_kinds": [
- "statement"
- ],
- "prompt": "请核对需求/设计文档 docs/superpowers/plans/verify/verify-activity-detail-redesign.md 与实际实现的差距,并完成以下差距项:\n\n文档主题:verify activity detail redesign\n所属模块:cfc-backend\n\n检测到的差距:\n - [标记为「设计完成但未实现」的内容] - 需求2(海报模板):管理端模板 CRUD、小程序端选择/预览、三种绘制引擎、渲染兜底均健壮 → 放行;但\"元素位置与样式可配置\"未实现,属需求范围缩水,作为遗留项另行评估,**\n\n任务来源:sync_gap_tasks(巡检发现空闲会话且任务池为空时自动生成)。\n要求:先阅读该文档对应章节,确认差距真实存在(若已实现请如实说明并标记为无需改动),然后按文档口径实现/补齐,完成后自行提交并推送。",
- "generated_from": "sync_gap_tasks",
- "generated_at": "2026-10-30 20:24:02",
- "session_id": "ses_e72e582fdffeu1I28Mbb9oNOeX",
- "dispatched_at": "2026-10-30 21:58:05",
- "dispatched_to": "pub-iwintrue",
- "model": "etotem/deepseek",
- "done_at": "2026-10-30 23:31:44"
- },
- {
- "id": "SOP-MEMBER",
- "title": "SOP成员上限收紧+FAMILY定价1980",
- "priority": "P0",
- "module": "cfc-backend",
- "instance": "",
- "status": "done",
- "spec": "docs/superpowers/specs/2026-10-30-sop-gap-fix.md",
- "prompt": "执行 docs/superpowers/specs/2026-10-30-sop-gap-fix.md 的 SOP-MEMBER:①membership_levels 种子 FREE=0/BASIC=2/FAMILY=4/PREMIUM=10;②FAMILY 定价改 19800/59400/198000 分并同步 sys_config member_fee_family/member_fee_family_yearly/member_upgrade_threshold=198000,道具 member1980 与下单金额自洽;③FamilyMemberService.addMember 加 max_children 强校验(count>=max 拒绝新增,存量超限不删除)。完成后 git commit+push 并回报。",
- "session_id": "ses_e72e5c3e4ffeODUTR8tT588W1y",
- "dispatched_at": "2026-10-30 21:57:49",
- "dispatched_to": "lan-248",
- "model": "axonhub/deepseek",
- "done_at": "2026-10-30 23:36:26"
- },
- {
- "id": "SOP-HIDE",
- "title": "SOP FREE隐藏部分数据(五维+深度报告)",
- "priority": "P0",
- "module": "cfc-backend+cfc-frontend",
- "instance": "",
- "status": "done",
- "spec": "docs/superpowers/specs/2026-10-30-sop-gap-fix.md",
- "prompt": "执行 docs/superpowers/specs/2026-10-30-sop-gap-fix.md 的 SOP-HIDE:FREE 用户五维自检隐藏富/行/心分项+familyData+趋势+AI解读,深度报告隐藏 microbiome/disease/ai_analysis,响应加 masked:true 标志,前端显示升级引导。BASIC+ 全量。完成后 git commit+push 并回报。",
- "session_id": "ses_e72e5e156ffeut0MQZsCmI9DMd",
- "dispatched_at": "2026-10-30 21:57:41",
- "dispatched_to": "lan-248",
- "model": "axonhub/deepseek",
- "done_at": "2026-10-31 00:40:20"
- },
- {
- "id": "SOP-ATTRIB",
- "title": "SOP E12提前放行+归因问卷接B2",
- "priority": "P1",
- "module": "cfc-backend+cfc-frontend",
- "instance": "",
- "status": "done",
- "spec": "docs/superpowers/specs/2026-10-30-sop-gap-fix.md",
- "prompt": "执行 docs/superpowers/specs/2026-10-30-sop-gap-fix.md 的 SOP-ATTRIB:①application.yml app.attribution.enabled false→true;②前端 utils/api.js 新增 getAttributionConfirmQuestions;③survey-questionnaire.vue 识别 dimension===family_attribution 走 B2 动态下发并按 ConfirmQuestionVO 渲染(date/single/text/multi+条件题)。完成后 git commit+push 并回报。",
- "session_id": "ses_e72e5a1afffeJJWt0FaAUv7nwx",
- "dispatched_at": "2026-10-30 21:57:58",
- "dispatched_to": "lan-189",
- "model": "opencode/deepseek-v4.1-flash-free",
- "done_at": "2026-10-30 22:22:31"
- },
- {
- "id": "T30",
- "title": "报告类型→商城商品链接配置(菌群/DAN 可链商品,后台可配)",
- "priority": "P1",
- "module": "fullstack",
- "instance": "",
- "status": "done",
- "spec": "docs/superpowers/specs/2026-10-30-report-type-product-link-design.md",
- "prompt": "规格 2026-10-30-report-type-product-link-design.md:小程序上传报告页支持的报告类型中,菌群检测(DAN)报告支持直接链到商城商品,且哪种报告可链接、链接到哪个商品可在后台配置。方案:①数据库 report_type_registry 加 linked_product_id BIGINT NULL 列(DatabaseInitializer ensureColumn 迁移 + schema.sql 同步,幂等);②后端 ReportTypeRegistry 实体 + 字段;ReportParserAdminController /types/save 支持保存 linkedProductId,/types 返回含该字段;新增 POST /api/report-parser/types/links(小程序公开)返回 is_active=1 AND linked_product_id IS NOT NULL 的记录,含 productName;③小程序 cfc-frontend/pages/health/report-upload.vue 叠加「查看商品」入口(gut_flora/dan_a2 等配置了链接的项右侧箭头+商品名,点击跳 /pages/discover-detail/product-detail/product-detail?id=),未配置链接项保持纯展示;cfc-frontend/utils/api.js 加 getReportTypeLinks();④后台 cfc-web/src/views/admin/ReportTypeManagement.vue 编辑对话框加关联商品下拉(来自 /api/admin/product/list 等),列表加关联商品列,保存传 linkedProductId。验收:①小程序上传页菌群/DAN 显示查看商品并跳转正确详情页;②后台配置/清除链接后小程序刷新生效;③未配置项不显示入口;④mvn clean compile 与两前端 npm build 通过;⑤迁移幂等、老数据 NULL 正常。铁律:后端统一 @PostMapping;小程序禁用 ?. / CSS Grid / :key 表达式。",
- "note": "spec 已合入 cfclub commit 9a8299c92",
- "session_id": "ses_e72cf2565ffewUF53ggo4Pb0LV",
- "dispatched_at": "2026-10-30 22:22:31",
- "dispatched_to": "local-45278",
- "model": "axonhub/deepseek",
- "done_at": "2026-10-30 23:31:44"
- },
- {
- "id": "GAP-2026-10-23-project-maste",
- "title": "[差距] 2026 10 23 project master plan",
- "priority": "P2",
- "module": "cfc-backend",
- "instance": "",
- "status": "done",
- "spec": "docs/superpowers/specs/2026-10-23-project-master-plan.md",
- "entity": "| lan-189 | 规划师认证 | ⚠️ **只提交了设计规格,实现未落地** → 本计划 W3 |",
- "gap_kinds": [
- "statement"
- ],
- "prompt": "请核对需求/设计文档 docs/superpowers/specs/2026-10-23-project-master-plan.md 与实际实现的差距,并完成以下差距项:\n\n文档主题:2026 10 23 project master plan\n所属模块:cfc-backend\n\n检测到的差距:\n - [标记为「设计完成但未实现」的内容] | lan-189 | 规划师认证 | ⚠️ **只提交了设计规格,实现未落地** → 本计划 W3 |\n - [标记为「设计完成但未实现」的内容] 5. 机构管理员管理:设计已完成,16 项任务待落地\n6. 首页家庭任务数:设计已完成,未实现\n\n任务来源:sync_gap_tasks(巡检发现空闲会话且任务池为空时自动生成)。\n要求:先阅读该文档对应章节,确认差距真实存在(若已实现请如实说明并标记为无需改动),然后按文档口径实现/补齐,完成后自行提交并推送。",
- "generated_from": "sync_gap_tasks",
- "generated_at": "2026-10-30 22:38:09",
- "session_id": "ses_e72c09c0effeslQm9SSpicnNRK",
- "dispatched_at": "2026-10-30 22:38:24",
- "dispatched_to": "lan-204",
- "model": "axonhub/deepseek",
- "done_at": "2026-10-31 02:20:26"
- },
- {
- "id": "GAP-2026-10-25-food-overview",
- "title": "[差距] 2026 10 25 food overview persistent min",
- "priority": "P1",
- "module": "cfc-frontend",
- "instance": "",
- "status": "done",
- "spec": "docs/superpowers/plans/2026-10-25-food-overview-persistent-min.md",
- "entity": "cfc-frontend/pages/diet/food-query.vue",
- "gap_kinds": [
- "missing_file"
- ],
- "prompt": "请核对需求/设计文档 docs/superpowers/plans/2026-10-25-food-overview-persistent-min.md 与实际实现的差距,并完成以下差距项:\n\n文档主题:2026 10 25 food overview persistent min\n所属模块:cfc-frontend\n\n检测到的差距:\n - [文档提及但尚未创建的代码文件] cfc-frontend/pages/diet/food-query.vue\n\n任务来源:sync_gap_tasks(巡检发现空闲会话且任务池为空时自动生成)。\n要求:先阅读该文档对应章节,确认差距真实存在(若已实现请如实说明并标记为无需改动),然后按文档口径实现/补齐,完成后自行提交并推送。",
- "generated_from": "sync_gap_tasks",
- "generated_at": "2026-10-30 22:56:15",
- "session_id": "ses_e72b00c44ffeXkLbgUn3GjP70h",
- "dispatched_at": "2026-10-30 22:56:29",
- "dispatched_to": "lan-189",
- "model": "opencode/deepseek-v4.1-flash-free",
- "done_at": "2026-10-30 23:31:44"
- },
- {
- "id": "T31",
- "title": "服务商「我的团队」多团队管理(顶部切换器,一人多团队)",
- "priority": "P1",
- "module": "fullstack",
- "instance": "",
- "status": "done",
- "spec": "docs/superpowers/specs/2026-10-30-vendor-team-multi-manage-design.md",
- "prompt": "规格 2026-10-30-vendor-team-multi-manage-design.md:小程序「我的团队」页(cfc-frontend/pages/vendor/team-system/team-system.vue,文案「服务商团队管理」)支持多团队管理,一人可同时出现在多个团队,顶部团队切换器。后端分销体系已支持多团队:DistributionService.getUserTeams(userId) 返回 List<DistributionSystem>(distribution_systems 表,字段 id/name/ownerId/enabled)。方案:①后端确认/新增「我的团队列表」小程序接口(返回当前用户多个 DistributionSystem,按 userId 鉴权),各团队信息接口(supply-system/my-system、supply-hierarchy/my)显式支持 systemId 参数(缺省取默认团队),supply-team/members 与 /customers 确认按 systemId 过滤;②前端 team-system.vue 顶部加团队切换器(标签页/下拉,数据来自我的团队列表),data 维护 teamList+currentSystemId,切换时联动调 getVendorSystemInfo/getVendorHierarchyInfo/getVendorTeamMembers(currentSystemId)/getVendorTeamCustomers({systemId}) 刷新成员/客户/统计;③cfc-frontend/utils/api.js 中 getVendorSystemInfo/getVendorHierarchyInfo 增 systemId 参数透传。验收:①顶部出现团队切换器列全部团队;②切换后成员/客户/统计随之刷新;③单团队时切换器退化为单列不报错;④列表接口按当前用户鉴权不泄露他人团队;⑤mvn clean compile 与 npm run build:mp-weixin 通过。铁律:后端统一 @PostMapping,角色检查;小程序禁用 ?. / CSS Grid / :key 表达式。可选增强:成员跨团队标注(多个团队同时归属)。",
- "note": "spec 已合入 cfclub commit 67c523bec;后端 getUserTeams 已支持一人多团队",
- "session_id": "ses_e728e7acaffejwwStaWggovmYa",
- "dispatched_at": "2026-10-30 23:33:09",
- "dispatched_to": "local-45278",
- "model": "axonhub/deepseek",
- "done_at": "2026-10-31 00:56:32"
- },
- {
- "id": "T-UI-FEED-UNIFY",
- "title": "首页/成长页推荐阅读+推荐商品风格统一(复用任务书 2026-10-30)",
- "priority": "P2",
- "module": "frontend",
- "instance": "lan-189",
- "status": "done",
- "spec": ".workbuddy/tasks/2026-10-30-ui-article-feed-unify.md",
- "prompt": "按任务书完成 cfc-frontend 首页/成长页推荐阅读(换ArticleFeed左图右文列表)+成长页推荐商品(layout=mall)风格统一,4文件改动,令牌纪律与git纪律见任务书",
- "session_id": "ses_e707d3ce4ffeOq12S8skTs7Msn",
- "dispatched_at": "2026-10-31 09:13:54",
- "dispatched_to": "lan-189",
- "model": "opencode/deepseek-v4.1-flash-free",
- "done_at": "2026-10-31 09:42:12"
- },
- {
- "id": "T19-MERGE",
- "title": "T19-MERGE 营养商品标注合入:把 328443d43 合入最新 cfclub",
- "priority": "P1",
- "module": "fullstack",
- "instance": "",
- "status": "done",
- "spec": "docs/superpowers/specs/2026-10-27-nutrition-product-tagging-prd.md",
- "prompt": "把 origin/feature/nutrition-product-tagging(328443d43, 13文件+570, 4单测类11用例) 合入最新 cfclub 主线。步骤:1)git fetch origin feature/nutrition-product-tagging;2)另开 worktree 基于 origin/cfclub 新建分支 feature/nutrition-product-merge(严禁在主工作树直接改,主树脏);3)git merge origin/feature/nutrition-product-tagging(或 cherry-pick 328443d43);4)解决已知 3 处冲突:DatabaseInitializer 迁移号(417 若被占用则递增到最新+1)、cfc-frontend/pages/health/report-detail.vue 或 product-detail.vue、cfc-web ProductEdit.vue(以实际冲突为准);5)mvn clean compile 通过 + npm run build:mp-weixin 通过;6)git diff --stat 相对 origin/cfclub 仅含该分支 13 文件(不夹带);7)commit+push -u origin feature/nutrition-product-merge,回报 commit hash+diff --stat+编译结果。铁律:禁 git add -A/stash/checkout --,只 add 目标文件;勿动无关模块。",
- "session_id": "ses_e6ffd04a1ffeHyqsVdvDxM0Hfs",
- "dispatched_at": "2026-10-31 11:31:36",
- "dispatched_to": "lan-248",
- "done_at": "2026-10-31 11:46:03"
- },
- {
- "id": "T-UI-FEED-MERGE",
- "title": "T-UI-FEED-MERGE 首页/成长页风格统一干净 commit 合入 cfclub",
- "priority": "P1",
- "module": "frontend",
- "instance": "lan-189",
- "status": "done",
- "spec": ".workbuddy/tasks/2026-10-30-ui-article-feed-unify.md",
- "prompt": "cherry-pick b608a1bbf+4f16367d5(3文件:ArticleFeed.vue+index-home+growth-main) 到最新 cfclub 的 feature/ui-article-feed-merge,验证 build,push",
- "session_id": "ses_e70092caaffeiXW3NwjdqQQExc",
- "dispatched_at": "2026-10-31 11:21:09",
- "dispatched_to": "lan-189",
- "model": "opencode/deepseek-v4.1-flash-free",
- "done_at": "2026-10-31 11:59",
- "note": "前提已由 10-31 主理人合入满足:b608a1bbf+4f16367d5 均为 origin/cfclub 祖先(39f024280 含 UI 统一分支),无需另行 cherry-pick。会话发现前提冲突后待裁决,实为已满足。"
- },
- {
- "id": "GAP-2026-10-31-sku-combo",
- "title": "[差距] 2026 10 31 sku combo",
- "priority": "P1",
- "module": "cfc-backend",
- "instance": "",
- "status": "done",
- "spec": "docs/superpowers/plans/2026-10-31-sku-combo.md",
- "entity": "ProductSkuComboServiceTest.java",
- "gap_kinds": [
- "missing_file"
- ],
- "prompt": "请核对需求/设计文档 docs/superpowers/plans/2026-10-31-sku-combo.md 与实际实现的差距,并完成以下差距项:\n\n文档主题:2026 10 31 sku combo\n所属模块:cfc-backend\n\n检测到的差距:\n - [文档提及但尚未创建的代码文件] ProductSkuComboServiceTest.java\n - [文档提及但尚未创建的代码文件] ProductOrderComboStockTest.java\n\n任务来源:sync_gap_tasks(巡检发现空闲会话且任务池为空时自动生成)。\n要求:先阅读该文档对应章节,确认差距真实存在(若已实现请如实说明并标记为无需改动),然后按文档口径实现/补齐,完成后自行提交并推送。",
- "generated_from": "sync_gap_tasks",
- "generated_at": "2026-10-31 12:34:21",
- "session_id": "ses_e6fc302beffetaSjFXa3rjTjj1",
- "dispatched_at": "2026-10-31 12:34:39",
- "dispatched_to": "lan-204",
- "model": "axonhub/deepseek",
- "done_at": "2026-10-31 15:10:40"
- },
- {
- "id": "GAP-2026-10-31-product-bundl",
- "title": "[差距] 2026 10 31 product bundle autopricing",
- "priority": "P1",
- "module": "cfc-backend",
- "instance": "",
- "status": "done",
- "spec": "docs/superpowers/plans/2026-10-31-product-bundle-autopricing.md",
- "entity": "cfc-backend/src/main/java/com/etotem/cfc/service/MemberPriceResolver.java",
- "gap_kinds": [
- "missing_file"
- ],
- "prompt": "请核对需求/设计文档 docs/superpowers/plans/2026-10-31-product-bundle-autopricing.md 与实际实现的差距,并完成以下差距项:\n\n文档主题:2026 10 31 product bundle autopricing\n所属模块:cfc-backend\n\n检测到的差距:\n - [文档提及但尚未创建的代码文件] cfc-backend/src/main/java/com/etotem/cfc/service/MemberPriceResolver.java\n - [文档提及但尚未创建的代码文件] MemberPriceResolver.java\n\n任务来源:sync_gap_tasks(巡检发现空闲会话且任务池为空时自动生成)。\n要求:先阅读该文档对应章节,确认差距真实存在(若已实现请如实说明并标记为无需改动),然后按文档口径实现/补齐,完成后自行提交并推送。",
- "generated_from": "sync_gap_tasks",
- "generated_at": "2026-10-31 12:34:21",
- "session_id": "ses_e6fc31285ffe6Sm38UR4Gvigvi",
- "dispatched_at": "2026-10-31 12:34:34",
- "dispatched_to": "lan-248",
- "model": "axonhub/deepseek",
- "done_at": "2026-10-31 12:45:00"
- },
- {
- "id": "COUPON-C3V",
- "title": "COUPON-C3 独立核验(用户端领券中心 coupon-center.vue 3文件)",
- "priority": "P1",
- "module": "verify",
- "status": "done",
- "spec": "docs/优惠券需求设计与实现核查.md",
- "branch": "feature/coupon-center-c3",
- "target_commit": "30bb2255d7",
- "session_id": "ses_e6fc5e5e6ffewOpz737ppXWAzX",
- "dispatched_to": "pub-iwintrue",
- "dispatched_at": "2026-10-31 12:36",
- "note": "补 C3 核验缺口:C2 已 PASS,C3 无独立核验报告。核验会话只读核验,输出 docs/superpowers/plans/verify/verify-coupon-c3-2026-10-31.md。 | 核验结论:FAIL:领券中心数据源选错(B1 阻断)。调 /api/coupon/list 返回本家庭已拥有 AVAILABLE 券实例非可取券模板;claim() 去重必然命中已领取→立即领取100%失败;入口互锁 coupons.vue:55。路由/空状态/小程序规范合格,build EXIT=0。报告 /sc-data/cfc/docs/superpowers/plans/verify/verify-coupon-c3-2026-10-31.md(未 push)。",
- "done_at": "2026-10-31 12:45:00"
- },
- {
- "id": "COUPON-P2V",
- "title": "COUPON-P2 独立核验(优惠券技术债打包 13文件:真分页/枚举/鉴权/DDL/分位/NPE)",
- "priority": "P1",
- "module": "verify",
- "status": "done",
- "spec": "docs/优惠券需求设计与实现核查.md",
- "branch": "feature/coupon-p2-tech-debt",
- "target_commit": "59bc4100b",
- "session_id": "ses_e6fc5e5e6ffewOpz737ppXWAzX",
- "dispatched_to": "pub-iwintrue",
- "dispatched_at": "2026-10-31 12:36",
- "note": "补 P2 核验缺口。C2 与 P2 同改 AdminCouponController/CouponService,merge 工程已处理冲突;合入 cfclub 前置。输出 docs/superpowers/plans/verify/verify-coupon-p2-2026-10-31.md。 | 核验结论:PASS:6项需求全满足,三端编译/构建全绿。11/11 端点 @PreAuthorize 无残留手写 role;/list 改 Page 契约未破;DISCOUNT Math.round;无 DDL。⚠️ 合入 cfclub 时 AdminCouponController.java 与会员券转赠 278dd23e0 有内容冲突需人工解。报告 verify-coupon-p2-2026-10-31.md(未 push)。",
- "done_at": "2026-10-31 12:45:00"
- },
- {
- "id": "T19-MERGE-MAINLINE",
- "title": "T19 营养标注合入 cfclub 主线(merge/t19-nutrition-merge,用户拍板)",
- "priority": "P0",
- "module": "fullstack",
- "status": "done",
- "spec": "docs/superpowers/specs/2026-10-27-nutrition-product-tagging-prd.md",
- "prompt": "合入 f4d3253f7 到最新 cfclub:另开 worktree,merge --no-ff,迁移430-434 与 435 全保留,schema.sql/ProductEdit/product-detail 双保留,三端 build 全过后 push 分支再 push cfclub 主线",
- "session_id": "ses_e6efe9422ffea7P9ULL2RC1TVh",
- "dispatched_at": "2026-10-31 16:09:11",
- "dispatched_to": "lan-204",
- "model": "axonhub/deepseek",
- "done_at": "2026-10-31 17:37:21",
- "note": "误标done修正:2026-10-31 15:5x 核验 f4d3253f7 不在 origin/cfclub 主线、迁移435缺失,合入未发生;重新派发"
- },
- {
- "id": "GAP-2026-10-25-indicator-tim",
- "title": "[差距] 2026 10 25 indicator timeline display design",
- "priority": "P1",
- "module": "cfc-frontend",
- "instance": "",
- "status": "done",
- "spec": "docs/superpowers/specs/2026-10-25-indicator-timeline-display-design.md",
- "entity": "SparkLine.vue",
- "gap_kinds": [
- "missing_file"
- ],
- "prompt": "请核对需求/设计文档 docs/superpowers/specs/2026-10-25-indicator-timeline-display-design.md 与实际实现的差距,并完成以下差距项:\n\n文档主题:2026 10 25 indicator timeline display design\n所属模块:cfc-frontend\n\n检测到的差距:\n - [文档提及但尚未创建的代码文件] SparkLine.vue\n - [文档提及但尚未创建的代码文件] MemberIndicatorTimeline.vue\n - [文档提及但尚未创建的代码文件] BodyFatScaleRecord.java\n - [文档提及但尚未创建的代码文件] BodyFatScaleRecordMapper.java\n\n任务来源:sync_gap_tasks(巡检发现空闲会话且任务池为空时自动生成)。\n要求:先阅读该文档对应章节,确认差距真实存在(若已实现请如实说明并标记为无需改动),然后按文档口径实现/补齐,完成后自行提交并推送。",
- "generated_from": "sync_gap_tasks",
- "generated_at": "2026-10-31 14:27:30",
- "session_id": "ses_e6f5b7d96ffeOQKn4Ig5grzpiQ",
- "dispatched_at": "2026-10-31 14:27:42",
- "dispatched_to": "lan-248",
- "model": "axonhub/deepseek",
- "done_at": "2026-10-31 16:25:32"
- },
- {
- "id": "T-CONTRACT-20261031-01",
- "title": "补齐 badges/child/* 两处接口契约缺口(/api/user/switch-back-to-parent + /api/user/switch-role 后端别名委托)",
- "priority": "P1",
- "module": "cfc-backend",
- "status": "done",
- "spec": ".workbuddy/tasks/2026-10-31-badges-child-contract-gaps.md",
- "prompt": "在 UserController(/api/user) 新增 switch-back-to-parent(委托 switchBackToParent) 与 switch-role(委托 switchRoleForLogin,返回 LoginResultDTO) 两端点;只改此一文件,不动前端/迁移/UserService;mvn compile 过;push feature/badges-child-contract-gaps",
- "session_id": "ses_e6f170cd2ffej1OrehVvRDUzcK",
- "dispatched_at": "2026-10-31 15:43:20",
- "dispatched_to": "lan-189",
- "model": "axon/deepseek",
- "done_at": "2026-10-31 16:09:05"
- },
- {
- "id": "COUPON-C3-FIXV",
- "title": "COUPON-C3-FIX 独立核验(领券中心数据源改可取券模板,只读)",
- "priority": "P1",
- "module": "verify",
- "status": "done",
- "spec": "docs/优惠券需求设计与实现核查.md",
- "branch": "feature/coupon-c3-fix",
- "target_commit": "ea0cf6192",
- "session_id": "ses_e6df4bd54ffef15QwxN2jI3fuY",
- "dispatched_to": "lan-204",
- "dispatched_at": "2026-10-31 21:00",
- "model": "axonhub/deepseek",
- "note": "C3 修复完成后独立复核验:静态A-H/编译三端/运行态验收/合并回归/冲突预检。只读,严禁DELETE。",
- "done_at": "2026-10-31 22:32:43"
- },
- {
- "id": "SEC-20261031-01",
- "title": "安全契约缺口修复:switch-role权限提升 + member/list开放端点 + 上传类型校验 + 鉴权统一(3高危+1系统)",
- "priority": "P0",
- "module": "backend",
- "status": "done",
- "spec": ".workbuddy/tasks/2026-10-31-security-contract-gaps.md",
- "prompt": "见任务书 2026-10-31-security-contract-gaps.md:4 修复点(UserService.switchRoleForLogin 角色白名单 / JwtInterceptor LOGIN_REQUIRED_PATHS + listMembers userId<=0 / AssessmentReportController.uploadReport HTTP415 PDF校验 / 鉴权统一)",
- "created_at": "2026-10-31 23:21:21",
- "session_id": "ses_e6d6c1df9ffe73olUBCXVKas5H",
- "dispatched_at": "2026-10-31 23:30:42",
- "dispatched_to": "lan-248",
- "model": "axonhub/deepseek",
- "done_at": "2026-10-31 23:54:50",
- "verify_note": "本机只读核验通过 commit 52975a908ed(feature/sec-20261031-contract-gaps):4 修复点均符合任务书——①UserService.switchRoleForLogin 角色白名单(null/空→角色不能为空,白名单外→无效的角色,在 setRole 前不签token);②JwtInterceptor.LOGIN_REQUIRED_PATHS :90 追加 /api/family/member/list(铁证:commit版数组内),FamilyMembersController.listMembers 判 userId<=0 返 401;③AssessmentReportController.uploadReport badFilename&&badContentType → setStatus(415)+Result.error(仅支持PDF文件);④鉴权统一。编译 EXIT_CODE=0。未合并主线。"
- },
- {
- "id": "GAP-2026-10-31-bundle-redesi",
- "title": "[差距] 2026 10 31 bundle redesign design",
- "priority": "P1",
- "module": "cfc-backend",
- "instance": "",
- "status": "done",
- "spec": "docs/superpowers/specs/2026-10-31-bundle-redesign-design.md",
- "entity": "ProductComboItem.java",
- "gap_kinds": [
- "missing_file"
- ],
- "prompt": "请核对需求/设计文档 docs/superpowers/specs/2026-10-31-bundle-redesign-design.md 与实际实现的差距,并完成以下差距项:\n\n文档主题:2026 10 31 bundle redesign design\n所属模块:cfc-backend\n\n检测到的差距:\n - [文档提及但尚未创建的代码文件] ProductComboItem.java\n - [文档提及但尚未创建的代码文件] ProductComboItemMapper.java\n\n任务来源:sync_gap_tasks(巡检发现空闲会话且任务池为空时自动生成)。\n要求:先阅读该文档对应章节,确认差距真实存在(若已实现请如实说明并标记为无需改动),然后按文档口径实现/补齐,完成后自行提交并推送。",
- "generated_from": "sync_gap_tasks",
- "generated_at": "2026-11-01 00:49:28",
- "session_id": "ses_e6d222e9bffeV4wxDmBe37AlM2",
- "dispatched_at": "2026-11-01 00:49:33",
- "dispatched_to": "local-45278",
- "model": "axonhub/deepseek",
- "done_at": "2026-11-01 01:08:51"
- },
- {
- "id": "GAP-2026-10-31-bundle-redesi",
- "title": "[差距] 2026 10 31 bundle redesign",
- "priority": "P1",
- "module": "cfc-backend",
- "instance": "",
- "status": "done",
- "spec": "docs/superpowers/plans/2026-10-31-bundle-redesign.md",
- "entity": "ProductComboItem.java",
- "gap_kinds": [
- "missing_file"
- ],
- "prompt": "请核对需求/设计文档 docs/superpowers/plans/2026-10-31-bundle-redesign.md 与实际实现的差距,并完成以下差距项:\n\n文档主题:2026 10 31 bundle redesign\n所属模块:cfc-backend\n\n检测到的差距:\n - [文档提及但尚未创建的代码文件] ProductComboItem.java\n - [文档提及但尚未创建的代码文件] ProductComboItemMapper.java\n - [文档提及但尚未创建的代码文件] ComboOfferDef.java\n - [文档提及但尚未创建的代码文件] ComboOfferResult.java\n - [文档提及但尚未创建的代码文件] ComboOfferCalculator.java\n\n任务来源:sync_gap_tasks(巡检发现空闲会话且任务池为空时自动生成)。\n要求:先阅读该文档对应章节,确认差距真实存在(若已实现请如实说明并标记为无需改动),然后按文档口径实现/补齐,完成后自行提交并推送。",
- "generated_from": "sync_gap_tasks",
- "generated_at": "2026-11-01 00:49:28",
- "session_id": "ses_e6d2216fbffekBNUTg1RpSr9IV",
- "dispatched_at": "2026-11-01 00:49:38",
- "dispatched_to": "lan-248",
- "model": "axonhub/deepseek",
- "done_at": "2026-11-01 01:31:40"
- },
- {
- "id": "U7-FSN",
- "title": "小程序字号档位收口:40~120rpx 13种裸值归并 + 新增 4xl/5xl/6xl 令牌(规格§5.1)",
- "priority": "P3",
- "module": "cfc-frontend",
- "status": "done",
- "spec": "docs/superpowers/plans/2026-10-26-ui-token-convergence-tasks.md",
- "prompt": "U7 拍板拆出的独立任务(2026-10-31 主理人确认拆独立任务派发)。映射规则(规格§5.1 + U7方案):新增 -font-size-4xl=64rpx / 5xl=80rpx / 6xl=100rpx;归并 42→40 / 56→48 / 60→64 / 88→80 / 96→100;40/44/48/52/64/72/100/120 等已有令牌值保持;产出值→令牌完整映射表。串行于 U7 完成后再派。",
- "created_at": "2026-11-01 08:52:41",
- "session_id": "ses_e6b6406c5ffex9L7Gt0SdQngpX",
- "dispatched_at": "2026-11-01 08:56:52",
- "dispatched_to": "local-45278",
- "model": "axonhub/deepseek",
- "done_at": "2026-11-01 09:58:44"
- },
- {
- "id": "T32",
- "title": "团队客户列表「关联订单/关联金额(元)」购买情况接口(客户维度,非SKU聚合)",
- "priority": "P1",
- "module": "fullstack",
- "instance": "",
- "status": "done",
- "spec": "docs/superpowers/specs/2026-11-01-team-system-design.md",
- "prompt": "规格 2026-11-01-team-system-design.md §3.2(已合入 cfclub):原 T32 的「团队-SKU 聚合」前提错误,改为**客户维度购买明细**。\n后端:扩展 SupplyTeamController.listCustomers(POST /api/admin/supply-team/customers,SupplyCustomerRelationService.listCustomers):对每条客户(家庭/买家)额外返回 orderCount(该客户在体系下已完成订单数, product_orders WHERE supplySystemId=? AND (buyerId=? OR familyId=?) AND fulfillStatus='completed' 去重 orderNo)、totalAmountYuan(sum(totalAmount)/100, BigDecimal 2位 HALF_UP)、recentOrders(最近1-3笔: orderNo,productName,amountYuan,paidAt)。\n前端:cfc-frontend/pages/vendor/team-customers/team-customers.vue 客户卡片增加「关联订单 N / 关联金额 ¥X」展示,点击可下钻查看购买明细(复用现有 onLoad 的 systemId/parentId 参数与 getVendorTeamCustomers)。\n数据链路:ProductOrder 已有 supplySystemId/buyerId/familyId/fulfillStatus/totalAmount(分)/orderNo/productId,直接复用;金额分→元必须÷100。\n约束:统一 @PostMapping + @Resource + @RequestAttribute(\"userId\") + Result<T>;新增/改接口前查 docs/superpowers/api/API_REFERENCE.md 避免重复并同步;不改其它团队模型(规划师/分销/推广)。mvn clean compile + 小程序 node --check 通过。",
- "session_id": "ses_e6b47a5f5ffezoPjaE2TbLZAFw",
- "dispatched_at": "2026-11-01 09:27:52",
- "dispatched_to": "lan-248",
- "model": "axonhub/deepseek",
- "done_at": "2026-11-01 10:14:19"
- },
- {
- "id": "T33",
- "title": "客户数量改名+重定义(supply_customer_relation 扩 source/统计口径 + UI 文案)",
- "priority": "P1",
- "module": "fullstack",
- "instance": "",
- "status": "done",
- "spec": "docs/superpowers/specs/2026-11-01-team-system-design.md",
- "prompt": "规格 2026-11-01-team-system-design.md §3.1:小程序供应商团队页「客户归属」改名为「客户数量」,并重新定义口径。\n定义:客户数量 = 在 product_orders 中 supplySystemId=团队.systemId 且 fulfillStatus='completed' 的**去重买家(用户/家庭)**数;不再局限于 supply_customer_relation 的 referral 来源。\n后端:SupplyTeamController 统计接口(如 /api/admin/supply-team/stats 或 listCustomers 汇总)改为按 supplySystemId 归集已完成订单的去重买家;复用 ProductOrderService 第1150-1164行已有的下单自动归属逻辑(source='order')。必要时 supply_customer_relation 扩 source 注释/加 firstOrderAt。\n前端:cfc-frontend/pages/vendor/team-system/team-system.vue 把统计项「客户归属」文案改为「客户数量」,字段语义对齐。\n约束:@PostMapping+@Resource+Result<T>;不改 referral_tree 推广页;金额/计数口径与现有团队消费额一致;API_REFERENCE 同步。",
- "session_id": "ses_e6b087b25ffeFrh2kzepfEBM89",
- "dispatched_at": "2026-11-01 10:36:52",
- "dispatched_to": "lan-248",
- "model": "axonhub/deepseek",
- "done_at": "2026-11-01 11:04:04"
- },
- {
- "id": "T34",
- "title": "团队服务指派能力(supply_service_assignment 表 + 指派/我的任务/客户记录接口 + 前端入口)",
- "priority": "P1",
- "module": "fullstack",
- "instance": "",
- "status": "done",
- "spec": "docs/superpowers/specs/2026-11-01-team-system-design.md",
- "prompt": "规格 2026-11-01-team-system-design.md §3.4:新增团队「服务指派」能力——把服务性内容(售后/咨询)指派给团队成员跟进。\n数据:新增表 supply_service_assignment(id, systemId(teamId), customerRelationId, assigneeUserId, serviceType[AFTER_SALE|CONSULT|ACTIVITY_SUPPORT], refOrderId, refRequestId, status[PENDING|PROCESSING|DONE], assignedBy, assignedAt, doneAt, note);迁移走 DatabaseInitializer.runMigrations()+ensureColumn 并同步 schema.sql(幂等)。\n接口(CommissionController 同风格, /api/admin/supply-team/* 或新建 /api/team/*):POST /team/service-assign(指派)、POST /team/service-tasks(成员侧『派给我的任务』)、POST /team/customer/{id}/services(某客户服务记录)。\n对接:AfterSalesRequest 建单时可自动生成一条 PENDING 服务任务(refRequestId);ProductServicePerson 的商品服务人可作为指派候选。\n前端:vendor/team-system.vue 增加「服务指派」入口/列表;新增服务任务页(成员侧)。\n约束:@PostMapping+@Resource+@RequestAttribute(\"userId\")+Result<T>;先查 API_REFERENCE 避免重复并同步;mvn clean compile + node --check 通过;不破坏现有4套团队功能。",
- "session_id": "ses_e6b0865d0ffe810wzY1R7LlcB4",
- "dispatched_at": "2026-11-01 10:36:58",
- "dispatched_to": "lan-204",
- "model": "axonhub/deepseek",
- "done_at": "2026-11-01 20:22:08"
- },
- {
- "id": "T35",
- "title": "活动管理团队(activities 加 teamId + 活动团队创建/成员/服务,Phase 2)",
- "priority": "P2",
- "module": "fullstack",
- "instance": "",
- "status": "done",
- "spec": "docs/superpowers/specs/2026-11-01-team-system-design.md",
- "prompt": "规格 2026-11-01-team-system-design.md §2.2/§5:新增「活动管理团队」类型。当前 activities 表无 teamId、guide_activities 只归规划师个人,活动团队不存在。\n实现:activities 加 teamId(关联 supply_system 或统一 Team);提供活动团队创建/成员管理/服务指派接口,复用 T34 的服务指派机制(ACTIVITY_SUPPORT 类型);活动运营可由团队成员协作。\n落地:后端 Activity 实体+Mapper 加 teamId(ensureColumn 幂等+schema.sql),ActivityController 增 team 相关接口;前端活动管理页增加团队视图(Phase 2,可与 T34 服务指派共用组件)。\n约束:@PostMapping+@Resource+Result<T>;先查 API_REFERENCE;mvn clean compile 通过。本任务为 Phase 2,可晚于 T32/T33/T34 实施。",
- "session_id": "ses_e6b080299ffeqcIKgydRTATE2x",
- "dispatched_at": "2026-11-01 10:37:23",
- "dispatched_to": "lan-189",
- "model": "opencode/deepseek-v4.1-flash-free",
- "done_at": "2026-11-01 10:53:36"
- },
- {
- "id": "T36",
- "title": "团队客户列表购买明细(关联订单/关联金额·元,客户维度,修正 T32 前提)",
- "priority": "P1",
- "module": "fullstack",
- "instance": "",
- "status": "done",
- "spec": "docs/superpowers/specs/2026-11-01-team-system-design.md",
- "prompt": "规格 2026-11-01-team-system-design.md §3.2(已合入 cfclub)。背景:T32 已于错误前提下(团队=推荐下级、按商品SKU聚合)被自动派发并完成,可能已在 cfc-backend 留下 /api/commission/team/product-performance 等实现。本任务按**正确前提**重做:客户=购买过团队产品(供应链 supplySystemId)的用户,购买明细是**客户维度**。\n后端:扩展 SupplyTeamController.listCustomers(POST /api/admin/supply-team/customers):每条客户额外返回 orderCount(该客户在体系下已完成订单数, product_orders WHERE supplySystemId=? AND (buyerId=? OR familyId=?) AND fulfillStatus='completed' 去重 orderNo)、totalAmountYuan(sum(totalAmount)/100, BigDecimal 2位 HALF_UP)、recentOrders(最近1-3笔: orderNo,productName,amountYuan,paidAt)。\n前端:cfc-frontend/pages/vendor/team-customers/team-customers.vue 客户卡片加「关联订单 N / 关联金额 ¥X」+ 下钻购买明细(复用现有 systemId/parentId 与 getVendorTeamCustomers)。\n复核:若 T32 旧实现(product-performance/SKU聚合)与团队页无关或基于 referral 模型,请将其标记为废弃(410/注释)或改造为本客户维度接口,避免两套口径并存。\n约束:@PostMapping+@Resource+@RequestAttribute(\"userId\")+Result<T>;先查 API_REFERENCE 避免重复并同步;mvn clean compile + node --check 通过。",
- "session_id": "ses_e6b084c61ffeOyd8pCON1nz31V",
- "dispatched_at": "2026-11-01 10:37:04",
- "dispatched_to": "lan-204",
- "model": "axonhub/deepseek",
- "done_at": "2026-11-01 20:22:08"
- },
- {
- "id": "DOC-2026-11-01-team-product-performance-design",
- "title": "团队页「关联订单 / 关联金额(元)」按商城商品-SKU 维度统计接口",
- "priority": "P2",
- "module": "backend",
- "instance": "",
- "status": "done",
- "spec": "docs/superpowers/specs/2026-11-01-team-product-performance-design.md",
- "prompt": "实现设计文档 docs/superpowers/specs/2026-11-01-team-product-performance-design.md 所定义的功能。\n请先完整读取该文档(尤其是「任务拆分与依赖」「验收标准」章节),按文档口径逐条实现;文档标题:团队页「关联订单 / 关联金额(元)」按商城商品-SKU 维度统计接口。\n若文档含多个可独立交付的批次,请按文档的批次顺序推进,每批次完成后自行 commit + push。",
- "generated_from": "sync_design_tasks",
- "generated_at": "2026-11-01 10:36:34",
- "session_id": "ses_e6b082a2effezSOHFrbKUPCgdI",
- "dispatched_at": "2026-11-01 10:37:13",
- "dispatched_to": "lan-189",
- "model": "opencode/deepseek-v4.1-flash-free",
- "done_at": "2026-11-01 11:25:25"
- },
- {
- "id": "GAP-2026-11-01-home-greet-sh",
- "title": "[差距] 2026 11 01 home greet shortcut and my messages",
- "priority": "P1",
- "module": "cfc-backend",
- "instance": "",
- "status": "done",
- "spec": "docs/superpowers/plans/2026-11-01-home-greet-shortcut-and-my-messages.md",
- "entity": "cfc-backend/src/test/java/com/etotem/cfc/controller/guide/TeacherMessageControllerMyTest.java",
- "gap_kinds": [
- "missing_file"
- ],
- "prompt": "请核对需求/设计文档 docs/superpowers/plans/2026-11-01-home-greet-shortcut-and-my-messages.md 与实际实现的差距,并完成以下差距项:\n\n文档主题:2026 11 01 home greet shortcut and my messages\n所属模块:cfc-backend\n\n检测到的差距:\n - [文档提及但尚未创建的代码文件] cfc-backend/src/test/java/com/etotem/cfc/controller/guide/TeacherMessageControllerMyTest.j\n - [文档提及但尚未创建的代码文件] cfc-frontend/pages/profile/my-messages.vue\n - [文档提及但尚未创建的代码文件] TeacherMessageControllerMyTest.java\n\n任务来源:sync_gap_tasks(巡检发现空闲会话且任务池为空时自动生成)。\n要求:先阅读该文档对应章节,确认差距真实存在(若已实现请如实说明并标记为无需改动),然后按文档口径实现/补齐,完成后自行提交并推送。",
- "generated_from": "sync_gap_tasks",
- "generated_at": "2026-11-01 20:22:02",
- "session_id": "ses_e68f08005ffehqkea6tmi7ZKUo",
- "dispatched_at": "2026-11-01 20:22:17",
- "dispatched_to": "lan-204",
- "model": "axonhub/deepseek",
- "done_at": "2026-11-01 21:21:39"
- },
- {
- "id": "GAP-2026-10-31-sku-combo-des",
- "title": "[差距] 2026 10 31 sku combo design",
- "priority": "P1",
- "module": "cfc-backend",
- "instance": "",
- "status": "done",
- "spec": "docs/superpowers/specs/2026-10-31-sku-combo-design.md",
- "entity": "ProductSkuComboItem.java",
- "gap_kinds": [
- "missing_file"
- ],
- "prompt": "请核对需求/设计文档 docs/superpowers/specs/2026-10-31-sku-combo-design.md 与实际实现的差距,并完成以下差距项:\n\n文档主题:2026 10 31 sku combo design\n所属模块:cfc-backend\n\n检测到的差距:\n - [文档提及但尚未创建的代码文件] ProductSkuComboItem.java\n - [文档提及但尚未创建的代码文件] ProductSkuComboItemMapper.java\n\n任务来源:sync_gap_tasks(巡检发现空闲会话且任务池为空时自动生成)。\n要求:先阅读该文档对应章节,确认差距真实存在(若已实现请如实说明并标记为无需改动),然后按文档口径实现/补齐,完成后自行提交并推送。",
- "generated_from": "sync_gap_tasks",
- "generated_at": "2026-11-01 20:22:02",
- "session_id": "ses_e68f091b6ffeUhHnJYtT1covDa",
- "dispatched_at": "2026-11-01 20:22:13",
- "dispatched_to": "lan-248",
- "model": "axonhub/deepseek",
- "done_at": "2026-11-01 20:42:57"
- },
- {
- "id": "GAP-2026-11-01-team-system-d",
- "title": "[差距] 2026 11 01 team system design",
- "priority": "P2",
- "module": "cfc-backend",
- "instance": "",
- "status": "done",
- "spec": "docs/superpowers/specs/2026-11-01-team-system-design.md",
- "entity": "| C2 | `DistributionSystem.ownerId` | 字段存在但**结算逻辑从未使用** | 「唯一负责人」语义未落地为结算对象 | 随 T37 一并接入 |",
- "gap_kinds": [
- "statement"
- ],
- "prompt": "请核对需求/设计文档 docs/superpowers/specs/2026-11-01-team-system-design.md 与实际实现的差距,并完成以下差距项:\n\n文档主题:2026 11 01 team system design\n所属模块:cfc-backend\n\n检测到的差距:\n - [标记为「设计完成但未实现」的内容] | C2 | `DistributionSystem.ownerId` | 字段存在但**结算逻辑从未使用** | 「唯一负责人」语义未落地为结算对象 | 随 T37 一并接入 |\n\n任务来源:sync_gap_tasks(巡检发现空闲会话且任务池为空时自动生成)。\n要求:先阅读该文档对应章节,确认差距真实存在(若已实现请如实说明并标记为无需改动),然后按文档口径实现/补齐,完成后自行提交并推送。",
- "generated_from": "sync_gap_tasks",
- "generated_at": "2026-11-01 20:34:34",
- "session_id": "ses_e68e4d6c4ffegNd3JduoxSXilM",
- "dispatched_at": "2026-11-01 20:35:02",
- "dispatched_to": "lan-204",
- "model": "axonhub/deepseek",
- "done_at": "2026-11-01 21:12:03"
- },
- {
- "id": "T38",
- "title": "团队邀请功能(supply_system_member 扩 invite_code + 邀请码生成/信息/凭码加入接口 + 前端「邀请成员」入口与受邀确认页)",
- "priority": "P1",
- "module": "fullstack",
- "instance": "",
- "status": "done",
- "spec": "docs/superpowers/specs/2026-11-01-team-system-design.md",
- "prompt": "规格 2026-11-01-team-system-design.md §3.5/§4.2/§4.3(已合入 cfclub)。背景:廖总要求「在我的团队加一个邀请功能,邀请其他用户加入团队」。现状(勿重复核查):SupplySystemController 仅 member/add(管理员直接加, 参数仅 systemId/userId, 不带parentId不联动supply_hierarchy);SupplySystemMember 无邀请码/受邀人字段;前端 vendor/team-system.vue(780行) 无邀请入口。可参照 DistributionService.generateInviteCode/registerByInviteCode 手法(结算模型不同, 仅复用码生成/凭码注册)。\n数据:supply_system_member 扩列 invite_code(幂等 ensureColumn + 同步 schema.sql)。\n接口(@PostMapping+@Resource+@RequestAttribute(\"userId\")+Result<T>, /api/admin/supply-team/*):① POST /invite-code 生成/获取我的邀请码(幂等, 已生成复用, 支持刷新重置旧码) ② POST /invite/info 凭码查团队名/邀请人昵称头像/成员数(确认页用, 不泄露隐私) ③ POST /invite/join 凭码加入(校验码有效+用户未加入过该体系→addMember(systemId,userId,role=member,active) + SupplyHierarchyService.addRelation(systemId,inviterId,userId) 挂parentId=邀请人/level=父level+1)。\n前端:vendor/team-system.vue 团队成员区加「邀请成员」按钮→弹窗(邀请码+复制+可后置小程序码);新增受邀确认页(展示邀请人/团队→加入→跳转我的团队)。\n边界:同一(systemId,userId)仅加入一次(addMember已有existing检查);status=inactive后可再申请;role=member不可自助变更;邀请不直接挂钩佣金(结算走唯一负责人口径§0.5)。默认自助加入即生效(负责人可移除)、邀请码永久有效唯一。\n约束:先查 API_REFERENCE 避免重复并同步;mvn clean compile + node --check 通过;不破坏现有4套团队功能。",
- "session_id": "ses_e656ec46fffeJY6vsM2mF63iMA",
- "dispatched_at": "2026-11-02 12:42:51",
- "dispatched_to": "lan-248",
- "model": "axonhub/deepseek",
- "done_at": "2026-11-02 14:17:50"
- },
- {
- "id": "T39",
- "title": "统一真实姓名回填昵称规则(扩展 RealNameBackfillService 同时补 realName+nickname,接入所有姓名写入入口,修复但管家/营养师申请 realName 持久化)",
- "priority": "P1",
- "module": "fullstack",
- "instance": "",
- "status": "done",
- "spec": "docs/superpowers/specs/2026-11-02-realname-nickname-backfill-design.md",
- "prompt": "规格 2026-11-02-realname-nickname-backfill-design.md(已合入 cfclub)。背景:廖总要求\"检查当前所有要使用用户真实姓名的地方,如果添加姓名且user表的真实姓名还未填,则用这个姓名补充真实姓名和用户昵称\"。核查发现:现有 12 处后端写 users.real_name 入口,仅 RealNameBackfillService 有回填逻辑但只补 realName 不补 nickname;管家/营养师申请前端收集 realName 但后端丢弃。\n方案:扩展 RealNameBackfillService 增加 backfillRealNameAndNickname(userId, name) —— 若 realName 为空,同时补 realName + nickname(nickname 仅在空时补);在以下入口统一接入:\n1. UserService.updateUserInfo(资料页/加入家庭)\n2. UserService.backfillProfile(就地回写,白名单已含 realName)\n3. UserService.registerWithIdCard(手机+身份证注册)\n4. RealNameBackfillService.backfill(地址/收货人回填,改为同步补两者)\n5. GuideManagementController.apply(规划师注册)\n6. AdminController.createUser(后台创建)\n7. SupplyManageController add/update(供应商创建/更新)\n8. ButlerController.apply(管家申请,新增接收 realName 参数)\n9. NutritionistController.apply(营养师申请,新增接收 realName 参数)\n\n约束:nickname 仅在空时补(不覆盖用户已设昵称);触发条件=realName 为空;幂等;失败静默不阻塞主流程;mvn clean compile 通过;未破坏现有用户体系。",
- "session_id": "ses_e647a98c1ffe7jqn7Iijq6z8vV",
- "dispatched_at": "2026-11-02 17:09:33",
- "dispatched_to": "local-45278",
- "model": "axonhub/deepseek",
- "done_at": "2026-11-02 19:11:02"
- },
- {
- "id": "CFC-COLOR-01",
- "title": "小程序全局配色迁移「暖调+深橙」(品牌主色降档#C2410C + 页面底色暖米#FBF4EA + 边框暖化,令牌值+tabBar同步)",
- "priority": "P1",
- "module": "cfc-frontend",
- "instance": "lan-248",
- "status": "done",
- "spec": ".workbuddy/tasks/2026-11-02-color-migration.md",
- "created_at": "2026-11-02 23:16:49",
- "session_id": "ses_e6327b3d1ffemUTFrjOKkhmxmn",
- "dispatched_at": "2026-11-02 23:20:10",
- "done_at": "2026-11-02 23:40:59"
- },
- {
- "id": "CFC-GUEST-01",
- "title": "三页访客态重设计落地(健康/成长/我的)+ 五维顺序修正身→智→富→行→心 + 新暖调配色 + LoginGuideCard升级",
- "priority": "P1",
- "module": "cfc-frontend",
- "instance": "lan-248",
- "status": "done",
- "spec": ".workbuddy/tasks/2026-11-03-guest-tabs-redesign.md",
- "prompt": "规格见 .workbuddy/tasks/2026-11-03-guest-tabs-redesign.md(自包含 dispatch prompt 已写入 out/guest_redesign_prompt.txt,远程按此执行)",
- "created_at": "2026-11-03 17:53:29",
- "dispatched_at": "2026-11-03 18:21:37",
- "session_id": "ses_e5f134e01ffeBm7PeVvD1GjMoW",
- "dispatched_to": "lan-248",
- "done_at": "2026-11-03 19:13:28",
- "branch": "feature/guest-tabs-redesign",
- "commit": "372ec4641032aa5b5918ec1e30b2abb96d413a5c",
- "base": "52fe45b11",
- "verification": "访客态零emoji/零grid/零?./零<svg>;五维身→智→富→行→心;配色全令牌;模板登录态分支零改动;我的页无底部登录引导卡;build:mp-weixin EXIT=0"
- },
- {
- "id": "CFC-TIANPAN-01",
- "title": "天盘 emoji/字符图标替换为 SVG 图标(pages/tianpan/index.vue 相关事项缺省图标 + mind-detail/FamilyTianpanCard 罗盘/心情/传统/运势/建议图标,对齐 P0-1 零emoji规范)",
- "priority": "P1",
- "module": "cfc-frontend",
- "instance": "lan-248",
- "status": "done",
- "spec": "docs/superpowers/specs/2026-11-04-tianpan-emoji-svg.md",
- "prompt": "规格 docs/superpowers/specs/2026-11-04-tianpan-emoji-svg.md(已合入 cfclub)。背景:廖总指示将天盘 emoji 图标替换任务入池(方案C)。现状(勿重复核查,使用点已核实):pages/tianpan/index.vue L66(+L476 canvas) 用 📋(U+1F4CB) 作相关事项缺省图标;pages/mind-detail/components/FamilyTianpanCard.vue 用 ☷(☰ 罗盘)/⭐(⭐ 心情)/🧭(📛 八字)/☀(☀ 传统)/🔮(🔮 运势)/💡(💡 建议) 作功能图标,违反 P0-1 禁emoji规范。→(跳转)/♦✖(宜忌) 为语义符号不替换。\n方案:①先调研 cfc-frontend 既有图标基础设施(uni-icons/iconfont/静态SVG+<image>),沿用同页面方案,不引新依赖;②index.vue L66 替换为图标组件或 <image>,L476 canvas fillText 改 drawImage 预渲染图标(canvas 无法直接渲 SVG 字符串);③FamilyTianpanCard 各标签/评分图标同法替换;④颜色跟随主题令牌。\n验收:两文件功能图标零 emoji(&#x实体与原生 emoji 均不得用于功能图标);首页/卡片渲染正常(今日运势/心情星级/罗盘/八字/五行/星座灵数/相关事项卡片);canvas 绘制不回归;npm run build:mp-weixin EXIT=0;不动后端与天盘分包其余页面。提交独立分支 push 至 origin/cfclub 后回报 commit 哈希。",
- "created_at": "2026-11-03 20:00:18",
- "session_id": "ses_e5eb5878affe0sUDCXwyJsVSah",
- "dispatched_at": "2026-11-03 20:02:55",
- "dispatched_to": "local-45278",
- "model": "axonhub/deepseek",
- "done_at": "2026-11-03 22:32:43"
- },
- {
- "id": "T40",
- "title": "小程序新版本强制更新功能(uni.getUpdateManager 检测 + applyUpdate 强制重启,软强制弹窗)",
- "priority": "P1",
- "module": "cfc-frontend",
- "instance": "",
- "status": "done",
- "spec": "docs/superpowers/specs/2026-11-03-miniapp-force-update.md",
- "prompt": "规格 docs/superpowers/specs/2026-11-03-miniapp-force-update.md(待合入 cfclub)。需求:小程序发布新版本后,老版本用户强制升级。\n现状:cfc-frontend 全仓无 getUpdateManager 调用。\n方案:纯前端官方机制。\n1. 新增 cfc-frontend/utils/checkAppUpdate.js:封装 uni.getUpdateManager(),onUpdateReady 时 uni.showModal(showCancel:false, confirmText:/立即更新/),success 回调调 manager.applyUpdate() 强制重启应用新包;onUpdateFailed 弹\"更新失败\"提示;能力探测不支持时 console.warn 跳过。\n2. App.vue onLaunch 开头调用 checkAppUpdate()(路由逻辑前,因 applyUpdate 重启整机)。\n约束:不依赖 manifest versionName/versionCode(微信后台代码包版本自动判断);开发版不触发 onUpdateReady 属微信正常行为;不改 splash/登录/路由既有逻辑;调用幂等;失败静默不阻塞主流程;uni-app 编译通过。",
- "created_at": "2026-11-03 23:35",
- "session_id": "ses_e5de8832dffe43xH25Win53l8w",
- "dispatched_to": "lan-204",
- "model": "opencode/deepseek-v4.1-flash-free",
- "dispatched_at": "2026-11-03 23:46:55",
- "done_at": "2026-11-04 00:08:21"
- },
- {
- "id": "GAP-2026-11-03-unified-dimen",
- "title": "[差距] 2026 11 03 unified dimension system design",
- "priority": "P1",
- "module": "cfc-backend",
- "instance": "",
- "status": "done",
- "spec": "docs/superpowers/specs/2026-11-03-unified-dimension-system-design.md",
- "entity": "DimensionCodeConstants.java",
- "gap_kinds": [
- "missing_file"
- ],
- "prompt": "请核对需求/设计文档 docs/superpowers/specs/2026-11-03-unified-dimension-system-design.md 与实际实现的差距,并完成以下差距项:\n\n文档主题:2026 11 03 unified dimension system design\n所属模块:cfc-backend\n\n检测到的差距:\n - [文档提及但尚未创建的代码文件] DimensionCodeConstants.java\n - [文档提及但尚未创建的代码文件] DimensionRegistryService.java\n - [文档提及但尚未创建的代码文件] DimensionRegistryController.java\n - [文档提及但尚未创建的代码文件] DimensionSyncService.java\n - [文档提及但尚未创建的代码文件] DimensionSelector.vue\n\n任务来源:sync_gap_tasks(巡检发现空闲会话且任务池为空时自动生成)。\n要求:先阅读该文档对应章节,确认差距真实存在(若已实现请如实说明并标记为无需改动),然后按文档口径实现/补齐,完成后自行提交并推送。",
- "generated_from": "sync_gap_tasks",
- "generated_at": "2026-11-04 09:46:50",
- "session_id": "ses_e5bc32342ffeIoo00QDGLWgjYT",
- "dispatched_at": "2026-11-04 09:46:54",
- "dispatched_to": "local-45278",
- "model": "axonhub/deepseek",
- "done_at": "2026-11-04 23:35:08"
- },
- {
- "id": "DOC-2026-11-05-miniapp-games-entry",
- "title": "成长页小游戏入口设计",
- "priority": "P2",
- "module": "backend",
- "instance": "",
- "status": "done",
- "spec": "docs/superpowers/specs/2026-11-05-miniapp-games-entry.md",
- "prompt": "实现设计文档 docs/superpowers/specs/2026-11-05-miniapp-games-entry.md 所定义的功能。\n请先完整读取该文档(尤其是「任务拆分与依赖」「验收标准」章节),按文档口径逐条实现;文档标题:成长页小游戏入口设计。\n若文档含多个可独立交付的批次,请按文档的批次顺序推进,每批次完成后自行 commit + push。",
- "generated_from": "sync_design_tasks",
- "generated_at": "2026-11-06 01:00:01",
- "session_id": "ses_e53587ed6ffeIfqPksPdlDrnQJ",
- "dispatched_at": "2026-11-06 01:00:21",
- "dispatched_to": "local-45278",
- "model": "axonhub/deepseek",
- "done_at": "2026-11-06 02:20:56"
- },
- {
- "id": "DOC-2026-11-06-report-upload-product-cards",
- "title": "报告上传页关联商品卡片区(去重可购买)+ 成员4列核验",
- "priority": "P0",
- "module": "cfc-frontend",
- "instance": "lan-204",
- "status": "done",
- "spec": "docs/superpowers/specs/2026-11-06-report-upload-product-cards.md",
- "prompt": "tools/xaf_agent_hub/out/report_upload_product_cards_prompt.txt",
- "generated_from": "user",
- "generated_at": "2026-11-06",
- "session_id": "ses_e5021bcdfffew11nOjnx8F2aMN",
- "dispatched_at": "2026-11-06",
- "dispatched_to": "lan-204",
- "model": "axonhub/deepseek",
- "done_at": "2026-11-07 04:35:57"
- },
- {
- "id": "DOC-2026-11-06-coupon-claimed-actions",
- "title": "我的优惠券已领取券按钮修复(转赠+使用)+ 使用按券类型跳转",
- "priority": "P0",
- "module": "cfc-frontend",
- "instance": "lan-204",
- "status": "done",
- "spec": "docs/superpowers/specs/2026-11-06-coupon-claimed-actions.md",
- "prompt": "tools/xaf_agent_hub/out/coupon_claimed_actions_prompt.txt",
- "generated_from": "user",
- "generated_at": "2026-11-06",
- "session_id": "ses_e500055c4ffeB82u320aHgrS05",
- "dispatched_at": "2026-11-06",
- "dispatched_to": "lan-204",
- "model": "axonhub/deepseek",
- "done_at": "2026-11-07 04:35:57"
- },
- {
- "id": "DOC-2026-11-06-team-invite-share",
- "title": "我的团队推广收益口径对齐 + 邀请成员直接分享(推荐绑定)",
- "priority": "P0",
- "module": "cfc-frontend",
- "instance": "lan-204",
- "status": "done",
- "spec": "docs/superpowers/specs/2026-11-06-team-invite-share.md",
- "prompt": "tools/xaf_agent_hub/out/team_invite_share_prompt.txt",
- "generated_from": "user",
- "generated_at": "2026-11-06",
- "session_id": "ses_e4feacd7effez60jQlV6ks06oI",
- "dispatched_at": "2026-11-06",
- "dispatched_to": "lan-204",
- "model": "axonhub/deepseek",
- "done_at": "2026-11-07 04:35:57"
- },
- {
- "id": "EVD-1",
- "title": "10 个 YELLOW 能力键契约复验 + GREEN 收口(执行 TR-6 / TR-9)",
- "priority": "P0",
- "module": "test-evidence",
- "instance": "",
- "status": "done",
- "spec": "docs/tdd/orchestration/sc-key-map.md",
- "prompt": "你是测试验证执行者(测试角色)。目标:把状态机 10 个 YELLOW 能力键复验为 GREEN 并登记收口(对应 TR-6 覆盖 8 键 + TR-9 覆盖 B-35)。10 键及实现 sha(均已在 origin/cfclub,10/10 IN CHAIN,无需再写实现,只复验):admin.auth.login(6c7e09fe8)、health.report.upload(78b72c14f)、health.report.createReport(1767d4414)、dan.assessment.getActiveMaterial(c3e32460a)、sleep.config.tags(真实实现 93aad0152/f8b145d3a/4734bcf45)、task.history.view(ed8f1c347)、growth.history.view(da2727f53)、achievement.grid.fiveCol(e205656ee)、langgraph.questionnaire.generate(1b15b67d2)、dan.report.parseFormat(9628df3d9)。步骤:① git fetch origin && git worktree add -b verify-yellow-<slug> origin/cfclub(干净隔离);② 运行对应契约测试(cfc-backend 16 契约 + createTask 7 + review 32,以及各键对应 Controller/Service 单测),确认 10 键全绿无 FAIL;③ 基于 git 证据用 tdd-orchestrator 的 tdd_orchestrate.py --project E:/cfc --role 测试 --mark-green <key> --note 'R&D负责人派发复验' 逐键登记(有 FAIL 先定位或报 docs/tdd/test/blockers.md);④ 重跑 test_inventory.py 刷新 docs/tdd/test/automation-status.md;⑤ 提交并 push 执行证据到 origin/cfclub。纪律(硬):① 只补测试证据/复验,绝不写业务实现代码(O-7 已核对端点 100% 实现,防假RED=只文档核对+端点比对);② 不认会话自述,只认 git 真理证据(git merge-base --is-ancestor <sha> origin/cfclub);③ 完成后提交并 push 到 origin/cfclub,严禁 git add -A(精确 git add -- <paths> 或单文件 hash-object);④ 黑窗期(opencode 免费档 429)模型走 axonhub/deepseek;⑤ 主工作树 E:/cfc 有他人 WIP,务必在干净 worktree(git worktree add -b <slug> origin/cfclub)或 checkout origin/cfclub 后操作,勿动主工作树未提交改动。",
- "session_id": "ses_e4d6a1f93ffekvP2lRpghobeyl",
- "dispatched_at": "2026-11-07 04:38:49",
- "dispatched_to": "local-45278",
- "model": "axonhub/deepseek",
- "done_at": "2026-11-08 04:54:35"
- },
- {
- "id": "EVD-2",
- "title": "家庭-成员域 15 SC 三类流(正常/异常/权限)证据补建(O-7→TR-9)",
- "priority": "P0",
- "module": "test-evidence",
- "instance": "",
- "status": "done",
- "spec": "docs/tdd/orchestration/DEV_GOAL_user_scenarios.md",
- "prompt": "你是测试证据构建者(O-7 契约补建工作流授权)。目标:为『家庭-成员』域未跑通 SC 补『正常流/异常流/权限流』三类流执行证据,推进 SC 跑通(DEV_GOAL 顶层目标 241 SC)。步骤:① 读 docs/tdd/orchestration/DEV_GOAL_user_scenarios.md §四 与 tests/user-scenarios/ 家庭-成员章节(如 02-family.md)、tests/test-cases/*.md;② 读 docs/tdd/orchestration/sc-key-map.md 家庭-成员相关 SC 行(SC-G-01~SC-G-12,已跑通 G-02/G-06,聚焦其余),确认对应 Controller 端点已在 origin/cfclub 实现(O-7 已核对 0 缺失,防假RED:只核对不重造实现);③ 为每 SC 编写三类流 e2e/契约测试(Playwright 或 JUnit 按域选,复用 tests/e2e 与 cfc-backend/src/test 既有框架),实跑三类流产出执行证据;④ 按 SC→能力键映射(方案 A:key 用合法 unit.domain.action,SC 编号+场景文件入 requirement,已合入设计契约入 design 标注『实现仅在 feature 分支』)必要时 --add-task 建任务;⑤ 提交并 push 证据到 origin/cfclub。纪律(硬):① 只补测试证据/复验,绝不写业务实现代码(O-7 已核对端点 100% 实现,防假RED=只文档核对+端点比对);② 不认会话自述,只认 git 真理证据(git merge-base --is-ancestor <sha> origin/cfclub);③ 完成后提交并 push 到 origin/cfclub,严禁 git add -A(精确 git add -- <paths> 或单文件 hash-object);④ 黑窗期(opencode 免费档 429)模型走 axonhub/deepseek;⑤ 主工作树 E:/cfc 有他人 WIP,务必在干净 worktree(git worktree add -b <slug> origin/cfclub)或 checkout origin/cfclub 后操作,勿动主工作树未提交改动。",
- "session_id": "ses_e4d6a1cf9ffeTMBICs7GuRRq4c",
- "dispatched_at": "2026-11-07 04:38:49",
- "dispatched_to": "local-45278",
- "model": "axonhub/deepseek",
- "done_at": "2026-11-08 04:54:35"
- },
- {
- "id": "EVD-3",
- "title": "任务/心愿域 22 SC 三类流证据补建",
- "priority": "P0",
- "module": "test-evidence",
- "instance": "",
- "status": "done",
- "spec": "docs/tdd/orchestration/DEV_GOAL_user_scenarios.md",
- "prompt": "你是测试证据构建者(O-7 契约补建工作流授权)。目标:为『任务/心愿』域未跑通 SC 补三类流执行证据,推进 SC 跑通(DEV_GOAL 241 SC)。步骤:① 读 DEV_GOAL_user_scenarios.md §四 与 tests/user-scenarios/ 任务-心愿章节、tests/test-cases/*.md;② 读 sc-key-map.md 任务/心愿相关 SC 行,确认对应端点已在 origin/cfclub 实现(O-7 已核对 0 缺失,防假RED);③ 为每 SC 编写三类流 e2e/契约测试(复用 tests/e2e/api 与 cfc-backend/src/test 既有框架),实跑三类流产出执行证据;④ 按方案 A 映射必要时 --add-task 建任务;⑤ 提交并 push 证据到 origin/cfclub。纪律(硬):① 只补测试证据/复验,绝不写业务实现代码(O-7 已核对端点 100% 实现,防假RED=只文档核对+端点比对);② 不认会话自述,只认 git 真理证据(git merge-base --is-ancestor <sha> origin/cfclub);③ 完成后提交并 push 到 origin/cfclub,严禁 git add -A(精确 git add -- <paths> 或单文件 hash-object);④ 黑窗期(opencode 免费档 429)模型走 axonhub/deepseek;⑤ 主工作树 E:/cfc 有他人 WIP,务必在干净 worktree(git worktree add -b <slug> origin/cfclub)或 checkout origin/cfclub 后操作,勿动主工作树未提交改动。",
- "session_id": "ses_e4d6a00a2ffe8JVU5J21bIj85g",
- "dispatched_at": "2026-11-07 04:38:58",
- "dispatched_to": "lan-248",
- "model": "axonhub/deepseek",
- "done_at": "2026-11-08 04:54:35"
- },
- {
- "id": "EVD-4",
- "title": "商城/会员域 18 SC 三类流证据补建(O-7→TR-8)",
- "priority": "P1",
- "module": "test-evidence",
- "instance": "",
- "status": "done",
- "spec": "docs/tdd/orchestration/DEV_GOAL_user_scenarios.md",
- "prompt": "你是测试证据构建者(O-7 契约补建工作流授权,本批次对应 TR-8)。目标:为『商城/会员』域未跑通 SC 补三类流执行证据,推进 SC 跑通(DEV_GOAL 241 SC)。步骤:① 读 DEV_GOAL_user_scenarios.md §四 与 tests/user-scenarios/ 商城-会员章节、tests/test-cases/*.md;② 读 sc-key-map.md 商城/会员相关 SC 行,确认对应端点已在 origin/cfclub 实现(O-7 已核对 0 缺失,防假RED);③ 为每 SC 编写三类流 e2e/契约测试(复用 tests/e2e 与 cfc-backend/src/test 既有框架),实跑三类流产出执行证据;④ 按方案 A 映射必要时 --add-task 建任务;⑤ 提交并 push 证据到 origin/cfclub。纪律(硬):① 只补测试证据/复验,绝不写业务实现代码(O-7 已核对端点 100% 实现,防假RED=只文档核对+端点比对);② 不认会话自述,只认 git 真理证据(git merge-base --is-ancestor <sha> origin/cfclub);③ 完成后提交并 push 到 origin/cfclub,严禁 git add -A(精确 git add -- <paths> 或单文件 hash-object);④ 黑窗期(opencode 免费档 429)模型走 axonhub/deepseek;⑤ 主工作树 E:/cfc 有他人 WIP,务必在干净 worktree(git worktree add -b <slug> origin/cfclub)或 checkout origin/cfclub 后操作,勿动主工作树未提交改动。",
- "session_id": "ses_e4d69db9bffeeZo2N65YrjbOjB",
- "dispatched_at": "2026-11-07 04:39:08",
- "dispatched_to": "lan-248",
- "model": "axonhub/deepseek",
- "done_at": "2026-11-08 04:54:35"
- },
- {
- "id": "EVD-5",
- "title": "五维能量域 12 SC 三类流证据补建",
- "priority": "P1",
- "module": "test-evidence",
- "instance": "",
- "status": "done",
- "spec": "docs/tdd/orchestration/DEV_GOAL_user_scenarios.md",
- "prompt": "你是测试证据构建者(O-7 契约补建工作流授权)。目标:为『五维能量』域未跑通 SC 补三类流执行证据(O-4 已落地五维能量 12 SC 开工包),推进 SC 跑通(DEV_GOAL 241 SC)。步骤:① 读 DEV_GOAL_user_scenarios.md §四 与 tests/user-scenarios/ 五维能量章节、tests/test-cases/*.md;② 读 sc-key-map.md 五维能量相关 SC 行(含 SC-A-25/SC-A-26 维度配置治理),确认对应端点已在 origin/cfclub 实现(O-7 已核对 0 缺失,防假RED);③ 为每 SC 编写三类流 e2e/契约测试,实跑三类流产出执行证据;④ 按方案 A 映射必要时 --add-task 建任务;⑤ 提交并 push 证据到 origin/cfclub。纪律(硬):① 只补测试证据/复验,绝不写业务实现代码(O-7 已核对端点 100% 实现,防假RED=只文档核对+端点比对);② 不认会话自述,只认 git 真理证据(git merge-base --is-ancestor <sha> origin/cfclub);③ 完成后提交并 push 到 origin/cfclub,严禁 git add -A(精确 git add -- <paths> 或单文件 hash-object);④ 黑窗期(opencode 免费档 429)模型走 axonhub/deepseek;⑤ 主工作树 E:/cfc 有他人 WIP,务必在干净 worktree(git worktree add -b <slug> origin/cfclub)或 checkout origin/cfclub 后操作,勿动主工作树未提交改动。",
- "session_id": "ses_e4d69a857ffeL9pmsdaNFrEPWg",
- "dispatched_at": "2026-11-07 04:39:20",
- "dispatched_to": "lan-248",
- "model": "axonhub/deepseek",
- "done_at": "2026-11-08 04:54:35"
- },
- {
- "id": "EVD-6",
- "title": "CI 接入:729 用例 + Playwright/pytest/JUnit 套件持续回归",
- "priority": "P1",
- "module": "ci",
- "instance": "",
- "status": "done",
- "spec": "docs/tdd/orchestration/DEV_GOAL_user_scenarios.md",
- "prompt": "目标:把现有 729 条结构化测试用例 + 70 Playwright 文件/410 方法 + 12 pytest 文件/55 方法接入 CI 持续回归(DEV_GOAL §四.5 必选项,否则『跑通』无法持续保持)。步骤:① 盘点 tests/e2e、cfc-backend/src/test/java、cfc-langgraph/tests、tools/xaf_agent_hub/tests 现有测试套件与运行命令(mvn test / pytest / playwright test);② 在仓库根新增 .github/workflows/ci.yml(或 Jenkinsfile):on push/PR 触发,分 job 跑后端 mvn test、cfc-langgraph pytest、前端 Playwright(headless);③ 先本地 dry-run 验证各套件可拉起(不强制全绿,先保证 CI 能跑);④ 提交并 push 到 origin/cfclub。纪律:只加 CI 配置与必要测试入口,不改业务实现;黑窗期若需运行模型走 axonhub/deepseek;主工作树有他人 WIP,在干净 worktree 操作勿动未提交改动。",
- "session_id": "ses_e4d695f04ffeJs8OtbbpVvHLvk",
- "dispatched_at": "2026-11-07 04:39:39",
- "dispatched_to": "lan-248",
- "model": "axonhub/deepseek",
- "done_at": "2026-11-08 04:54:35"
- },
- {
- "id": "EVD-7",
- "title": "报告闭环 23 SC 三类流证据补建",
- "priority": "P0",
- "module": "test-evidence",
- "instance": "lan-189",
- "status": "done",
- "spec": "docs/tdd/orchestration/DEV_GOAL_user_scenarios.md",
- "prompt": "【EVD-7】报告闭环 23 SC(SC-A-02/A-16/B-04/B-11/C-06/C-07/P-24/P-25/P-26/P-39/P-67/P-82/P-84/P-91/S-09/T-03/T-11/T-12/T-21/T-23/X-02/X-10/X-13)三类流执行证据补建。参照 EVD-4 模式产出契约 JUnit + evidence docs。溯源:contract-plan-20261106.md §报告闭环 + sc-key-map.md。严禁改 main 实现、严禁整分支 merge 旧基线。",
- "session_id": "ses_e4ce1a7e4ffeyni26fQzuKYTa3",
- "dispatched_at": "2026-11-07 07:00:00",
- "dispatched_to": "lan-189",
- "model": "opencode/deepseek-v4.1-flash-free",
- "done_at": "2026-11-08 04:54:35"
- },
- {
- "id": "EVD-8",
- "title": "测评-方案 43 SC 三类流证据补建",
- "priority": "P0",
- "module": "test-evidence",
- "instance": "lan-248",
- "status": "dispatched",
- "spec": "docs/tdd/orchestration/DEV_GOAL_user_scenarios.md",
- "prompt": "【EVD-8】测评-方案 43 SC(SC-B-09/B-12/C-08/C-19/C-25/H-02/P-32~P-48/P-58/P-74/P-81/T-01/T-04/T-05/T-07/T-09/T-10/T-13/T-14/T-15/T-22/T-25/T-26/T-27/T-28/T-30/X-01/X-06/X-09)三类流执行证据补建。参照 EVD-5 模式产出契约 JUnit + evidence docs。溯源:contract-plan-20261106.md §测评-方案 + sc-key-map.md。严禁改 main 实现、严禁整分支 merge 旧基线。",
- "session_id": "ses_e4ce0e6d1ffe4l0p6nFEzZmkXS",
- "dispatched_at": "2026-11-07 07:00:00",
- "dispatched_to": "lan-248",
- "model": "opencode/deepseek-v4.1-flash-free"
- },
- {
- "id": "DOC-2026-11-07-referral-team-T1",
- "title": "T1 团队邀请",
- "priority": "P0",
- "module": "cfc-backend,cfc-frontend",
- "instance": "",
- "status": "dispatched",
- "spec": "docs/superpowers/specs/2026-11-07-referral-team-profit-sharing.md v0.7 §12-T1 + §5 + §7.7 + §11-#11",
- "entity": "",
- "gap_kinds": [],
- "prompt": "实现团队邀请(§5):场景A 未注册用户扫团队邀请码→注册时建立 推荐人关系+团队关系 两次幂等(§5.1);场景B 已加入平台老用户扫码→只建团队关系不覆盖推荐人关系(§9#9);复用 distribution_relations.invite_code 不新建表(§7.7);落地页+小程序码 独立页(§11#11 拍板),参照 pages/invite/join 家庭邀请实现。",
- "tdd_key": "team.invitation.create",
- "generated_from": "user",
- "generated_at": "2026-11-07T22:20:00",
- "session_id": "ses_e48352cedffeqXydpn9bDT2AF5",
- "dispatched_at": "2026-11-08 04:54:46",
- "dispatched_to": "lan-248",
- "model": "axonhub/deepseek"
- },
- {
- "id": "DOC-2026-11-07-referral-team-T2",
- "title": "T2 后端分润",
- "priority": "P0",
- "module": "cfc-backend",
- "instance": "",
- "status": "dispatched",
- "spec": "docs/superpowers/specs/2026-11-07-referral-team-profit-sharing.md v0.7 §12-T2 + §2 + §4 + §7.1/7.3/7.4/7.5 + §11-#3/#5",
- "entity": "",
- "gap_kinds": [],
- "prompt": "实现团队分润核心(§2/§4):建表 profit_pool_order(§7.1)/team_share_record(§7.3)/team_award_record(§7.4)/service_cost_config(§7.5)+ProfitPoolService(§2 总账 S-C-O-F-D)+TeamProfitService(§4.2 8份分配 每层min(该层成员星级,剩余) 每层最多6份 最少2层 最多3层 #5拍板 + §4.4 团队奖 归属平台自有团队 platform_rule #3拍板)。唯一键幂等(§8.3)。",
- "tdd_key": "team.profit.settle",
- "generated_from": "user",
- "generated_at": "2026-11-07T22:20:00",
- "session_id": "ses_e4834f816ffeEbQ6kNGvBQArjL",
- "dispatched_at": "2026-11-08 04:54:59",
- "dispatched_to": "lan-248",
- "model": "axonhub/deepseek"
- },
- {
- "id": "DOC-2026-11-07-referral-team-T3",
- "title": "T3 支付成功集成",
- "priority": "P0",
- "module": "cfc-backend",
- "instance": "",
- "status": "dispatched",
- "spec": "docs/superpowers/specs/2026-11-07-referral-team-profit-sharing.md v0.7 §12-T3 + §2.2 + 复用 CfCommissionService.settle 调用点",
- "entity": "",
- "gap_kinds": [],
- "prompt": "将 6 个订单服务支付成功钩子接入 ProfitPoolService.settle()(§2.2 触发条件),复用现有 CfCommissionService.settle 调用点、同点位并行调用,不新增支付链路改动。",
- "tdd_key": "team.profit.hook",
- "generated_from": "user",
- "generated_at": "2026-11-07T22:20:00",
- "session_id": "ses_e4834bffbffe56iguHKAPOpzJ2",
- "dispatched_at": "2026-11-08 04:55:13",
- "dispatched_to": "lan-248",
- "model": "axonhub/deepseek"
- },
- {
- "id": "DOC-2026-11-07-referral-team-T4",
- "title": "T4 定时任务",
- "priority": "P1",
- "module": "cfc-backend",
- "instance": "",
- "status": "done",
- "spec": "docs/superpowers/specs/2026-11-07-referral-team-profit-sharing.md v0.7 §12-T4 + §8.1/8.2 + §4.3 + §11-#4/#15",
- "entity": "",
- "gap_kinds": [],
- "prompt": "实现定时结算与重评(§8):冷静期7天自动 settled 入可提现余额(§8.2)、月度星级重评含升级双门槛校验(业绩分≥档位 AND 团队直推≥1 #15拍板, §4.3)、退款冲正(§8.2/§9#7)、StarScoreCalculator.isPromotable(userId,targetStar)。",
- "tdd_key": "team.profit.cron",
- "generated_from": "user",
- "generated_at": "2026-11-07T22:20:00",
- "session_id": "ses_e48343888ffeYZ2fh8xpdAUFDr",
- "dispatched_at": "2026-11-08 04:55:49",
- "dispatched_to": "lan-204",
- "model": "axonhub/deepseek",
- "done_at": "2026-11-09 05:58:38"
- },
- {
- "id": "DOC-2026-11-07-referral-team-T5",
- "title": "T5 管理端",
- "priority": "P2",
- "module": "cfc-web",
- "instance": "lan-204",
- "status": "dispatched",
- "spec": "docs/superpowers/specs/2026-11-07-referral-team-profit-sharing.md v0.7 §12-T5 + §7.8 + §11-#6/#7/#12",
- "entity": "",
- "gap_kinds": [],
- "prompt": "管理端配置与流水(§7.8):成本价/星级档位(star_tiers 后台可调 #12拍板)/团队门槛(team_threshold #6拍板)/团队奖分档配置(award_distribute=platform_rule #3拍板);分润流水查询与提现审核(复用 withdrawal_requests type=team_share/team_award #7拍板,参照现有佣金模式)。",
- "tdd_key": "team.admin.manage",
- "generated_from": "user",
- "generated_at": "2026-11-07T22:20:00",
- "session_id": "ses_e46f3c801ffe5XICgDHRHBeN67",
- "dispatched_at": "2026-11-08 10:46:26"
- },
- {
- "id": "DOC-2026-11-07-referral-team-T6",
- "title": "T6 用户端",
- "priority": "P3",
- "module": "cfc-frontend",
- "instance": "lan-189",
- "status": "dispatched",
- "spec": "docs/superpowers/specs/2026-11-07-referral-team-profit-sharing.md v0.7 §12-T6 + §4.6 + §7.3/7.4",
- "entity": "",
- "gap_kinds": [],
- "prompt": "用户端入口(§4.6):团队成员分润账单、星级展示、团队邀请入口(§5)、提现入口(复用 withdrawal_requests);小程序限制遵守 AGENTS.md(禁可选链/禁CSS Grid/用parseDate)。",
- "tdd_key": "team.user.portal",
- "generated_from": "user",
- "generated_at": "2026-11-07T22:20:00",
- "session_id": "ses_e46f3a0d7ffeV4AsAIV38Po530",
- "dispatched_at": "2026-11-08 10:46:26"
- },
- {
- "id": "DOC-2026-11-07-referral-team-T7",
- "title": "T7 星级看板与换算",
- "priority": "P1",
- "module": "cfc-backend,cfc-frontend",
- "instance": "",
- "status": "done",
- "spec": "docs/superpowers/specs/2026-11-07-referral-team-profit-sharing.md v0.7 §12-T7 + §4.3.1 ①② + §11-#13",
- "entity": "",
- "gap_kinds": [],
- "prompt": "星级透明化(§4.3.1 ①② #13拍板):POST /api/team-star/my-view + 小程序「我的星级」页——当前星级/三维构成(直接服务50%+团队服务40%+推荐消费10%)/距下一档差距/升级双门槛进度(业绩分✓+直推✓)/三条换算路径/近12月轨迹。",
- "tdd_key": "team.star.myView",
- "generated_from": "user",
- "generated_at": "2026-11-07T22:20:00",
- "session_id": "ses_e48342d0bffeXEryVJVXokClZ0",
- "dispatched_at": "2026-11-08 04:55:50",
- "dispatched_to": "prod-etotem",
- "model": "axonhub/deepseek",
- "done_at": "2026-11-09 05:58:38"
- },
- {
- "id": "DOC-2026-11-07-referral-team-T8",
- "title": "T8 星级简报推送",
- "priority": "P2",
- "module": "cfc-backend,cfc-frontend",
- "instance": "pub-iwintrue",
- "status": "dispatched",
- "spec": "docs/superpowers/specs/2026-11-07-referral-team-profit-sharing.md v0.7 §12-T8 + §4.3.1 ③④ + §11-#13",
- "entity": "",
- "gap_kinds": [],
- "prompt": "星级月度简报(§4.3.1 ③④ #13拍板):每月1日重评后发微信订阅消息(升/降/持平 + 行动建议),复用现有订阅消息通道。",
- "tdd_key": "team.star.digest",
- "generated_from": "user",
- "generated_at": "2026-11-07T22:20:00",
- "session_id": "ses_e46f382c1ffeCxanO3vslNE7zS",
- "dispatched_at": "2026-11-08 10:46:26"
- },
- {
- "id": "DOC-2026-11-07-referral-team-T9",
- "title": "T9 收入管道化",
- "priority": "P1",
- "module": "cfc-backend",
- "instance": "",
- "status": "done",
- "spec": "docs/superpowers/specs/2026-11-07-referral-team-profit-sharing.md v0.7 §12-T9 + §4.7 杠杆1 + §11-#14 + §10#5",
- "entity": "",
- "gap_kinds": [],
- "prompt": "收入管道化(§4.7 杠杆1 #14拍板):profit_pool_order 触发源扩展 membership/subscription/assessment_retest + 续费/复购持续分润(只扩触发源、不提比率,§10合规第5条)。",
- "tdd_key": "team.profit.pipeline",
- "generated_from": "user",
- "generated_at": "2026-11-07T22:20:00",
- "session_id": "ses_e48342a91ffebovzTQX2YQRH5b",
- "dispatched_at": "2026-11-08 04:55:50",
- "dispatched_to": "prod-etotem",
- "model": "axonhub/deepseek",
- "done_at": "2026-11-09 05:58:38"
- },
- {
- "id": "DOC-2026-11-07-referral-team-T10",
- "title": "T10 星级倍率与里程碑",
- "priority": "P1",
- "module": "cfc-backend,cfc-frontend",
- "instance": "",
- "status": "dispatched",
- "spec": "docs/superpowers/specs/2026-11-07-referral-team-profit-sharing.md v0.7 §12-T10 + §4.7 杠杆2/3/4 + §11-#14 + §10#5",
- "entity": "",
- "gap_kinds": [],
- "prompt": "星级倍率与里程碑(§4.7 杠杆2/3/4 #14拍板):8份池改星级权重分配 star_multiplier(6星=3.0,恒≤T×80% 只重分不增量)+ 带教里程碑奖(星耀导师) + 订单完成实时显示本单分润。",
- "tdd_key": "team.star.multiplier",
- "generated_from": "user",
- "generated_at": "2026-11-07T22:20:00",
- "session_id": "ses_e4834853bffepquqwODFSZYm6t",
- "dispatched_at": "2026-11-08 04:55:28",
- "dispatched_to": "lan-248",
- "model": "axonhub/deepseek"
- },
- {
- "id": "AUTO-2026-07-21-unified-execution-plan-1",
- "title": "⏳ Phase 2 待开发",
- "priority": "P2",
- "module": "backend",
- "instance": "",
- "status": "done",
- "spec": "docs/superpowers/plans/2026-07-21-unified-execution-plan.md",
- "prompt": "实现「⏳ Phase 2 待开发」。完整规格见仓库内设计文档 docs/superpowers/plans/2026-07-21-unified-execution-plan.md(请先读取该文档,定位到「⏳ Phase 2 待开发」对应的批次/章节,按其口径实现)。",
- "generated_from": "sync_design_tasks",
- "generated_at": "2026-11-08 04:53:48",
- "session_id": "ses_e483427faffeNiBPHITvhGjB29",
- "dispatched_at": "2026-11-08 04:55:51",
- "dispatched_to": "prod-etotem",
- "model": "axonhub/deepseek",
- "done_at": "2026-11-09 05:58:38"
- },
- {
- "id": "AUTO-2026-07-21-unified-execution-plan-2",
- "title": "⏳ Phase 3-4 待开发",
- "priority": "P2",
- "module": "backend",
- "instance": "",
- "status": "done",
- "spec": "docs/superpowers/plans/2026-07-21-unified-execution-plan.md",
- "prompt": "实现「⏳ Phase 3-4 待开发」。完整规格见仓库内设计文档 docs/superpowers/plans/2026-07-21-unified-execution-plan.md(请先读取该文档,定位到「⏳ Phase 3-4 待开发」对应的批次/章节,按其口径实现)。",
- "generated_from": "sync_design_tasks",
- "generated_at": "2026-11-08 04:53:48",
- "session_id": "ses_e4834248bffeYhmvuedNxnL4xT",
- "dispatched_at": "2026-11-08 04:55:52",
- "dispatched_to": "prod-etotem",
- "model": "axonhub/deepseek",
- "done_at": "2026-11-09 05:58:38"
- },
- {
- "id": "DOC-2026-11-08-guhe-v2-T1",
- "title": "低侧补丁块接入 KB 查询(L2-2)",
- "priority": "P0",
- "module": "cfc-backend",
- "instance": "",
- "status": "dispatched",
- "spec": "docs/superpowers/plans/2026-11-08-浠艾福平台程序修改计划.md §三任务分解 §T1(P0)",
- "entity": "",
- "gap_kinds": [],
- "prompt": "把 `条件致病菌低侧判读补充(人工)` 作为统一知识库独立可查询子键(判读铁律/四机制/报告口径),供 L4 归因引擎与合规门禁直接取用。验证 KB 查询可返回该子键完整内容。C 档 4 项(Adapter 形态/KB 加载方式/L4 引擎存在性/合规门禁挂载点)由会话实现前自主探测平台现状并在报告记录判断,不阻塞派发。",
- "tdd_key": "guhe.kb.queryLowSidePatch",
- "generated_from": "user",
- "generated_at": "2026-11-08T18:31:42",
- "session_id": "ses_e42d452c7ffe7NuqUqz7Zr15EF",
- "dispatched_at": "2026-11-09 05:58:41",
- "dispatched_to": "local-45278",
- "model": "axonhub/deepseek"
- },
- {
- "id": "DOC-2026-11-08-guhe-v2-T2",
- "title": "个人层双断言(L2-4)",
- "priority": "P0",
- "module": "cfc-backend",
- "instance": "",
- "status": "dispatched",
- "spec": "docs/superpowers/plans/2026-11-08-浠艾福平台程序修改计划.md §三任务分解 §T2(P0)",
- "entity": "",
- "gap_kinds": [],
- "prompt": "写库前键名级(_PERSONAL_KEYS)+ 字符串内容级(页码残段 / `ND 参考` 扫全文)双断言;正样本「大肠杆菌改善方式以『苦丁茶』开头」须通过。C 档 4 项(Adapter 形态/KB 加载方式/L4 引擎存在性/合规门禁挂载点)由会话实现前自主探测平台现状并在报告记录判断,不阻塞派发。",
- "tdd_key": "guhe.report.personalAssert",
- "generated_from": "user",
- "generated_at": "2026-11-08T18:31:42",
- "session_id": "ses_e42d447b2ffeK36ZgMqVnNkl1X",
- "dispatched_at": "2026-11-09 05:58:41",
- "dispatched_to": "local-45278",
- "model": "axonhub/deepseek"
- },
- {
- "id": "DOC-2026-11-08-guhe-v2-T3",
- "title": "低侧判读规则入库(L4-1/L4-2)",
- "priority": "P0",
- "module": "cfc-backend",
- "instance": "",
- "status": "dispatched",
- "spec": "docs/superpowers/plans/2026-11-08-浠艾福平台程序修改计划.md §三任务分解 §T3(P0)",
- "entity": "",
- "gap_kinds": [],
- "prompt": "条件致病菌偏低侧按四机制解释,全部标「关联非因果」;U 型双向口径;参考下限 0 的菌不标「偏低超标」。C 档 4 项(Adapter 形态/KB 加载方式/L4 引擎存在性/合规门禁挂载点)由会话实现前自主探测平台现状并在报告记录判断,不阻塞派发。",
- "tdd_key": "guhe.lowSide.ruleLoad",
- "generated_from": "user",
- "generated_at": "2026-11-08T18:31:42",
- "session_id": "ses_e42d4465cffeumbVn3vnNY6xRV",
- "dispatched_at": "2026-11-09 05:58:41",
- "dispatched_to": "local-45278",
- "model": "axonhub/deepseek"
- },
- {
- "id": "DOC-2026-11-08-guhe-v2-T4",
- "title": "偏低不推荐补菌红线(L4-3)",
- "priority": "P0",
- "module": "cfc-backend",
- "instance": "",
- "status": "dispatched",
- "spec": "docs/superpowers/plans/2026-11-08-浠艾福平台程序修改计划.md §三任务分解 §T4(P0)",
- "entity": "",
- "gap_kinds": [],
- "prompt": "无成熟证据支持「缺大肠杆菌→补大肠杆菌」;禁「报告缺 X → 买含 X 菌株产品」桥接;叠加 §5.2 16S 粒度声明。C 档 4 项(Adapter 形态/KB 加载方式/L4 引擎存在性/合规门禁挂载点)由会话实现前自主探测平台现状并在报告记录判断,不阻塞派发。",
- "tdd_key": "guhe.lowSide.noSupplement",
- "generated_from": "user",
- "generated_at": "2026-11-08T18:31:42",
- "session_id": "ses_e42d444bcffeXzlyhqP0SPQIR2",
- "dispatched_at": "2026-11-09 05:58:42",
- "dispatched_to": "local-45278",
- "model": "axonhub/deepseek"
- },
- {
- "id": "DOC-2026-11-08-guhe-v2-T5",
- "title": "低侧红线组 G-1(合规门禁)",
- "priority": "P0",
- "module": "cfc-backend",
- "instance": "",
- "status": "dispatched",
- "spec": "docs/superpowers/plans/2026-11-08-浠艾福平台程序修改计划.md §三任务分解 §T5(P0)",
- "entity": "",
- "gap_kinds": [],
- "prompt": "新增合规规则:association_only==true;禁写「缺 X→致病/需补充」;禁把调整建议写成处方;措辞白名单「相关联/报告提示/可能与…有关」。C 档 4 项(Adapter 形态/KB 加载方式/L4 引擎存在性/合规门禁挂载点)由会话实现前自主探测平台现状并在报告记录判断,不阻塞派发。",
- "tdd_key": "guhe.gate.lowSideRedline",
- "generated_from": "user",
- "generated_at": "2026-11-08T18:31:42",
- "session_id": "ses_e42d442c3fferVgtHkEQudxTgS",
- "dispatched_at": "2026-11-09 05:58:42",
- "dispatched_to": "local-45278",
- "model": "axonhub/deepseek"
- },
- {
- "id": "DOC-2026-11-08-guhe-v2-T6",
- "title": "16S 粒度拦截 G-2(合规门禁)",
- "priority": "P0",
- "module": "cfc-backend",
- "instance": "",
- "status": "dispatched",
- "spec": "docs/superpowers/plans/2026-11-08-浠艾福平台程序修改计划.md §三任务分解 §T6(P0)",
- "entity": "",
- "gap_kinds": [],
- "prompt": "granularity != strain 时禁生成含菌株号的商品推荐。C 档 4 项(Adapter 形态/KB 加载方式/L4 引擎存在性/合规门禁挂载点)由会话实现前自主探测平台现状并在报告记录判断,不阻塞派发。",
- "tdd_key": "guhe.gate.strainBlock",
- "generated_from": "user",
- "generated_at": "2026-11-08T18:31:42",
- "session_id": "ses_e42d44147ffeEaro47KwFLim8T",
- "dispatched_at": "2026-11-09 05:58:43",
- "dispatched_to": "local-45278",
- "model": "axonhub/deepseek"
- },
- {
- "id": "DOC-2026-11-08-guhe-v2-T7",
- "title": "guhe_v2 指纹路由(L1-1)",
- "priority": "P1",
- "module": "cfc-backend",
- "instance": "",
- "status": "dispatched",
- "spec": "docs/superpowers/plans/2026-11-08-浠艾福平台程序修改计划.md §三任务分解 §T7(P1)",
- "entity": "",
- "gap_kinds": [],
- "prompt": "判定顺序 aidefansi→beijing→guhe_v2→standard;触发词「疾病相似评估 / 厚壁菌比拟杆菌比值 / 亚健康及营养饮食不合理」;键数自检 32 键。C 档 4 项(Adapter 形态/KB 加载方式/L4 引擎存在性/合规门禁挂载点)由会话实现前自主探测平台现状并在报告记录判断,不阻塞派发。",
- "tdd_key": "guhe.l1.guheV2Route",
- "generated_from": "user",
- "generated_at": "2026-11-08T18:31:42",
- "session_id": "ses_e42d3f95fffesWhcxRpqQ1dbJ3",
- "dispatched_at": "2026-11-09 05:59:01",
- "dispatched_to": "lan-248",
- "model": "axonhub/deepseek"
- },
- {
- "id": "DOC-2026-11-08-guhe-v2-T8",
- "title": "新旧分流(L1-3)",
- "priority": "P1",
- "module": "cfc-backend",
- "instance": "",
- "status": "dispatched",
- "spec": "docs/superpowers/plans/2026-11-08-浠艾福平台程序修改计划.md §三任务分解 §T8(P1)",
- "entity": "",
- "gap_kinds": [],
- "prompt": "按 `报告格式版本` 分流;旧 21 键走原 v5 流程;禁把 32 键误判成路由错误、禁把旧 21 键强套 guhe_v2。C 档 4 项(Adapter 形态/KB 加载方式/L4 引擎存在性/合规门禁挂载点)由会话实现前自主探测平台现状并在报告记录判断,不阻塞派发。",
- "tdd_key": "guhe.l1.versionSplit",
- "generated_from": "user",
- "generated_at": "2026-11-08T18:31:42",
- "session_id": "ses_e42d3c032ffen8stm754mOhz3r",
- "dispatched_at": "2026-11-09 05:59:16",
- "dispatched_to": "lan-248",
- "model": "axonhub/deepseek"
- },
- {
- "id": "DOC-2026-11-08-guhe-v2-T9",
- "title": "KB 版本感知(L2-1)",
- "priority": "P1",
- "module": "cfc-backend",
- "instance": "",
- "status": "dispatched",
- "spec": "docs/superpowers/plans/2026-11-08-浠艾福平台程序修改计划.md §三任务分解 §T9(P1)",
- "entity": "",
- "gap_kinds": [],
- "prompt": "KB 服务读取并暴露 `谷禾2026新版扩展知识`(11 子键);升级脚本幂等(重复运行只覆盖不累积)。C 档 4 项(Adapter 形态/KB 加载方式/L4 引擎存在性/合规门禁挂载点)由会话实现前自主探测平台现状并在报告记录判断,不阻塞派发。",
- "tdd_key": "guhe.kb.versionSense",
- "generated_from": "user",
- "generated_at": "2026-11-08T18:31:42",
- "session_id": "ses_e42d3a6c5ffenbMCzM8M2JaeVJ",
- "dispatched_at": "2026-11-09 05:59:22",
- "dispatched_to": "lan-204",
- "model": "axonhub/deepseek"
- },
- {
- "id": "DOC-2026-11-08-guhe-v2-T10",
- "title": "既有键新字段暴露(L2-3)",
- "priority": "P1",
- "module": "cfc-backend",
- "instance": "",
- "status": "dispatched",
- "spec": "docs/superpowers/plans/2026-11-08-浠艾福平台程序修改计划.md §三任务分解 §T10(P1)",
- "entity": "",
- "gap_kinds": [],
- "prompt": "菌属功能库 [40]/[72]/[73] `偏高影响`/`偏低影响`、菌种综合信息「埃希氏菌属」`偏低侧影响`、艾德范思大肠杆菌 `健康定植说明` 入 L2 查询返回。C 档 4 项(Adapter 形态/KB 加载方式/L4 引擎存在性/合规门禁挂载点)由会话实现前自主探测平台现状并在报告记录判断,不阻塞派发。",
- "tdd_key": "guhe.kb.fieldExpose",
- "generated_from": "user",
- "generated_at": "2026-11-08T18:31:42",
- "session_id": "ses_e42d42adeffeTkDdDRiLQUIr9A",
- "dispatched_at": "2026-11-09 05:58:48",
- "dispatched_to": "lan-248",
- "model": "axonhub/deepseek"
- },
- {
- "id": "DOC-2026-11-08-guhe-v2-T11",
- "title": "证据码隔离 G-3(合规门禁)",
- "priority": "P1",
- "module": "cfc-backend",
- "instance": "",
- "status": "dispatched",
- "spec": "docs/superpowers/plans/2026-11-08-浠艾福平台程序修改计划.md §三任务分解 §T11(P1)",
- "entity": "",
- "gap_kinds": [],
- "prompt": "低侧机制证据标 PUB/KB;COM 只作存在性记录;未核实编号标「未核实」。C 档 4 项(Adapter 形态/KB 加载方式/L4 引擎存在性/合规门禁挂载点)由会话实现前自主探测平台现状并在报告记录判断,不阻塞派发。",
- "tdd_key": "guhe.gate.evidenceIsolate",
- "generated_from": "user",
- "generated_at": "2026-11-08T18:31:42",
- "session_id": "ses_e42d412a1ffeE3nVLb2LXSAfw3",
- "dispatched_at": "2026-11-09 05:58:54",
- "dispatched_to": "lan-248",
- "model": "axonhub/deepseek"
- },
- {
- "id": "DOC-2026-11-08-guhe-v2-T12",
- "title": "分页残段清洗下沉(L1-2)",
- "priority": "P2",
- "module": "cfc-backend",
- "instance": "",
- "status": "dispatched",
- "spec": "docs/superpowers/plans/2026-11-08-浠艾福平台程序修改计划.md §三任务分解 §T12(P2)",
- "entity": "",
- "gap_kinds": [],
- "prompt": "Adapter 调用 extract_guhe_v2() 自动获得清洗;校验层断言物种库条目不含 `\\d{1,3}/16\\d`。C 档 4 项(Adapter 形态/KB 加载方式/L4 引擎存在性/合规门禁挂载点)由会话实现前自主探测平台现状并在报告记录判断,不阻塞派发。",
- "tdd_key": "guhe.l1.pageTailClean",
- "generated_from": "user",
- "generated_at": "2026-11-08T18:31:42",
- "session_id": "ses_e42d3890effel5wHr8EoSFxzJh",
- "dispatched_at": "2026-11-09 05:59:29",
- "dispatched_to": "lan-204",
- "model": "axonhub/deepseek"
- },
- {
- "id": "DOC-2026-11-08-guhe-v2-T13",
- "title": "空壳率防错(L1-4)",
- "priority": "P2",
- "module": "cfc-backend",
- "instance": "",
- "status": "dispatched",
- "spec": "docs/superpowers/plans/2026-11-08-浠艾福平台程序修改计划.md §三任务分解 §T13(P2)",
- "entity": "",
- "gap_kinds": [],
- "prompt": "guhe_v2 解析后校验增量 11 键齐全;空壳(曾误用艾德范思提取器产 26 键)→ 换正确提取器。C 档 4 项(Adapter 形态/KB 加载方式/L4 引擎存在性/合规门禁挂载点)由会话实现前自主探测平台现状并在报告记录判断,不阻塞派发。",
- "tdd_key": "guhe.l1.shellGuard",
- "generated_from": "user",
- "generated_at": "2026-11-08T18:31:42",
- "session_id": "ses_e42d36284ffe6EJQM05GZyhyLV",
- "dispatched_at": "2026-11-09 05:59:40",
- "dispatched_to": "lan-204",
- "model": "axonhub/deepseek"
- },
- {
- "id": "DOC-2026-11-08-guhe-v2-T14",
- "title": "五维 no_path 映射(L4-4)",
- "priority": "P2",
- "module": "cfc-backend",
- "instance": "",
- "status": "dispatched",
- "spec": "docs/superpowers/plans/2026-11-08-浠艾福平台程序修改计划.md §三任务分解 §T14(P2)",
- "entity": "",
- "gap_kinds": [],
- "prompt": "菌群观测对「富/行」自动标 no_path;心/智介导链自动加 ⚠ 并锁关联措辞;低侧口径归身维主战场。C 档 4 项(Adapter 形态/KB 加载方式/L4 引擎存在性/合规门禁挂载点)由会话实现前自主探测平台现状并在报告记录判断,不阻塞派发。",
- "tdd_key": "guhe.l4.noPathMap",
- "generated_from": "user",
- "generated_at": "2026-11-08T18:31:42",
- "session_id": "ses_e42d325c6ffe8F29D9PkoPLft0",
- "dispatched_at": "2026-11-09 05:59:56",
- "dispatched_to": "lan-204",
- "model": "axonhub/deepseek"
- },
- {
- "id": "DOC-2026-11-08-guhe-v2-T15",
- "title": "跨案例聚合(P3)",
- "priority": "P3",
- "module": "cfc-backend",
- "instance": "",
- "status": "dispatched",
- "spec": "docs/superpowers/plans/2026-11-08-浠艾福平台程序修改计划.md §三任务分解 §T15(P3)",
- "entity": "",
- "gap_kinds": [],
- "prompt": "低侧口径并入既有 P3 聚合口径,可检索「同条件致病菌低侧」应对方案;跨案例可按低侧判读口径聚合同策略。C 档 4 项(Adapter 形态/KB 加载方式/L4 引擎存在性/合规门禁挂载点)由会话实现前自主探测平台现状并在报告记录判断,不阻塞派发。",
- "tdd_key": "guhe.p3.lowSideAggregate",
- "generated_from": "user",
- "generated_at": "2026-11-08T18:31:42",
- "session_id": "ses_e42d31d19ffeSj9uj6zNZNNEUS",
- "dispatched_at": "2026-11-09 05:59:57",
- "dispatched_to": "prod-etotem",
- "model": "axonhub/deepseek"
- }
- ]
|