|
17113
|
5
|
5
|
5
|
6
|
0
|
0
|
refs/heads/react-migration
|
0
|
{"Commits":[{"Sha1":"c4f0c2eab {"Commits":[{"Sha1":"c4f0c2eabbf729ae2f7cc6de2eda4416f0e7b3bb","Message":"feat(migrations): 部署完备 parity baseline——全新库 migrate deploy 终态与 schema 真源零差异\n\n新增 20260712155600_deploy_parity_baseline 迁移,收敛迁移链重放态与 folder schema\n真源之间累计 10176 行系统性漂移,使全新空库 `prisma migrate deploy` 全量重放后\n与 Prisma Client 生成依据完全一致(影子库全链演练机器验证 diff 为空)。\n\n漂移核查结论:\n- 零缺列——Client 声明的列迁移链全部建到(6 个疑似缺列实为同语句 DROP+ADD 类型\n 重建,演练撞列后实锤改判)\n- 实际漂移构成:FK onDelete/onUpdate 行为 542 对、索引命名与定义约 1950 处、\n 列类型/NOT NULL/默认值 260 条、131 个真源已废弃列清理\n\nbaseline 工程化(五类防御化,安全性由终态 diff=0 校验兜底):\n- 约束背后索引 DROP INDEX → DROP CONSTRAINT(演练发现 Prisma diff 脚本缺陷)\n- 业务视图 20 个先拆后建(排除 pg_* 扩展视图;类型变更被视图依赖阻断)\n- 业务触发器 36 个先拆后建(pg_get_triggerdef 原样导出)\n- 索引操作幂等化 + 约束 RENAME/ADD DO 块吞存在性异常\n- 收尾:11 个同名异构索引先删后建 + 1 个冗余旧名 FK 清理\n\n环境处置:\n- dev 库 resolve --applied 跳过(禁止在有数据库上执行,含 DROP COLUMN 与 FK 行为\n 变更;存量漂移由 migration-drift 审计渐进治理)\n- API 测试库非 prisma migrate 管理,不受影响\n- 附带处置共享 dev 库幽灵状态:failed 半应用迁移 20260711235453 与无记录迁移\n 20260712000950 核实内容完整在库后 resolve 补记录\n\n部署口径落盘 docs/operations/database-deploy-migration-runbook-2026-07-12.md\n(全新库两步:deploy + diff 校验;已有环境一步 resolve)。\n\n证据:影子库全链演练 deploy 成功 + 终态 diff 输出 \"This is an empty migration.\";\n后端单测 640/8803 全绿;customers/sla API 真打 DB 17/17;prisma:schema 镜像审计通过;\n演练用影子库已清理。\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-07-12T09:04:27-07:00"}],"HeadCommit":{"Sha1":"c4f0c2eabbf729ae2f7cc6de2eda4416f0e7b3bb","Message":"feat(migrations): 部署完备 parity baseline——全新库 migrate deploy 终态与 schema 真源零差异\n\n新增 20260712155600_deploy_parity_baseline 迁移,收敛迁移链重放态与 folder schema\n真源之间累计 10176 行系统性漂移,使全新空库 `prisma migrate deploy` 全量重放后\n与 Prisma Client 生成依据完全一致(影子库全链演练机器验证 diff 为空)。\n\n漂移核查结论:\n- 零缺列——Client 声明的列迁移链全部建到(6 个疑似缺列实为同语句 DROP+ADD 类型\n 重建,演练撞列后实锤改判)\n- 实际漂移构成:FK onDelete/onUpdate 行为 542 对、索引命名与定义约 1950 处、\n 列类型/NOT NULL/默认值 260 条、131 个真源已废弃列清理\n\nbaseline 工程化(五类防御化,安全性由终态 diff=0 校验兜底):\n- 约束背后索引 DROP INDEX → DROP CONSTRAINT(演练发现 Prisma diff 脚本缺陷)\n- 业务视图 20 个先拆后建(排除 pg_* 扩展视图;类型变更被视图依赖阻断)\n- 业务触发器 36 个先拆后建(pg_get_triggerdef 原样导出)\n- 索引操作幂等化 + 约束 RENAME/ADD DO 块吞存在性异常\n- 收尾:11 个同名异构索引先删后建 + 1 个冗余旧名 FK 清理\n\n环境处置:\n- dev 库 resolve --applied 跳过(禁止在有数据库上执行,含 DROP COLUMN 与 FK 行为\n 变更;存量漂移由 migration-drift 审计渐进治理)\n- API 测试库非 prisma migrate 管理,不受影响\n- 附带处置共享 dev 库幽灵状态:failed 半应用迁移 20260711235453 与无记录迁移\n 20260712000950 核实内容完整在库后 resolve 补记录\n\n部署口径落盘 docs/operations/database-deploy-migration-runbook-2026-07-12.md\n(全新库两步:deploy + diff 校验;已有环境一步 resolve)。\n\n证据:影子库全链演练 deploy 成功 + 终态 diff 输出 \"This is an empty migration.\";\n后端单测 640/8803 全绿;customers/sla API 真打 DB 17/17;prisma:schema 镜像审计通过;\n演练用影子库已清理。\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-07-12T09:04:27-07:00"},"CompareURL":"luoanwu/juhi-omni-knowledge-hub/compare/384707574f237763231e84a10939c4277977169d...c4f0c2eabbf729ae2f7cc6de2eda4416f0e7b3bb","Len":1}...
|
1783872271
|
Edit
Delete
|
|
17112
|
5
|
5
|
5
|
6
|
0
|
0
|
refs/heads/react-migration
|
0
|
{"Commits":[{"Sha1":"384707574 {"Commits":[{"Sha1":"384707574f237763231e84a10939c4277977169d","Message":"feat(tickets): 工单联系人/预约时段五字段全链点亮——迁移补列 + 写读回闭环\n\n数据库迁移(20260712153553_ticket_contact_and_schedule_fields):\n- service_tickets 补 contact_name(100)/contact_phone(50)/contact_address(500)/\n estimated_start_time/estimated_end_time 五列——工单表单自建立起渲染这五个字段,\n 但无物理列导致 create/update 白名单注释「后端暂不支持」、用户填写全部静默丢弃\n (P0 批 tickets 编辑断链修复时裁定归 owner,本次补列接通)\n- 迁移应用过程处置共享 dev 库存量幽灵状态:20260711235453 为 failed 半应用\n (列+索引实际已在)、20260712000950 内容已在库但无记录——核实两者列+索引\n 完整存在后 migrate resolve --applied 补记录,再 deploy 新迁移;\n folder 真源 → 镜像同步 → audit:prisma-schema-source 通过 → client/Zod 重新生成\n\n全链接线:\n- ticketMapper 补 contactAddress/estimatedStartTime/estimatedEndTime 三条映射\n (contactName/contactPhone 映射历史上已预留、列今天才建)\n- createTicketSchema/updateTicketSchema 双 schema 补五键(Zod max 与 VarChar 逐列对齐,\n prisma-zod 契约审计 0 错误)\n- 前端 create()/update() 白名单恢复发送(表单 phone → 后端 contactPhone);\n 编辑回填改读 DTO 真源键 contactPhone;shared ServiceTicket 类型补 contactPhone\n- 连坐清理:shared 重建暴露 invoice-requests/Detail 的 issuedBy 漏网死字段消费,\n 同款移除(invoices 表无 issued_by 列)\n\n证据:双端类型检查干净;后端单测 640/8803 全绿;live 写读回实锤——PUT 五字段\n(王工/13900001111/杭州市西湖区文一路 100 号/预约时段 ISO)全部落库读回成功;\nprisma-zod p1Length/p1Required 均 0;tickets/invoices 域 RTL 6 文件/18 用例全绿。\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-07-12T08:49:04-07:00"}],"HeadCommit":{"Sha1":"384707574f237763231e84a10939c4277977169d","Message":"feat(tickets): 工单联系人/预约时段五字段全链点亮——迁移补列 + 写读回闭环\n\n数据库迁移(20260712153553_ticket_contact_and_schedule_fields):\n- service_tickets 补 contact_name(100)/contact_phone(50)/contact_address(500)/\n estimated_start_time/estimated_end_time 五列——工单表单自建立起渲染这五个字段,\n 但无物理列导致 create/update 白名单注释「后端暂不支持」、用户填写全部静默丢弃\n (P0 批 tickets 编辑断链修复时裁定归 owner,本次补列接通)\n- 迁移应用过程处置共享 dev 库存量幽灵状态:20260711235453 为 failed 半应用\n (列+索引实际已在)、20260712000950 内容已在库但无记录——核实两者列+索引\n 完整存在后 migrate resolve --applied 补记录,再 deploy 新迁移;\n folder 真源 → 镜像同步 → audit:prisma-schema-source 通过 → client/Zod 重新生成\n\n全链接线:\n- ticketMapper 补 contactAddress/estimatedStartTime/estimatedEndTime 三条映射\n (contactName/contactPhone 映射历史上已预留、列今天才建)\n- createTicketSchema/updateTicketSchema 双 schema 补五键(Zod max 与 VarChar 逐列对齐,\n prisma-zod 契约审计 0 错误)\n- 前端 create()/update() 白名单恢复发送(表单 phone → 后端 contactPhone);\n 编辑回填改读 DTO 真源键 contactPhone;shared ServiceTicket 类型补 contactPhone\n- 连坐清理:shared 重建暴露 invoice-requests/Detail 的 issuedBy 漏网死字段消费,\n 同款移除(invoices 表无 issued_by 列)\n\n证据:双端类型检查干净;后端单测 640/8803 全绿;live 写读回实锤——PUT 五字段\n(王工/13900001111/杭州市西湖区文一路 100 号/预约时段 ISO)全部落库读回成功;\nprisma-zod p1Length/p1Required 均 0;tickets/invoices 域 RTL 6 文件/18 用例全绿。\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-07-12T08:49:04-07:00"},"CompareURL":"luoanwu/juhi-omni-knowledge-hub/compare/584554702141074169c3a208e5fed2bc25768b58...384707574f237763231e84a10939c4277977169d","Len":1}...
|
1783871348
|
Edit
Delete
|
|
17111
|
5
|
5
|
5
|
6
|
0
|
0
|
refs/heads/react-migration
|
0
|
{"Commits":[{"Sha1":"584554702 {"Commits":[{"Sha1":"584554702141074169c3a208e5fed2bc25768b58","Message":"fix(field-contract): 第六批 INFO 尾账四项收口——占位端点下线 + 死列失败关闭 + 三方契约归一\n\n- payment-plans/overdue 三方契约归一:service 补 minOverdueDays 真消费(due_date 前推 N 天,\n live 实锤 5→0 收敛);孤儿 schema(minAmount/maxOverdueDays 从未被消费)改为与 controller\n 实际消费一致(customerId/minOverdueDays/limit),docs 引用同步归真;前端参数删除无分页\n 语义的 page/pageSize 改 limit。类型收紧暴露分诊假阴性:orders 详情 hook 真实消费该端点,\n 此前传的 page/pageSize 一直被静默忽略,已对齐\n- livestream 报表 summary.peakViewers:后端接口与前端类型双侧 nullable + 死列注释\n (livestream_schedules.peak_viewers 无运行时 writer,类型层失败关闭防新消费者误信)\n- groupbuy getPlatformDetailStats/getStoreStats:基于 order_count/sales_amount 双死列\n (全仓仅 select 读、无 create/update 写链,相似写点在 influencer_performances 另一张表)\n 派生的 totalOrders/totalRevenue/dailyTrend/avgOrderValue/productCount/rating 全部失败\n 关闭返回 null/空并删除无用死列查询;仅保留 settled_amount 真列派生的 revenue\n- sales-dashboard 七个占位端点整体下线(products/customers/regional/activities/\n sales-cycle/my-performance/team-performance):自建立起即硬编码假数(恒空/avgDays:30)\n 且前端零视图消费,按孤岛清理先例删除 routes/controller/schema/docs/前端方法全链;\n live 实锤四端点 404;顺手对齐 getForecast 前端类型潜伏雷(声明数组 vs 后端真实对象)\n\n证据:双端类型检查干净;后端单测 640/8803 全绿;sales-dashboard API 2/2、前端\nsales-dashboard/orders RTL 17/17;route-contract 审计 coverage 100% 无破损;\nlive curl 实锤(minOverdueDays 收敛、占位端点 404、平台 stats 正常)。\n分诊台账全部条目清零,五批+尾账共约 54 项真缺陷收口完毕。\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-07-12T08:24:31-07:00"}],"HeadCommit":{"Sha1":"584554702141074169c3a208e5fed2bc25768b58","Message":"fix(field-contract): 第六批 INFO 尾账四项收口——占位端点下线 + 死列失败关闭 + 三方契约归一\n\n- payment-plans/overdue 三方契约归一:service 补 minOverdueDays 真消费(due_date 前推 N 天,\n live 实锤 5→0 收敛);孤儿 schema(minAmount/maxOverdueDays 从未被消费)改为与 controller\n 实际消费一致(customerId/minOverdueDays/limit),docs 引用同步归真;前端参数删除无分页\n 语义的 page/pageSize 改 limit。类型收紧暴露分诊假阴性:orders 详情 hook 真实消费该端点,\n 此前传的 page/pageSize 一直被静默忽略,已对齐\n- livestream 报表 summary.peakViewers:后端接口与前端类型双侧 nullable + 死列注释\n (livestream_schedules.peak_viewers 无运行时 writer,类型层失败关闭防新消费者误信)\n- groupbuy getPlatformDetailStats/getStoreStats:基于 order_count/sales_amount 双死列\n (全仓仅 select 读、无 create/update 写链,相似写点在 influencer_performances 另一张表)\n 派生的 totalOrders/totalRevenue/dailyTrend/avgOrderValue/productCount/rating 全部失败\n 关闭返回 null/空并删除无用死列查询;仅保留 settled_amount 真列派生的 revenue\n- sales-dashboard 七个占位端点整体下线(products/customers/regional/activities/\n sales-cycle/my-performance/team-performance):自建立起即硬编码假数(恒空/avgDays:30)\n 且前端零视图消费,按孤岛清理先例删除 routes/controller/schema/docs/前端方法全链;\n live 实锤四端点 404;顺手对齐 getForecast 前端类型潜伏雷(声明数组 vs 后端真实对象)\n\n证据:双端类型检查干净;后端单测 640/8803 全绿;sales-dashboard API 2/2、前端\nsales-dashboard/orders RTL 17/17;route-contract 审计 coverage 100% 无破损;\nlive curl 实锤(minOverdueDays 收敛、占位端点 404、平台 stats 正常)。\n分诊台账全部条目清零,五批+尾账共约 54 项真缺陷收口完毕。\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-07-12T08:24:31-07:00"},"CompareURL":"luoanwu/juhi-omni-knowledge-hub/compare/e005063b444466a70a8b0bc6b257ee2097fac9cb...584554702141074169c3a208e5fed2bc25768b58","Len":1}...
|
1783869876
|
Edit
Delete
|
|
17110
|
5
|
5
|
5
|
6
|
0
|
0
|
refs/heads/react-migration
|
0
|
{"Commits":[{"Sha1":"e005063b4 {"Commits":[{"Sha1":"e005063b444466a70a8b0bc6b257ee2097fac9cb","Message":"fix(field-contract): P2 第五批十五条全量收口——SLA/门店/获客三域整链 + 微修线\n\n三域并行修复(每条裁定附 prisma schema 列证据,范式:有真源后端真算、无真源失败关闭):\n\nSLA 整链(服务#2/#3):\n- getDashboardStats 重写为前端嵌套契约:current{running/atRisk/breaching}、last30Days\n 响应/解决达标率(诚实分母:未到期 pending 不计入不造数)、breachedByPriority、\n dailyTrend 近 7 日;保留旧扁平键兼容。live 实锤 running=306、解决达标率 22.7%\n- getComplianceReport 由时钟数组改报告对象(overall/byPriority/byType/daily 逐日骨架),\n 真消费 dateFrom/dateTo(此前完全忽略);API 测试断言同步归真(旧断言锁定断链形状)\n\n门店域(门店#1-6):\n- groupbuy-platforms:全局统计/平台列表真算(accounts 计数、settled_amount 合计、\n byPlatform 分桶、authorizedPlatforms 接 auth_status 真列);店铺硬编码死指标\n (syncStatus/productCount/rating)删除;营收量纲修正(误按分除 100 → 元);\n totalOrders 全仓无 writer 全线失败关闭;同步任务无持久化表 → tab/API/类型下线\n- livestream-groupbuy-conversion:实时卡 redemptions(conversion_tracks stage='redeemed')\n 与 avgWatchDuration(viewer_tracks.watch_duration 有列有写链,纠正分诊「无列」误判)\n 真算;peakViewers 死零列失败关闭;关联表补 schedule 名称等 7 个物理列真源,\n 假时间戳/假 status 兜底删除;创建表单想象字段(商品 ID/置顶)删除\n\n获客域(获客#1/#2/#5):\n- campaigns getDashboardData 扩展 12 键真算(byStatus/byChannel/byBusinessLine groupBy、\n 预算花费聚合、executingCampaigns、recentLeadsCount、dailyTrend 7 日桶);live 实锤\n totalBudget=134.3 万、recentLeadsCount=31\n- channel-comparison 补 campaigns 计数与 avgRoi(cost=0 失败关闭);impressions/clicks\n 无真源从前端契约删除\n- campaign-targets 无 Prisma 关系 → 二次查询拼装活动摘要(查不到 null 禁止伪造);\n currentValue 无列 → 进度列失败关闭 '-';abm 触点/评分 metadata 无写链 → nullable\n\n微修线(7 条):\n- 门店系 page 回退 typo ×4(page ?? page_size 误回退,pageSize=50 会跳空页)\n- contracts 排序 order 别名(拦截器映射键此前被 Zod 剥离,升序静默回落 desc)\n- invoices「开票人」死字段三处删除(表无 issued_by 列,条件恒 false)\n- leads 保护期真实现(protect_until 真列 + 分配链真实写入;「保护期管理」由硬编码\n 空 stub 改真查询);分配历史 protectUntil 假时间戳改读 leads 真值\n- tickets assign/escalate 补 crm_activities 操作日志 writer(activity_type 直映\n timeline type,「指派记录」「升级记录」两个恒空 Tab 从此有真源)\n- cash-flow payment-behaviors 孤儿 schema 删除(零引用死文件)\n- batch8 测试存量断言缺陷补 auth mock(Permission 包裹按钮自 wire 提交起未 mock)\n\n证据:双端类型检查干净;后端单测 640 文件/8803 全绿(三域新增/强化单测:SLA 4 条、\nplatforms/livestream 聚合断言、campaigns dashboard/channel/targets 拼装断言,含\nnot.toHaveProperty 防伪造键回潮守卫);SLA API 真打 DB 12/12;前端相关域 RTL 全绿\n(含失败关闭断言与 createLink payload 精确匹配防想象字段回潮);live curl 六端点\n真值/失败关闭行为实锤。分诊台账 P2 段全部标记收口,余 4 项无消费者观察 INFO 备案。\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-07-12T08:08:16-07:00"}],"HeadCommit":{"Sha1":"e005063b444466a70a8b0bc6b257ee2097fac9cb","Message":"fix(field-contract): P2 第五批十五条全量收口——SLA/门店/获客三域整链 + 微修线\n\n三域并行修复(每条裁定附 prisma schema 列证据,范式:有真源后端真算、无真源失败关闭):\n\nSLA 整链(服务#2/#3):\n- getDashboardStats 重写为前端嵌套契约:current{running/atRisk/breaching}、last30Days\n 响应/解决达标率(诚实分母:未到期 pending 不计入不造数)、breachedByPriority、\n dailyTrend 近 7 日;保留旧扁平键兼容。live 实锤 running=306、解决达标率 22.7%\n- getComplianceReport 由时钟数组改报告对象(overall/byPriority/byType/daily 逐日骨架),\n 真消费 dateFrom/dateTo(此前完全忽略);API 测试断言同步归真(旧断言锁定断链形状)\n\n门店域(门店#1-6):\n- groupbuy-platforms:全局统计/平台列表真算(accounts 计数、settled_amount 合计、\n byPlatform 分桶、authorizedPlatforms 接 auth_status 真列);店铺硬编码死指标\n (syncStatus/productCount/rating)删除;营收量纲修正(误按分除 100 → 元);\n totalOrders 全仓无 writer 全线失败关闭;同步任务无持久化表 → tab/API/类型下线\n- livestream-groupbuy-conversion:实时卡 redemptions(conversion_tracks stage='redeemed')\n 与 avgWatchDuration(viewer_tracks.watch_duration 有列有写链,纠正分诊「无列」误判)\n 真算;peakViewers 死零列失败关闭;关联表补 schedule 名称等 7 个物理列真源,\n 假时间戳/假 status 兜底删除;创建表单想象字段(商品 ID/置顶)删除\n\n获客域(获客#1/#2/#5):\n- campaigns getDashboardData 扩展 12 键真算(byStatus/byChannel/byBusinessLine groupBy、\n 预算花费聚合、executingCampaigns、recentLeadsCount、dailyTrend 7 日桶);live 实锤\n totalBudget=134.3 万、recentLeadsCount=31\n- channel-comparison 补 campaigns 计数与 avgRoi(cost=0 失败关闭);impressions/clicks\n 无真源从前端契约删除\n- campaign-targets 无 Prisma 关系 → 二次查询拼装活动摘要(查不到 null 禁止伪造);\n currentValue 无列 → 进度列失败关闭 '-';abm 触点/评分 metadata 无写链 → nullable\n\n微修线(7 条):\n- 门店系 page 回退 typo ×4(page ?? page_size 误回退,pageSize=50 会跳空页)\n- contracts 排序 order 别名(拦截器映射键此前被 Zod 剥离,升序静默回落 desc)\n- invoices「开票人」死字段三处删除(表无 issued_by 列,条件恒 false)\n- leads 保护期真实现(protect_until 真列 + 分配链真实写入;「保护期管理」由硬编码\n 空 stub 改真查询);分配历史 protectUntil 假时间戳改读 leads 真值\n- tickets assign/escalate 补 crm_activities 操作日志 writer(activity_type 直映\n timeline type,「指派记录」「升级记录」两个恒空 Tab 从此有真源)\n- cash-flow payment-behaviors 孤儿 schema 删除(零引用死文件)\n- batch8 测试存量断言缺陷补 auth mock(Permission 包裹按钮自 wire 提交起未 mock)\n\n证据:双端类型检查干净;后端单测 640 文件/8803 全绿(三域新增/强化单测:SLA 4 条、\nplatforms/livestream 聚合断言、campaigns dashboard/channel/targets 拼装断言,含\nnot.toHaveProperty 防伪造键回潮守卫);SLA API 真打 DB 12/12;前端相关域 RTL 全绿\n(含失败关闭断言与 createLink payload 精确匹配防想象字段回潮);live curl 六端点\n真值/失败关闭行为实锤。分诊台账 P2 段全部标记收口,余 4 项无消费者观察 INFO 备案。\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-07-12T08:08:16-07:00"},"CompareURL":"luoanwu/juhi-omni-knowledge-hub/compare/5ae992ef927153e78f5d698e12079bcd3c022f39...e005063b444466a70a8b0bc6b257ee2097fac9cb","Len":1}...
|
1783868903
|
Edit
Delete
|
|
17109
|
5
|
5
|
5
|
6
|
0
|
0
|
refs/heads/react-migration
|
0
|
{"Commits":[{"Sha1":"5ae992ef9 {"Commits":[{"Sha1":"5ae992ef927153e78f5d698e12079bcd3c022f39","Message":"fix(field-contract): P2 第四批八条收口——占位统计真实现 + 无真源 UI 失败关闭\n\n后端补真实现(真源在库、此前占位/分组数组致恒 0):\n- rma:byType 真实 groupBy(type 列 2026-07-09 已建,stats 注释过期硬编码空数组致\n 「类型分布」卡恒空)\n- contracts:统计卡 active/expiringSoon/totalValue 真算(status 分组 + effective_to\n 30 天到期窗口 + total_amount 合计;live 实测 active=126 / totalValue=90 亿)\n- tickets:统计卡 pending(new+assigned)/processing(in_progress)/breached(SLA 时钟违约\n 且未终态) 真算(live 实测 177/45/0)\n- leads:/stats 补 unassigned(销售看板待办真源,live 实测 398);assignment/stats 补\n unassigned/todayAssigned + topAssignees.userName 人员姓名回填(分配页 UUID 直显修复)\n- sales-dashboard:getTrend 由硬编码空数组占位改真实月度聚合(与 overview 同口径\n won opportunities expected_amount + leads/opportunities 创建计数;live 验证趋势卡\n 出现 2026-05 真实赢单 50000,此前恒「暂无趋势数据」)\n\n前端无真源 UI 失败关闭(数据模型表达不了、禁止造假数):\n- contract-templates:删「草稿」统计卡(is_active 布尔无 draft 语义,后端字面量 0、\n 点击恒空列表)\n- customer-balance:删「透支额度」虚构列(后端无 overdraft 概念,adapter 硬编码 0)\n- groupbuy-redemptions:删「方式统计」死面板(redeem_method 未持久化,后端诚实空集)\n\n证据:双端类型检查干净;后端单测 640/8795 全绿(contracts/lead-assignment 单测断言\n更新为扁平键回归守卫);前端六域 RTL 10 文件/39 用例全绿;live curl 六端点真值实锤。\n分诊台账 P2 段拆分为已收口子集与剩余待裁定清单。\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-07-12T07:16:44-07:00"}],"HeadCommit":{"Sha1":"5ae992ef927153e78f5d698e12079bcd3c022f39","Message":"fix(field-contract): P2 第四批八条收口——占位统计真实现 + 无真源 UI 失败关闭\n\n后端补真实现(真源在库、此前占位/分组数组致恒 0):\n- rma:byType 真实 groupBy(type 列 2026-07-09 已建,stats 注释过期硬编码空数组致\n 「类型分布」卡恒空)\n- contracts:统计卡 active/expiringSoon/totalValue 真算(status 分组 + effective_to\n 30 天到期窗口 + total_amount 合计;live 实测 active=126 / totalValue=90 亿)\n- tickets:统计卡 pending(new+assigned)/processing(in_progress)/breached(SLA 时钟违约\n 且未终态) 真算(live 实测 177/45/0)\n- leads:/stats 补 unassigned(销售看板待办真源,live 实测 398);assignment/stats 补\n unassigned/todayAssigned + topAssignees.userName 人员姓名回填(分配页 UUID 直显修复)\n- sales-dashboard:getTrend 由硬编码空数组占位改真实月度聚合(与 overview 同口径\n won opportunities expected_amount + leads/opportunities 创建计数;live 验证趋势卡\n 出现 2026-05 真实赢单 50000,此前恒「暂无趋势数据」)\n\n前端无真源 UI 失败关闭(数据模型表达不了、禁止造假数):\n- contract-templates:删「草稿」统计卡(is_active 布尔无 draft 语义,后端字面量 0、\n 点击恒空列表)\n- customer-balance:删「透支额度」虚构列(后端无 overdraft 概念,adapter 硬编码 0)\n- groupbuy-redemptions:删「方式统计」死面板(redeem_method 未持久化,后端诚实空集)\n\n证据:双端类型检查干净;后端单测 640/8795 全绿(contracts/lead-assignment 单测断言\n更新为扁平键回归守卫);前端六域 RTL 10 文件/39 用例全绿;live curl 六端点真值实锤。\n分诊台账 P2 段拆分为已收口子集与剩余待裁定清单。\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-07-12T07:16:44-07:00"},"CompareURL":"luoanwu/juhi-omni-knowledge-hub/compare/0ebe6fb5c4cc802d6d6f53fba830ec5fbf64f3d7...5ae992ef927153e78f5d698e12079bcd3c022f39","Len":1}...
|
1783865808
|
Edit
Delete
|
|
17108
|
5
|
5
|
5
|
6
|
0
|
0
|
refs/heads/react-migration
|
0
|
{"Commits":[{"Sha1":"0ebe6fb5c {"Commits":[{"Sha1":"0ebe6fb5c4cc802d6d6f53fba830ec5fbf64f3d7","Message":"fix(field-contract): P1 批次十三条收口——键名/量纲映射级断链修复\n\n响应侧映射修复:\n- campaigns:getCampaignStats 从后端真实 {overview,channels} 派生 summary/channelBreakdown\n (渠道真数据此前被键名错位丢弃恒空);getStats 分组数组转对象(业务线 Tab 计数恒 0)+\n totalSpent 键对齐\n- leads /:id/score:拆分 controller 回完整评分对象(此前与 /score-details 共用剥壳 handler\n 只回裸数组,评分卡恒 0 分);shared 类型补 calculatedAt 真源键并重建 dist\n- tickets:stage-history 路由接 ticket_stage_history 真源 handler(此前 alias 到 timeline\n 被旁路,渲染「初始状态:undefined」);getReplies 补 adapter(回复人恒 '-' 修复)\n- satisfaction /analytics:adapter 归一 responseRate/avgCSAT/avgNPS/npsBreakdown\n (分析页半页恒 '-');情感分布/类型统计无后端真源,保持 undefined 失败关闭\n- commissions:my-stats adapter(四张统计卡恒 ¥0);listRecords/getMyRecords/\n getSettlementById 补 user/rule/settlement/records DTO 映射(含 org_units 部门),\n 顺手修掉 where 层 camel 死键(userId/businessDate 等触发 Prisma 未知列的潜伏 500)\n- financial-reports:KPI 卡读 actualValue/targetValue 真源键(恒 '-' 修复);\n 逾期率去掉二次 ×100(12.5% 曾显示 1250%)\n- ap-ledger:service 层补 supplier/owner 语义键映射(两列恒 '-')\n\n请求侧修复:\n- opportunities:statsQuerySchema 补 transform 唯一转换点(snake schema × camel service,\n stats/funnel/forecast 三端点 owner/日期筛选静默失效返回全量口径)\n- sla clocks:schema 补 status(此前被 Zod 剥离)+ service 消费 ticketId/clockType/breached\n (收而不筛的假筛选)\n\n附带:LeadAssignmentResult.assignedTo nullable 化后类型连坐揪出分配历史列第三处\n无守卫消费,一并加守卫。\n\n证据:双端类型检查干净;后端单测 640/8795 全绿;前端六域 RTL 20 文件/72 用例全绿;\nlive curl 实锤:opportunities funnel bogus owner 309→0、stats 2099 区间→0、\nleads score 返回完整对象键、sla clocks bogus status→0、campaigns/commissions wire\n形状确认。分诊台账 P1 段已标记收口。\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-07-12T07:01:41-07:00"}],"HeadCommit":{"Sha1":"0ebe6fb5c4cc802d6d6f53fba830ec5fbf64f3d7","Message":"fix(field-contract): P1 批次十三条收口——键名/量纲映射级断链修复\n\n响应侧映射修复:\n- campaigns:getCampaignStats 从后端真实 {overview,channels} 派生 summary/channelBreakdown\n (渠道真数据此前被键名错位丢弃恒空);getStats 分组数组转对象(业务线 Tab 计数恒 0)+\n totalSpent 键对齐\n- leads /:id/score:拆分 controller 回完整评分对象(此前与 /score-details 共用剥壳 handler\n 只回裸数组,评分卡恒 0 分);shared 类型补 calculatedAt 真源键并重建 dist\n- tickets:stage-history 路由接 ticket_stage_history 真源 handler(此前 alias 到 timeline\n 被旁路,渲染「初始状态:undefined」);getReplies 补 adapter(回复人恒 '-' 修复)\n- satisfaction /analytics:adapter 归一 responseRate/avgCSAT/avgNPS/npsBreakdown\n (分析页半页恒 '-');情感分布/类型统计无后端真源,保持 undefined 失败关闭\n- commissions:my-stats adapter(四张统计卡恒 ¥0);listRecords/getMyRecords/\n getSettlementById 补 user/rule/settlement/records DTO 映射(含 org_units 部门),\n 顺手修掉 where 层 camel 死键(userId/businessDate 等触发 Prisma 未知列的潜伏 500)\n- financial-reports:KPI 卡读 actualValue/targetValue 真源键(恒 '-' 修复);\n 逾期率去掉二次 ×100(12.5% 曾显示 1250%)\n- ap-ledger:service 层补 supplier/owner 语义键映射(两列恒 '-')\n\n请求侧修复:\n- opportunities:statsQuerySchema 补 transform 唯一转换点(snake schema × camel service,\n stats/funnel/forecast 三端点 owner/日期筛选静默失效返回全量口径)\n- sla clocks:schema 补 status(此前被 Zod 剥离)+ service 消费 ticketId/clockType/breached\n (收而不筛的假筛选)\n\n附带:LeadAssignmentResult.assignedTo nullable 化后类型连坐揪出分配历史列第三处\n无守卫消费,一并加守卫。\n\n证据:双端类型检查干净;后端单测 640/8795 全绿;前端六域 RTL 20 文件/72 用例全绿;\nlive curl 实锤:opportunities funnel bogus owner 309→0、stats 2099 区间→0、\nleads score 返回完整对象键、sla clocks bogus status→0、campaigns/commissions wire\n形状确认。分诊台账 P1 段已标记收口。\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-07-12T07:01:41-07:00"},"CompareURL":"luoanwu/juhi-omni-knowledge-hub/compare/34599f92fc238176604126d3b0af3ac05efe051a...0ebe6fb5c4cc802d6d6f53fba830ec5fbf64f3d7","Len":1}...
|
1783864905
|
Edit
Delete
|
|
17107
|
5
|
5
|
5
|
6
|
0
|
0
|
refs/heads/react-migration
|
0
|
{"Commits":[{"Sha1":"34599f92f {"Commits":[{"Sha1":"34599f92fc238176604126d3b0af3ac05efe051a","Message":"fix(field-contract): P0 批次八条收口——券码链崩溃/分配假失败/SLA 违规表/流转反馈/翻页/编辑丢字段/搜索失效\n\n响应侧:\n- groupbuy-redemptions 券码链:listVouchers/getVoucher/findByPhone 三端点接 adaptVoucher\n 归一(此前直连 canonical 形状致 row.code undefined 渲染 TypeError 崩溃、核销入口\n 永不出现、手机号核销必失败);adaptVoucher/adaptRedemption 补 metadata 双读\n (buyerName/buyerPhone/orderAmount,金额一直在此前恒 ¥0);formatVoucherCode 空值\n 守卫;reversed 状态不再折叠为 unused\n- leads 分配链:后端 assign 返回补 assignedTo(成功分配此前被前端 TypeError 报成\n \"分配失败\");分配预览 null 守卫(无可分配人显示告警 Tag 而非崩溃);shared 类型\n assignedTo nullable 化\n- SLA 违规表:getBreachedClocks 富化工单/客户/策略上下文 + breachedBy 超时分钟计算\n (metric_type 兼容 resolution/first_response 双值域),此前裸时钟 DTO 致 7 列全空\n 且超时列渲染 NaN;单测断言更新为富化契约守卫\n- 工单流转反馈:前端 executeTransition 类型与消费改读后端真源键 toStatus\n (此前读 toStage 恒 undefined,流转成功却无提示不刷新)\n- ap-ledger 列表改标准分页包络 paginated()(此前裸 res.json 致前端 total 恒 0 无法翻页)\n\n请求侧(live 实锤):\n- tickets 编辑:updateTicketSchema 补 customerId/snId/orderId/projectId 关联键\n (与 create 对称,此前换客户被 Zod 静默剥离假成功)+ service 补同租户引用校验 +\n 前端 update() 白名单映射对称化;联系人字段组确认为无物理列的想象契约,归 P2 裁定\n- payments plans:schema 补 keyword/due_date_from/due_date_to + service 到期区间消费\n (搜索框此前输入无效),内部两调用点同步补键\n\n证据:双端类型检查干净;后端单测 640 文件/8795 全绿(SLA 断言更新为富化契约);\nap-ledger 3/3、sla 12/12 API 真打 DB;live curl 实锤:工单换客户写读回(已还原)、\nplans keyword 190→0 收敛、ap-ledger 标准包络 meta.pagination;前端 leads/\ngroupbuy-redemptions RTL 17/17;分诊台账 P0 段已标记收口。\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-07-12T06:42:16-07:00"}],"HeadCommit":{"Sha1":"34599f92fc238176604126d3b0af3ac05efe051a","Message":"fix(field-contract): P0 批次八条收口——券码链崩溃/分配假失败/SLA 违规表/流转反馈/翻页/编辑丢字段/搜索失效\n\n响应侧:\n- groupbuy-redemptions 券码链:listVouchers/getVoucher/findByPhone 三端点接 adaptVoucher\n 归一(此前直连 canonical 形状致 row.code undefined 渲染 TypeError 崩溃、核销入口\n 永不出现、手机号核销必失败);adaptVoucher/adaptRedemption 补 metadata 双读\n (buyerName/buyerPhone/orderAmount,金额一直在此前恒 ¥0);formatVoucherCode 空值\n 守卫;reversed 状态不再折叠为 unused\n- leads 分配链:后端 assign 返回补 assignedTo(成功分配此前被前端 TypeError 报成\n \"分配失败\");分配预览 null 守卫(无可分配人显示告警 Tag 而非崩溃);shared 类型\n assignedTo nullable 化\n- SLA 违规表:getBreachedClocks 富化工单/客户/策略上下文 + breachedBy 超时分钟计算\n (metric_type 兼容 resolution/first_response 双值域),此前裸时钟 DTO 致 7 列全空\n 且超时列渲染 NaN;单测断言更新为富化契约守卫\n- 工单流转反馈:前端 executeTransition 类型与消费改读后端真源键 toStatus\n (此前读 toStage 恒 undefined,流转成功却无提示不刷新)\n- ap-ledger 列表改标准分页包络 paginated()(此前裸 res.json 致前端 total 恒 0 无法翻页)\n\n请求侧(live 实锤):\n- tickets 编辑:updateTicketSchema 补 customerId/snId/orderId/projectId 关联键\n (与 create 对称,此前换客户被 Zod 静默剥离假成功)+ service 补同租户引用校验 +\n 前端 update() 白名单映射对称化;联系人字段组确认为无物理列的想象契约,归 P2 裁定\n- payments plans:schema 补 keyword/due_date_from/due_date_to + service 到期区间消费\n (搜索框此前输入无效),内部两调用点同步补键\n\n证据:双端类型检查干净;后端单测 640 文件/8795 全绿(SLA 断言更新为富化契约);\nap-ledger 3/3、sla 12/12 API 真打 DB;live curl 实锤:工单换客户写读回(已还原)、\nplans keyword 190→0 收敛、ap-ledger 标准包络 meta.pagination;前端 leads/\ngroupbuy-redemptions RTL 17/17;分诊台账 P0 段已标记收口。\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-07-12T06:42:16-07:00"},"CompareURL":"luoanwu/juhi-omni-knowledge-hub/compare/b6ca4eb97fca5dff7fe33490df662865134b08d2...34599f92fc238176604126d3b0af3ac05efe051a","Len":1}...
|
1783863745
|
Edit
Delete
|
|
17106
|
5
|
5
|
5
|
6
|
0
|
0
|
refs/heads/react-migration
|
0
|
{"Commits":[{"Sha1":"b6ca4eb97 {"Commits":[{"Sha1":"b6ca4eb97fca5dff7fe33490df662865134b08d2","Message":"fix(field-contract): 断链深挖三批收口——attribution 读模型重塑 + customers 查重富化 + cash-flow 对齐文档真源 + 筛选键 500 硬炸修复\n\n响应侧(前端声明字段后端从未返回 / 键名形状错位):\n- attribution 五报告全部对齐前端契约:model-comparison 重塑嵌套 comparison + models 假筛选真消费;\n overall stats 补 revenue/coverage 真实指标并删硬编码假数;channel/campaign/path 三报告修\n 键名错位与渲染崩溃隐患(creditPercent.toFixed / path.join),统一\"最近计算批次\"防重算翻倍;\n docs 三套幻想 schema 归真;multi-touch CSV 消费键同步\n- customers check-duplicate:match 补 phone/email/industry/primaryContact 四死字段;\n customer 与 matches[0] 深拷贝隔离(修共享引用被序列化为 \"[Circular]\" 的存量缺陷)\n- cash-flow 整模块对齐后端文档级 DTO(owner 矩阵裁定):统计卡/风险预警接真实端点,\n 列表/详情/编辑三视图重写(删 NaN%/静默丢弃/永不可达区块),detail 补回 notes 回读;\n 详情页真实消费 canonical /:id/items 明细子资源\n\n请求侧(live 复现实锤的运行时 500 与假筛选):\n- tickets 列表 9 个 schema 声明筛选键全部真消费(assigneeName/日期区间/多选/isOverdue/\n isEscalated/tags),teamId 无物理列显式吞掉防透传;修复前任意携带即整页 500\n- payments records:min/maxAmount 接 paid_amount 区间真消费,start/endDate 剔除透传\n- targets:end_date 区间补真实消费(此前从未实现),四日期键剔除透传\n\n治理配套:\n- 删除 attribution-models/attribution-reports 两个孤岛遗留 API 测试(打已删模块恒红)\n- acquisition 模块补 module-contract 单测(陈旧基线暴露的 D 级收口,A=282/D=0)\n- 49 条 CONFIRMED 分诊台账落盘 reports/field-contract-triage-2026-07-12.md\n (响应侧 5 域 42 条 + 请求侧 7 条,含共性根因与修复范式)\n\n证据:双端类型检查干净;后端单测 640 文件/8795 全绿(attribution-report 新增 7 用例、\ncustomers 引用隔离守卫);cash-flow RTL 19/19 重写;attribution/customers/multi-touch/\ncash-flow/targets API 真打 DB 全绿;三组筛选修复 live curl 收敛性断言(tickets 327→162/80/30、\npayments 177→0、targets 33→0);audit:tenant/response-columns/filter-truth/module-coverage\n全部达标且受控块零漂移。tickets/payments 两 API 套件失败经 stash 判责为存量债(vitest CJS\n加载/fixture 清理链),已记录台账。\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-07-12T06:13:37-07:00"}],"HeadCommit":{"Sha1":"b6ca4eb97fca5dff7fe33490df662865134b08d2","Message":"fix(field-contract): 断链深挖三批收口——attribution 读模型重塑 + customers 查重富化 + cash-flow 对齐文档真源 + 筛选键 500 硬炸修复\n\n响应侧(前端声明字段后端从未返回 / 键名形状错位):\n- attribution 五报告全部对齐前端契约:model-comparison 重塑嵌套 comparison + models 假筛选真消费;\n overall stats 补 revenue/coverage 真实指标并删硬编码假数;channel/campaign/path 三报告修\n 键名错位与渲染崩溃隐患(creditPercent.toFixed / path.join),统一\"最近计算批次\"防重算翻倍;\n docs 三套幻想 schema 归真;multi-touch CSV 消费键同步\n- customers check-duplicate:match 补 phone/email/industry/primaryContact 四死字段;\n customer 与 matches[0] 深拷贝隔离(修共享引用被序列化为 \"[Circular]\" 的存量缺陷)\n- cash-flow 整模块对齐后端文档级 DTO(owner 矩阵裁定):统计卡/风险预警接真实端点,\n 列表/详情/编辑三视图重写(删 NaN%/静默丢弃/永不可达区块),detail 补回 notes 回读;\n 详情页真实消费 canonical /:id/items 明细子资源\n\n请求侧(live 复现实锤的运行时 500 与假筛选):\n- tickets 列表 9 个 schema 声明筛选键全部真消费(assigneeName/日期区间/多选/isOverdue/\n isEscalated/tags),teamId 无物理列显式吞掉防透传;修复前任意携带即整页 500\n- payments records:min/maxAmount 接 paid_amount 区间真消费,start/endDate 剔除透传\n- targets:end_date 区间补真实消费(此前从未实现),四日期键剔除透传\n\n治理配套:\n- 删除 attribution-models/attribution-reports 两个孤岛遗留 API 测试(打已删模块恒红)\n- acquisition 模块补 module-contract 单测(陈旧基线暴露的 D 级收口,A=282/D=0)\n- 49 条 CONFIRMED 分诊台账落盘 reports/field-contract-triage-2026-07-12.md\n (响应侧 5 域 42 条 + 请求侧 7 条,含共性根因与修复范式)\n\n证据:双端类型检查干净;后端单测 640 文件/8795 全绿(attribution-report 新增 7 用例、\ncustomers 引用隔离守卫);cash-flow RTL 19/19 重写;attribution/customers/multi-touch/\ncash-flow/targets API 真打 DB 全绿;三组筛选修复 live curl 收敛性断言(tickets 327→162/80/30、\npayments 177→0、targets 33→0);audit:tenant/response-columns/filter-truth/module-coverage\n全部达标且受控块零漂移。tickets/payments 两 API 套件失败经 stash 判责为存量债(vitest CJS\n加载/fixture 清理链),已记录台账。\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-07-12T06:13:37-07:00"},"CompareURL":"luoanwu/juhi-omni-knowledge-hub/compare/3d0a44a9c8d654139f4027f66c65b83a9ab64f0f...b6ca4eb97fca5dff7fe33490df662865134b08d2","Len":1}...
|
1783862034
|
Edit
Delete
|
|
17105
|
5
|
5
|
5
|
6
|
0
|
0
|
refs/heads/react-migration
|
0
|
{"Commits":[{"Sha1":"3d0a44a9c {"Commits":[{"Sha1":"3d0a44a9c8d654139f4027f66c65b83a9ab64f0f","Message":"fix(field-contract): 契约断链深挖收口——12 真缺陷修复 + filter-truth/prisma-zod 审计治理归真\n\n深挖 filter-truth/update三态/list-detail/response未消费四探针 2100+ 候选,逐条 live 代码追踪对抗验证,\n修复真实缺陷并把两个喂 HARD gate 的审计从「stale/坏工具掩盖」拉回真实。\n\n假筛选/数据丢失(8):\n- groupbuy-reviews: replyStatus(reply列)/sentiment(rating派生) 接线\n- hr payroll: periodCode 接线 + grades search→canonical keyword(删死型 GradeListParams.search)\n- groupbuy-platforms: authStatus 走 extraWhere 接线(列实在·原被白名单排除)\n- ad-placement placement.service.ts:441 end_date `?? null`→`undefined`(与 running 分支对齐,消非对称清空)\n- livestream-schedule coverUrl/coverImage/cover_image `.max(2000)`→`.max(500)`(收敛 cover_url VarChar(500))\n\nowner 决策项(3):\n- groupbuy-reviews.source: 增 source 列(migration 20260711235453,default 'manual')+全栈接线,formatReview 桩 'meituan'→真列\n- customers check-duplicate: 增 contact_name 查重维度(真源 customer_contacts.name,纯 service 层)\n- social-analytics.industry: 增 social_accounts.industry 列(migration 20260712000950)+getIndustryBenchmark 真实聚合\n (按 tenant+platform+industry 筛账号→单查询聚合 social_analytics 最新快照,无数据 dataAvailable=false,不再伪 'average')\n\n审计工具治理:\n- audit-filter-truth.ts: 修复因 Vue 物理退役(frontend/ 删除)导致的 typescript 解析 anchor 失效,审计复活\n- audit-prisma-zod-contract.ts: 为 6 个静态盲区 FP(superRefine/service-fill/bizCode)加受控豁免+核验理由,归真 PASS\n- filter-truth UNSUPPORTED 18→10 三轮重冻,GOVERNANCE-BASELINE ceiling 同步下调\n\n验证: 双端 type-check 绿;backend 8783 tests(+8 负断言);前端 social-accounts RTL 4/4;\nn1=0;prisma-zod PASS;schema 镜像一致;reconcile 零新增 drift(仅剩 2 个 pre-existing overdue 意图红线)。\n\nCo-Authored-By: Claude Opus 4.8 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-07-12T00:27:30-07:00"}],"HeadCommit":{"Sha1":"3d0a44a9c8d654139f4027f66c65b83a9ab64f0f","Message":"fix(field-contract): 契约断链深挖收口——12 真缺陷修复 + filter-truth/prisma-zod 审计治理归真\n\n深挖 filter-truth/update三态/list-detail/response未消费四探针 2100+ 候选,逐条 live 代码追踪对抗验证,\n修复真实缺陷并把两个喂 HARD gate 的审计从「stale/坏工具掩盖」拉回真实。\n\n假筛选/数据丢失(8):\n- groupbuy-reviews: replyStatus(reply列)/sentiment(rating派生) 接线\n- hr payroll: periodCode 接线 + grades search→canonical keyword(删死型 GradeListParams.search)\n- groupbuy-platforms: authStatus 走 extraWhere 接线(列实在·原被白名单排除)\n- ad-placement placement.service.ts:441 end_date `?? null`→`undefined`(与 running 分支对齐,消非对称清空)\n- livestream-schedule coverUrl/coverImage/cover_image `.max(2000)`→`.max(500)`(收敛 cover_url VarChar(500))\n\nowner 决策项(3):\n- groupbuy-reviews.source: 增 source 列(migration 20260711235453,default 'manual')+全栈接线,formatReview 桩 'meituan'→真列\n- customers check-duplicate: 增 contact_name 查重维度(真源 customer_contacts.name,纯 service 层)\n- social-analytics.industry: 增 social_accounts.industry 列(migration 20260712000950)+getIndustryBenchmark 真实聚合\n (按 tenant+platform+industry 筛账号→单查询聚合 social_analytics 最新快照,无数据 dataAvailable=false,不再伪 'average')\n\n审计工具治理:\n- audit-filter-truth.ts: 修复因 Vue 物理退役(frontend/ 删除)导致的 typescript 解析 anchor 失效,审计复活\n- audit-prisma-zod-contract.ts: 为 6 个静态盲区 FP(superRefine/service-fill/bizCode)加受控豁免+核验理由,归真 PASS\n- filter-truth UNSUPPORTED 18→10 三轮重冻,GOVERNANCE-BASELINE ceiling 同步下调\n\n验证: 双端 type-check 绿;backend 8783 tests(+8 负断言);前端 social-accounts RTL 4/4;\nn1=0;prisma-zod PASS;schema 镜像一致;reconcile 零新增 drift(仅剩 2 个 pre-existing overdue 意图红线)。\n\nCo-Authored-By: Claude Opus 4.8 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-07-12T00:27:30-07:00"},"CompareURL":"luoanwu/juhi-omni-knowledge-hub/compare/cff2a7743a4472a541e5b285f5ce5e079be71d07...3d0a44a9c8d654139f4027f66c65b83a9ab64f0f","Len":1}...
|
1783841295
|
Edit
Delete
|
|
17104
|
5
|
5
|
5
|
6
|
0
|
0
|
refs/heads/react-migration
|
0
|
{"Commits":[{"Sha1":"cff2a7743 {"Commits":[{"Sha1":"cff2a7743a4472a541e5b285f5ce5e079be71d07","Message":"fix(governance): 菜单审计假阴性修复 + 14 条孤儿路由收口\n\n「内容与社媒工作台/视频内容/视频发布/视频数据/供应链工作台/系统导入/\n后台中心 无对应 API 或壳入口」经端点级 FE↔BE diff 逐条核查为污染前提,\n根因是 audit-menu-inventory 三处旧判定:\n\n- hasView 按同名 views/ 目录判 → 改为路由真源解析(lazyView import 的\n 视图文件存在性),同名目录仅兜底;\n- hasApi 按同名 api/modules/\u003cpath\u003e.ts 判 → 改为视图文件真实 @/api import\n 判定(共享 owner 映射,含目录 Index 薄壳一层转发),同名文件仅兜底;\n- 孤儿检测解析 Vue 时代 meta: 块(React 树全用 handle:,orphanRoutes=0\n 假绿)→ 改为 handle: 块窗口解析 + menu.ts 全部 path 字面量保守对比。\n\n修后揭示的 14 条真孤儿路由同轮收口:\n- /marketing-workflows 为指向 /marketing-automation 的兼容重定向壳,\n 补 hideInMenu: true;\n- 其余 13 条(store-agency / customer-balance / payment-analytics /\n disbursements / finance-periods / finance-os 支出与风险 3 项 /\n fulfillment 5 项)按路由 handle 声明的中心与分组补录进 menu.ts。\n\n证据与终态:menu-inventory 291→304 项全绿率 100%、孤儿 14→0;\nview-governance menuVisibleCount 293→306 基线同步,audit:view-governance\n复跑全绿;frontend-react tsc --noEmit 零错误,Sidebar/guards 测试 8 用例全绿。\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-07-11T20:48:16-07:00"}],"HeadCommit":{"Sha1":"cff2a7743a4472a541e5b285f5ce5e079be71d07","Message":"fix(governance): 菜单审计假阴性修复 + 14 条孤儿路由收口\n\n「内容与社媒工作台/视频内容/视频发布/视频数据/供应链工作台/系统导入/\n后台中心 无对应 API 或壳入口」经端点级 FE↔BE diff 逐条核查为污染前提,\n根因是 audit-menu-inventory 三处旧判定:\n\n- hasView 按同名 views/ 目录判 → 改为路由真源解析(lazyView import 的\n 视图文件存在性),同名目录仅兜底;\n- hasApi 按同名 api/modules/\u003cpath\u003e.ts 判 → 改为视图文件真实 @/api import\n 判定(共享 owner 映射,含目录 Index 薄壳一层转发),同名文件仅兜底;\n- 孤儿检测解析 Vue 时代 meta: 块(React 树全用 handle:,orphanRoutes=0\n 假绿)→ 改为 handle: 块窗口解析 + menu.ts 全部 path 字面量保守对比。\n\n修后揭示的 14 条真孤儿路由同轮收口:\n- /marketing-workflows 为指向 /marketing-automation 的兼容重定向壳,\n 补 hideInMenu: true;\n- 其余 13 条(store-agency / customer-balance / payment-analytics /\n disbursements / finance-periods / finance-os 支出与风险 3 项 /\n fulfillment 5 项)按路由 handle 声明的中心与分组补录进 menu.ts。\n\n证据与终态:menu-inventory 291→304 项全绿率 100%、孤儿 14→0;\nview-governance menuVisibleCount 293→306 基线同步,audit:view-governance\n复跑全绿;frontend-react tsc --noEmit 零错误,Sidebar/guards 测试 8 用例全绿。\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-07-11T20:48:16-07:00"},"CompareURL":"luoanwu/juhi-omni-knowledge-hub/compare/c39315b6c9e556d9dfa9fa55cc933d6b5d74d2a6...cff2a7743a4472a541e5b285f5ce5e079be71d07","Len":1}...
|
1783828105
|
Edit
Delete
|
|
17085
|
5
|
5
|
5
|
6
|
0
|
0
|
refs/heads/react-migration
|
0
|
{"Commits":[{"Sha1":"c39315b6c {"Commits":[{"Sha1":"c39315b6c9e556d9dfa9fa55cc933d6b5d74d2a6","Message":"fix(governance): 治理数字对账收口——MEDIUM 清零 + stale 报告刷新 + release-gate 滞后阻断消除\n\n- users 重置密码前端规则对齐后端 Zod:min 6→8,补大小写字母+数字 pattern(真实契约 bug,7 RTL 用例通过)\n- frontend-source-adapter 新增视图子树→真实模块重映射:ai-agents/skill-library 归 ai-agent-skills\n (表单实走 ai-agent-skills API,description max 4000 与 Zod 一致,消除目录名误配假告警)\n- 重跑 10 个超期 stale 审计(ai-assist 系列/migration-safety/time-analysis/workflow/process-definition 等)\n- census e2e.specFiles 基线重冻 294→338(随治理波次提交的真实增长)\n- 重跑 production-release-gate/actions:滞后的 harness-high-zero 阻断消除,11→10 条真实 P0 阻断\n- 终态:dashboard C=0/H=0/M=0、stale=0、formrules WARNING=0;\n baseline-reconcile 242 条断言 drift 10→2,剩余 2 条为受控块明文保留的 overdue 真实红线\n (10 条 P0 上线阻断逾期,只能真完成或指挥官重排 due date,不得改绿)\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-07-10T02:05:45-07:00"}],"HeadCommit":{"Sha1":"c39315b6c9e556d9dfa9fa55cc933d6b5d74d2a6","Message":"fix(governance): 治理数字对账收口——MEDIUM 清零 + stale 报告刷新 + release-gate 滞后阻断消除\n\n- users 重置密码前端规则对齐后端 Zod:min 6→8,补大小写字母+数字 pattern(真实契约 bug,7 RTL 用例通过)\n- frontend-source-adapter 新增视图子树→真实模块重映射:ai-agents/skill-library 归 ai-agent-skills\n (表单实走 ai-agent-skills API,description max 4000 与 Zod 一致,消除目录名误配假告警)\n- 重跑 10 个超期 stale 审计(ai-assist 系列/migration-safety/time-analysis/workflow/process-definition 等)\n- census e2e.specFiles 基线重冻 294→338(随治理波次提交的真实增长)\n- 重跑 production-release-gate/actions:滞后的 harness-high-zero 阻断消除,11→10 条真实 P0 阻断\n- 终态:dashboard C=0/H=0/M=0、stale=0、formrules WARNING=0;\n baseline-reconcile 242 条断言 drift 10→2,剩余 2 条为受控块明文保留的 overdue 真实红线\n (10 条 P0 上线阻断逾期,只能真完成或指挥官重排 due date,不得改绿)\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-07-10T02:05:45-07:00"},"CompareURL":"luoanwu/juhi-omni-knowledge-hub/compare/9646e903603f789cc51ec4b32200b70b3ccf2cff...c39315b6c9e556d9dfa9fa55cc933d6b5d74d2a6","Len":1}...
|
1783674369
|
Edit
Delete
|
|
17081
|
5
|
5
|
5
|
6
|
0
|
0
|
refs/heads/react-migration
|
0
|
{"Commits":[{"Sha1":"9646e9036 {"Commits":[{"Sha1":"9646e903603f789cc51ec4b32200b70b3ccf2cff","Message":"docs(api): 重新生成 OpenAPI 契约与全量 API 参考(React 单前端真源口径)\n\n- openapi.json / openapi.yaml 按当前 Zod-First 真源全量重生成\n- 新增 all-api-reference.md 与 generate-api-reference.mjs 生成入口\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-07-10T01:32:29-07:00"},{"Sha1":"7b8988454f47c83a3fd319e7dc8f9a7cfeb5d649","Message":"fix(architecture): 后端架构边界治理——跨模块调用收口公开入口 + 依赖图基线门禁\n\n- commissions/revenue/treasury/assets/channel-analytics 等跨域直接依赖改走目标模块 index.* 公开入口\n- 新增 backend-module-dependencies 依赖图审计基线(存量 INFO 冻结,基线外新增硬阻断)与测试\n- 补 event-outbox-helper / password 单元测试;vitest workspace/coverage 配置对齐\n- 附 2026-07-09 菜单 292 能力真源分析报告与三份架构治理作战卡\n- 验收:pnpm -C backend run type-check 通过\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-07-10T01:32:19-07:00"},{"Sha1":"20c082f55e0c4be2105dedce9069420e2750d3fa","Message":"chore(frontend): Vue 前端物理退役——frontend/ 与 mobile/ 全面删除,React 单一真源收口\n\n- 物理删除 frontend/(1876 文件)与 mobile/(197 文件)Vue/Vant 工程,历史仅由 Git 追溯\n- pnpm workspace、启动链、CI、Harness、E2E view-governance、审计扫描根全部切换到 frontend-react/\n- 删除 Vue-only 治理脚本 13 个与旧 view-governance 快照/生成器/验证器\n- dev docker-compose frontend 服务切换为根 context + frontend-react/Dockerfile(对齐 prod),映射 5173:80\n- 新增 React 生产镜像链:frontend-react/Dockerfile、Dockerfile.prebuilt、nginx.conf、.env.example\n- check-env.sh / start-dev.sh / quick-start.sh 与 DOCKER.md / START-HERE.md / 部署与启动指南死命令收口为 frontend-react\n- 删除 Vue 时代死脚本 run_tsc.sh / generate_smoke_tests.py / debug-blank-page.html\n- CLAUDE.md / AGENTS.md / README.md / GEMINI.md / QWEN.md 同步单一前端真源口径\n- 验收:pnpm -C frontend-react run type-check 通过、docker compose config 通过、主树 .vue=0、运行链残留扫描=0\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-07-10T01:30:05-07:00"}],"HeadCommit":{"Sha1":"9646e903603f789cc51ec4b32200b70b3ccf2cff","Message":"docs(api): 重新生成 OpenAPI 契约与全量 API 参考(React 单前端真源口径)\n\n- openapi.json / openapi.yaml 按当前 Zod-First 真源全量重生成\n- 新增 all-api-reference.md 与 generate-api-reference.mjs 生成入口\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-07-10T01:32:29-07:00"},"CompareURL":"luoanwu/juhi-omni-knowledge-hub/compare/101858c06a69a0ecf99c3366f5034de2786d0495...9646e903603f789cc51ec4b32200b70b3ccf2cff","Len":3}...
|
1783672582
|
Edit
Delete
|
|
17042
|
5
|
5
|
5
|
6
|
0
|
0
|
refs/heads/react-migration
|
0
|
{"Commits":[{"Sha1":"101858c06 {"Commits":[{"Sha1":"101858c06a69a0ecf99c3366f5034de2786d0495","Message":"Fix RMA contract drift and tighten cleanup/runtime governance\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-07-09T23:29:51-07:00"},{"Sha1":"495ebd9d6db6af72c778e70ffe22cf9c6b467ff9","Message":"fix(governance): 收口跨域运行真源与验收门禁\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-07-09T23:04:48-07:00"}],"HeadCommit":{"Sha1":"101858c06a69a0ecf99c3366f5034de2786d0495","Message":"Fix RMA contract drift and tighten cleanup/runtime governance\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-07-09T23:29:51-07:00"},"CompareURL":"luoanwu/juhi-omni-knowledge-hub/compare/78a500f04042e394b04075c3823e4431ed58b463...101858c06a69a0ecf99c3366f5034de2786d0495","Len":2}...
|
1783665486
|
Edit
Delete
|
|
16977
|
5
|
5
|
5
|
6
|
0
|
0
|
refs/heads/react-migration
|
0
|
{"Commits":[{"Sha1":"78a500f04 {"Commits":[{"Sha1":"78a500f04042e394b04075c3823e4431ed58b463","Message":"fix(governance): 2026-07-09 契约治理四轮收口——query 布尔 coerce 清零、snake 死键修复、假筛选裁定与断链深挖\n\n- query 布尔参数 coerce 全仓收口:218 处/76 文件归零,新增 scripts/audit-query-boolean.ts 棘轮审计并接入 registry(query-boolean-violations-zero == 0)\n- query snake 死键收口:39 处真死键修复(9 模块),豁免/双读/preprocess 三类假死判据落盘\n- 假筛选群收口:12 键三分法裁定,filter-truth UNSUPPORTED 22→10,后端补消费按 schema+controller 白名单+service where 三点齐\n- 契约断链二轮深挖:renewals 非互逆映射、duplicate 丢名、partner-customers 键名不对称等 10 组用户可见断链修复\n- 新增迁移:rma_type_reason_columns、ad_audiences_add_data_source\n- 全域视图审计矩阵报告(a1~a9 九域)、契约断链/深对齐审计报告、代码导出 PDF\n- 同步 reports/*.latest.json 基线与 CLAUDE.md GOVERNANCE-BASELINE 受控块\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-07-09T19:18:14-07:00"},{"Sha1":"e6db8812d3c3c7a2c0bdae632c2f1b3f2e9b4fe8","Message":"test(campaigns): 对齐 goals_json 合并读后的 findFirst 调用链,修复 10 个存量假红用例\n\ncommit 4a6c61fc35 将 CampaignService.update 的 goals_json 合并分支触发条件\n扩到 goalsJson/storeScopeMode/storeIds 后,complete/attribute/schedule/selectTools\n路径的 update 多出一次 findFirst({ select: goals_json })合并读(4 次→5 次)。\n测试 mock 队列未同步:\n- marketing.service.test.ts completeCampaign 用例第 5 次调用兜底到前序用例\n 遗留的持久 mockResolvedValue(status=draft),报 expected 'draft' to be 'completed'\n- campaign.service.enhanced.test.ts 使用 mockReset,队列耗尽返回 undefined→404,\n 9 个状态机生命周期用例失败\n\n按 assertion-theater-guard 口径裁定:实现无 bug(合并语义为有意行为且带\ntenant_id),仅在各 mock 队列第 2 位插入合并读返回值并更新链路注释,\n未改动/弱化任何断言。marketing 23/23、campaigns 59/59 全绿。\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-07-09T18:51:30-07:00"},{"Sha1":"9023c1468b7cbd83719f42c6a5521a42813848e7","Message":"fix(governance): tighten service contracts and route validation\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-07-06T22:32:22-07:00"},{"Sha1":"1f15101e932088234cf16f0606e6dc9227f018e3","Message":"Tighten alliance API tests and order action fallback\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-07-04T01:04:30-07:00"},{"Sha1":"c892b8637c2fdb10b1246caa149a7e353c442aa6","Message":"Refine governance and frontend workflows\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-07-04T00:59:39-07:00"}],"HeadCommit":{"Sha1":"78a500f04042e394b04075c3823e4431ed58b463","Message":"fix(governance): 2026-07-09 契约治理四轮收口——query 布尔 coerce 清零、snake 死键修复、假筛选裁定与断链深挖\n\n- query 布尔参数 coerce 全仓收口:218 处/76 文件归零,新增 scripts/audit-query-boolean.ts 棘轮审计并接入 registry(query-boolean-violations-zero == 0)\n- query snake 死键收口:39 处真死键修复(9 模块),豁免/双读/preprocess 三类假死判据落盘\n- 假筛选群收口:12 键三分法裁定,filter-truth UNSUPPORTED 22→10,后端补消费按 schema+controller 白名单+service where 三点齐\n- 契约断链二轮深挖:renewals 非互逆映射、duplicate 丢名、partner-customers 键名不对称等 10 组用户可见断链修复\n- 新增迁移:rma_type_reason_columns、ad_audiences_add_data_source\n- 全域视图审计矩阵报告(a1~a9 九域)、契约断链/深对齐审计报告、代码导出 PDF\n- 同步 reports/*.latest.json 基线与 CLAUDE.md GOVERNANCE-BASELINE 受控块\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-07-09T19:18:14-07:00"},"CompareURL":"luoanwu/juhi-omni-knowledge-hub/compare/04d57d74d0373aea967c831c21a1c4526095da1d...78a500f04042e394b04075c3823e4431ed58b463","Len":20}...
|
1783653434
|
Edit
Delete
|
|
16522
|
5
|
5
|
5
|
50
|
0
|
0
|
refs/heads/codex/p0-edge-governance
|
1
|
{"Commits":[{"Sha1":"c51dc5edc {"Commits":[{"Sha1":"c51dc5edc2fdf269634a6cbbc50e18200230e42d","Message":"Add STARS line context planning\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-07-07T05:26:41-07:00"},{"Sha1":"8cc37a8f39c1c9f6fea631131e610e2003c59fb1","Message":"Refine lyric alignment workflows and governance checks\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-07-06T00:43:00-07:00"}],"HeadCommit":{"Sha1":"c51dc5edc2fdf269634a6cbbc50e18200230e42d","Message":"Add STARS line context planning\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-07-07T05:26:41-07:00"},"CompareURL":"luoanwu/juhi-song-library-alignment/compare/00a617f128624eeadc28167b5f20da59a402fc2f...c51dc5edc2fdf269634a6cbbc50e18200230e42d","Len":2}...
|
1783431501
|
Edit
Delete
|
|
16224
|
5
|
5
|
5
|
57
|
0
|
0
|
refs/heads/main
|
1
|
{"Commits":[{"Sha1":"27c04f193 {"Commits":[{"Sha1":"27c04f193a6a4170b1e0f7839a18d0e7e9b529fb","Message":"Merge pull request 'feat(material-factory): 图像模型真实推理对接 + 双后端渲染管线闭环' (#1) from feat/qwen-image-inference into main\n\nReviewed-on: https://gitea.g-hi.com/luoanwu/image-generation/pulls/1\n","AuthorEmail":"law@g-hi.com","AuthorName":"luoanwu","CommitterEmail":"law@g-hi.com","CommitterName":"luoanwu","Timestamp":"2026-07-07T07:46:33+08:00"},{"Sha1":"ac5f340c0422af2a5c3122289142e8517dc434c5","Message":"fix(sidecar): Qwen-Image-Edit 未指定尺寸时保留底图原生分辨率\n\nQwenImageEditPlus 默认把输入塌到 ~1MP 规范面积,密集中文标题在 1MP + 低步数下\n笔画糊/字形崩。新增 _fit_edit_dims:未显式传 width/height 时按底图原生分辨率\n(保纵横比、向下取整 16 倍数、封顶 QWEN_EDIT_MAX_AREA=1.5MP 兜内存/耗时)驱动,\n调用方仍可显式覆盖。\n\n实测 ktv-poster-master(1672x941) 改字:4 步@1.06MP 文字 melted → 20 步@1.49MP\n(1632x912)文字笔画完整清晰、字形正确,无高分辨率伪影。清晰度决定因素是步数\n(生产默认 40),分辨率为次因;两者叠加达到可用海报质量。\n\nCo-Authored-By: Claude Opus 4.8 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luojuhai@luojuhaideMacBook-Pro.local","AuthorName":"luojuhai","CommitterEmail":"luojuhai@luojuhaideMacBook-Pro.local","CommitterName":"luojuhai","Timestamp":"2026-07-07T07:39:05+08:00"},{"Sha1":"973dde30db19928a0937f02a102979d473cce644","Message":"feat(material-factory): 图像模型真实推理对接 + 双后端渲染管线闭环\n\n把嗨设工坊从「权重就绪、推理是桩」推进到「本机真跑转绿」:\n\nsidecar (services/model-sidecar)\n- /v1/generate 真调 Z-Image-Turbo / Qwen-Image-2512(modelKey 路由)\n- /v1/edit 真调 Qwen-Image-Edit-2511(QwenImageEditPlusPipeline)\n- capability() 依赖齐全时开启 qwen-image-master/edit(128 GiB 主机 loadable)\n- 单 pipeline 常驻、kind 切换释放旧模型,防双 20B 同驻 OOM\n- 修 torchvision 隐藏依赖:Qwen2VLProcessor→Qwen2VLVideoProcessor 硬依赖它,\n 缺失则 from_pretrained ImportError(进 pyproject zimage extra)\n- 加载失败包 try/except → 结构化 503(不再冒 500)\n- SIDECAR_QWEN_STEPS:生产默认 40 步,CI/验收可降步提速(真引擎真像素)\n\n双后端 (NestJS + Fastify 同契约)\n- render-pipeline 按 kind 路由:APPEARANCE/SEMANTIC_EDIT→sidecarEdit,\n DESIGN_MASTER/TURBO_VARIANT→sidecarGenerate;job 状态机真流转 + 乐观锁 + outbox 同 tx\n- 修 undici 300s 传输超时:Node 内置 fetch 的 headersTimeout/bodyTimeout 默认 300s\n 会把分钟级同步推理在 ~302s 中止成假 SidecarUnavailableError(AbortSignal 压不住)。\n 改用 undici@6 request() + 请求级 headersTimeout/bodyTimeout 对齐 timeoutMs\n\n验收\n- DATABASE_URL=... INFERENCE_RUN_QWEN=1 pnpm check:inference 双后端各 6/6 绿\n- Qwen-Image-Edit 真改图 SUCCEEDED(金色中文标题精确改写 + OCR gate 联动)\n- pnpm check 全部静态门禁绿;CLAUDE.md(=AGENTS.md) 回灌 G14/真跑证据\n\n仍打开(诚实缺口):render-pipeline 同步端点(G13)、异步 worker 化、\n单 MPS 多进程串行化、Qwen nightly/self-hosted 验收。\n\nCo-Authored-By: Claude Opus 4.8 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luojuhai@luojuhaideMacBook-Pro.local","AuthorName":"luojuhai","CommitterEmail":"luojuhai@luojuhaideMacBook-Pro.local","CommitterName":"luojuhai","Timestamp":"2026-07-07T06:35:04+08:00"}],"HeadCommit":{"Sha1":"27c04f193a6a4170b1e0f7839a18d0e7e9b529fb","Message":"Merge pull request 'feat(material-factory): 图像模型真实推理对接 + 双后端渲染管线闭环' (#1) from feat/qwen-image-inference into main\n\nReviewed-on: https://gitea.g-hi.com/luoanwu/image-generation/pulls/1\n","AuthorEmail":"law@g-hi.com","AuthorName":"luoanwu","CommitterEmail":"law@g-hi.com","CommitterName":"luoanwu","Timestamp":"2026-07-07T07:46:33+08:00"},"CompareURL":"luoanwu/image-generation/compare/fc2ce503c94d763b1d077e7c734720a0c58e23a8...27c04f193a6a4170b1e0f7839a18d0e7e9b529fb","Len":3}...
|
1783381594
|
Edit
Delete
|
|
16223
|
5
|
11
|
5
|
57
|
0
|
0
|
|
1
|
1|feat(material-factory): 图像模型真实推理对接 + 双后端渲染管线闭环
|
1783381594
|
Edit
Delete
|
|
16222
|
5
|
7
|
5
|
57
|
0
|
0
|
|
1
|
1|feat(material-factory): 图像模型真实推理对接 + 双后端渲染管线闭环
|
1783381429
|
Edit
Delete
|
|
16221
|
5
|
5
|
5
|
57
|
0
|
0
|
refs/heads/feat/qwen-image-inference
|
1
|
{"Commits":[{"Sha1":"ac5f340c0 {"Commits":[{"Sha1":"ac5f340c0422af2a5c3122289142e8517dc434c5","Message":"fix(sidecar): Qwen-Image-Edit 未指定尺寸时保留底图原生分辨率\n\nQwenImageEditPlus 默认把输入塌到 ~1MP 规范面积,密集中文标题在 1MP + 低步数下\n笔画糊/字形崩。新增 _fit_edit_dims:未显式传 width/height 时按底图原生分辨率\n(保纵横比、向下取整 16 倍数、封顶 QWEN_EDIT_MAX_AREA=1.5MP 兜内存/耗时)驱动,\n调用方仍可显式覆盖。\n\n实测 ktv-poster-master(1672x941) 改字:4 步@1.06MP 文字 melted → 20 步@1.49MP\n(1632x912)文字笔画完整清晰、字形正确,无高分辨率伪影。清晰度决定因素是步数\n(生产默认 40),分辨率为次因;两者叠加达到可用海报质量。\n\nCo-Authored-By: Claude Opus 4.8 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luojuhai@luojuhaideMacBook-Pro.local","AuthorName":"luojuhai","CommitterEmail":"luojuhai@luojuhaideMacBook-Pro.local","CommitterName":"luojuhai","Timestamp":"2026-07-07T07:39:05+08:00"},{"Sha1":"973dde30db19928a0937f02a102979d473cce644","Message":"feat(material-factory): 图像模型真实推理对接 + 双后端渲染管线闭环\n\n把嗨设工坊从「权重就绪、推理是桩」推进到「本机真跑转绿」:\n\nsidecar (services/model-sidecar)\n- /v1/generate 真调 Z-Image-Turbo / Qwen-Image-2512(modelKey 路由)\n- /v1/edit 真调 Qwen-Image-Edit-2511(QwenImageEditPlusPipeline)\n- capability() 依赖齐全时开启 qwen-image-master/edit(128 GiB 主机 loadable)\n- 单 pipeline 常驻、kind 切换释放旧模型,防双 20B 同驻 OOM\n- 修 torchvision 隐藏依赖:Qwen2VLProcessor→Qwen2VLVideoProcessor 硬依赖它,\n 缺失则 from_pretrained ImportError(进 pyproject zimage extra)\n- 加载失败包 try/except → 结构化 503(不再冒 500)\n- SIDECAR_QWEN_STEPS:生产默认 40 步,CI/验收可降步提速(真引擎真像素)\n\n双后端 (NestJS + Fastify 同契约)\n- render-pipeline 按 kind 路由:APPEARANCE/SEMANTIC_EDIT→sidecarEdit,\n DESIGN_MASTER/TURBO_VARIANT→sidecarGenerate;job 状态机真流转 + 乐观锁 + outbox 同 tx\n- 修 undici 300s 传输超时:Node 内置 fetch 的 headersTimeout/bodyTimeout 默认 300s\n 会把分钟级同步推理在 ~302s 中止成假 SidecarUnavailableError(AbortSignal 压不住)。\n 改用 undici@6 request() + 请求级 headersTimeout/bodyTimeout 对齐 timeoutMs\n\n验收\n- DATABASE_URL=... INFERENCE_RUN_QWEN=1 pnpm check:inference 双后端各 6/6 绿\n- Qwen-Image-Edit 真改图 SUCCEEDED(金色中文标题精确改写 + OCR gate 联动)\n- pnpm check 全部静态门禁绿;CLAUDE.md(=AGENTS.md) 回灌 G14/真跑证据\n\n仍打开(诚实缺口):render-pipeline 同步端点(G13)、异步 worker 化、\n单 MPS 多进程串行化、Qwen nightly/self-hosted 验收。\n\nCo-Authored-By: Claude Opus 4.8 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luojuhai@luojuhaideMacBook-Pro.local","AuthorName":"luojuhai","CommitterEmail":"luojuhai@luojuhaideMacBook-Pro.local","CommitterName":"luojuhai","Timestamp":"2026-07-07T06:35:04+08:00"}],"HeadCommit":{"Sha1":"ac5f340c0422af2a5c3122289142e8517dc434c5","Message":"fix(sidecar): Qwen-Image-Edit 未指定尺寸时保留底图原生分辨率\n\nQwenImageEditPlus 默认把输入塌到 ~1MP 规范面积,密集中文标题在 1MP + 低步数下\n笔画糊/字形崩。新增 _fit_edit_dims:未显式传 width/height 时按底图原生分辨率\n(保纵横比、向下取整 16 倍数、封顶 QWEN_EDIT_MAX_AREA=1.5MP 兜内存/耗时)驱动,\n调用方仍可显式覆盖。\n\n实测 ktv-poster-master(1672x941) 改字:4 步@1.06MP 文字 melted → 20 步@1.49MP\n(1632x912)文字笔画完整清晰、字形正确,无高分辨率伪影。清晰度决定因素是步数\n(生产默认 40),分辨率为次因;两者叠加达到可用海报质量。\n\nCo-Authored-By: Claude Opus 4.8 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luojuhai@luojuhaideMacBook-Pro.local","AuthorName":"luojuhai","CommitterEmail":"luojuhai@luojuhaideMacBook-Pro.local","CommitterName":"luojuhai","Timestamp":"2026-07-07T07:39:05+08:00"},"CompareURL":"luoanwu/image-generation/compare/fc2ce503c94d763b1d077e7c734720a0c58e23a8...ac5f340c0422af2a5c3122289142e8517dc434c5","Len":2}...
|
1783381399
|
Edit
Delete
|
|
16220
|
5
|
5
|
5
|
57
|
0
|
0
|
refs/heads/feat/qwen-image-inference
|
1
|
|
1783381399
|
Edit
Delete
|
|
16153
|
5
|
5
|
5
|
57
|
0
|
0
|
refs/heads/main
|
1
|
{"Commits":[{"Sha1":"fc2ce503c {"Commits":[{"Sha1":"fc2ce503c94d763b1d077e7c734720a0c58e23a8","Message":"feat: initialize HI Atelier material factory\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-07-06T01:30:42-07:00"}],"HeadCommit":{"Sha1":"fc2ce503c94d763b1d077e7c734720a0c58e23a8","Message":"feat: initialize HI Atelier material factory\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-07-06T01:30:42-07:00"},"CompareURL":"","Len":1}...
|
1783328698
|
Edit
Delete
|
|
16152
|
5
|
5
|
5
|
57
|
0
|
0
|
refs/heads/main
|
1
|
|
1783328698
|
Edit
Delete
|
|
16151
|
5
|
1
|
5
|
57
|
0
|
0
|
|
1
|
|
1783328662
|
Edit
Delete
|
|
16134
|
5
|
7
|
5
|
50
|
0
|
0
|
|
1
|
1|fix(web): update Lyra product labels
|
1783327280
|
Edit
Delete
|
|
16117
|
5
|
5
|
5
|
56
|
0
|
0
|
refs/heads/main
|
1
|
{"Commits":[{"Sha1":"e65fc3036 {"Commits":[{"Sha1":"e65fc3036083a4118e0c909bd6a58914e6b33fef","Message":"feat: initialize SiteScout workspace\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-07-06T01:31:18-07:00"}],"HeadCommit":{"Sha1":"e65fc3036083a4118e0c909bd6a58914e6b33fef","Message":"feat: initialize SiteScout workspace\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-07-06T01:31:18-07:00"},"CompareURL":"","Len":1}...
|
1783326783
|
Edit
Delete
|
|
16116
|
5
|
5
|
5
|
56
|
0
|
0
|
refs/heads/main
|
1
|
|
1783326783
|
Edit
Delete
|
|
16115
|
5
|
1
|
5
|
56
|
0
|
0
|
|
1
|
|
1783326759
|
Edit
Delete
|
|
16106
|
5
|
5
|
5
|
55
|
0
|
0
|
refs/heads/main
|
1
|
{"Commits":[{"Sha1":"8b9d81d39 {"Commits":[{"Sha1":"8b9d81d390dac8db76b755c9d7a25f7439e2a59b","Message":"chore: initialize data analysis scaffold\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-07-06T01:29:19-07:00"}],"HeadCommit":{"Sha1":"8b9d81d390dac8db76b755c9d7a25f7439e2a59b","Message":"chore: initialize data analysis scaffold\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-07-06T01:29:19-07:00"},"CompareURL":"","Len":1}...
|
1783326647
|
Edit
Delete
|
|
16105
|
5
|
5
|
5
|
55
|
0
|
0
|
refs/heads/main
|
1
|
|
1783326647
|
Edit
Delete
|
|
16104
|
5
|
1
|
5
|
55
|
0
|
0
|
|
1
|
|
1783326636
|
Edit
Delete
|
|
16062
|
5
|
5
|
5
|
50
|
0
|
0
|
refs/heads/codex/p0-edge-governance
|
1
|
{"Commits":[{"Sha1":"00a617f12 {"Commits":[{"Sha1":"00a617f128624eeadc28167b5f20da59a402fc2f","Message":"fix(web): update Lyra product labels\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-07-06T00:40:17-07:00"}],"HeadCommit":{"Sha1":"00a617f128624eeadc28167b5f20da59a402fc2f","Message":"fix(web): update Lyra product labels\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-07-06T00:40:17-07:00"},"CompareURL":"luoanwu/juhi-song-library-alignment/compare/87bcbf6ebbf43784219f8e6a5a40d6cd8fc3041c...00a617f128624eeadc28167b5f20da59a402fc2f","Len":1}...
|
1783323702
|
Edit
Delete
|
|
15973
|
5
|
5
|
5
|
6
|
0
|
0
|
refs/heads/react-migration
|
0
|
{"Commits":[{"Sha1":"04d57d74d {"Commits":[{"Sha1":"04d57d74d0373aea967c831c21a1c4526095da1d","Message":"chore(governance): route-shadowing 接入棘轮门禁全链(受控块断言 + harness:check + 对账)\n\n承接 registry 注册(7212bb0f7d),完成红线 9「注册即执行」的剩余三件套:\n- CLAUDE.md GOVERNANCE-BASELINE 受控块新增断言\n route-shadowing-zero | route-shadowing-audit.latest.json | summary.shadowedRoutes | == | 0\n (零阈值:32 处死路由已全收口,任何回潮立即 drift 阻塞)\n- package.json harness:check 链尾接入 audit-route-shadowing 实跑\n- 重跑 baseline-reconcile + harness dashboard:新断言实测 0==0 ✓;\n dashboard critical 0 / high 0 / medium 11(\u003c= 51 ceiling)、\n reports missing/stale/invalid 全 0。\n\n对账说明:reconcile 仅存的 2 条 VALUE_DRIFT 为既有真实红线\n(production-release-gate/actions 两条 *-overdue-zero 实测 10——10 条 P0\n上线阻断 dueDate 过期,受控块注释明确故意保持 ==0 不得凑绿,须真实完成\n或指挥官重排 due date 清除),与本次接入无关、未触碰。\n\n至此「静态路由被参数化路由遮蔽」bug 家族防回潮闭环:\n审计脚本(退出码 1 硬阻塞)→ registry 选跑触发 → harness:check 全量链 →\n受控块零阈值对账,四层锁死。\n\nCo-Authored-By: Claude Opus 4.8 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-07-03T03:22:21-07:00"}],"HeadCommit":{"Sha1":"04d57d74d0373aea967c831c21a1c4526095da1d","Message":"chore(governance): route-shadowing 接入棘轮门禁全链(受控块断言 + harness:check + 对账)\n\n承接 registry 注册(7212bb0f7d),完成红线 9「注册即执行」的剩余三件套:\n- CLAUDE.md GOVERNANCE-BASELINE 受控块新增断言\n route-shadowing-zero | route-shadowing-audit.latest.json | summary.shadowedRoutes | == | 0\n (零阈值:32 处死路由已全收口,任何回潮立即 drift 阻塞)\n- package.json harness:check 链尾接入 audit-route-shadowing 实跑\n- 重跑 baseline-reconcile + harness dashboard:新断言实测 0==0 ✓;\n dashboard critical 0 / high 0 / medium 11(\u003c= 51 ceiling)、\n reports missing/stale/invalid 全 0。\n\n对账说明:reconcile 仅存的 2 条 VALUE_DRIFT 为既有真实红线\n(production-release-gate/actions 两条 *-overdue-zero 实测 10——10 条 P0\n上线阻断 dueDate 过期,受控块注释明确故意保持 ==0 不得凑绿,须真实完成\n或指挥官重排 due date 清除),与本次接入无关、未触碰。\n\n至此「静态路由被参数化路由遮蔽」bug 家族防回潮闭环:\n审计脚本(退出码 1 硬阻塞)→ registry 选跑触发 → harness:check 全量链 →\n受控块零阈值对账,四层锁死。\n\nCo-Authored-By: Claude Opus 4.8 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-07-03T03:22:21-07:00"},"CompareURL":"luoanwu/juhi-omni-knowledge-hub/compare/7212bb0f7d8f202759b9ddb0e2204b3745825847...04d57d74d0373aea967c831c21a1c4526095da1d","Len":1}...
|
1783074148
|
Edit
Delete
|
|
15972
|
5
|
5
|
5
|
6
|
0
|
0
|
refs/heads/react-migration
|
0
|
{"Commits":[{"Sha1":"7212bb0f7 {"Commits":[{"Sha1":"7212bb0f7d8f202759b9ddb0e2204b3745825847","Message":"chore(harness): route-shadowing 审计接入 audit-registry(红线 9 注册即执行)\n\n将 scripts/audit-route-shadowing.ts 正式注册进 AUDIT_REGISTRY(第 72 项):\n- trigger: backend/src/modules/**/*.routes.ts 变更时选跑(gate: smart)\n- reportFile: reports/route-shadowing-audit.latest.json(已在仓、当前 shadowed=0)\n- 硬阻塞语义在审计脚本自身(新增遮蔽退出码 1);harness 侧经 report.ts 的\n adaptGeneric fallback 消化 findings(无 severity 默认 INFO,不污染\n dashboard high/medium),符合「脚本硬门禁 + dashboard INFO 记录」棘轮口径。\n\n接入验证:registry 解析 OK(72 项)、report.ts:3450 按 reportFile 文件名\n自动路由 adaptGeneric 成立、报告新鲜且 0 遮蔽。至此「静态路由被参数化路由\n遮蔽」bug 家族(1329d688e0 收口的 32 处死路由)具备防回潮机器门禁。\n\nCo-Authored-By: Claude Opus 4.8 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-07-03T03:20:52-07:00"}],"HeadCommit":{"Sha1":"7212bb0f7d8f202759b9ddb0e2204b3745825847","Message":"chore(harness): route-shadowing 审计接入 audit-registry(红线 9 注册即执行)\n\n将 scripts/audit-route-shadowing.ts 正式注册进 AUDIT_REGISTRY(第 72 项):\n- trigger: backend/src/modules/**/*.routes.ts 变更时选跑(gate: smart)\n- reportFile: reports/route-shadowing-audit.latest.json(已在仓、当前 shadowed=0)\n- 硬阻塞语义在审计脚本自身(新增遮蔽退出码 1);harness 侧经 report.ts 的\n adaptGeneric fallback 消化 findings(无 severity 默认 INFO,不污染\n dashboard high/medium),符合「脚本硬门禁 + dashboard INFO 记录」棘轮口径。\n\n接入验证:registry 解析 OK(72 项)、report.ts:3450 按 reportFile 文件名\n自动路由 adaptGeneric 成立、报告新鲜且 0 遮蔽。至此「静态路由被参数化路由\n遮蔽」bug 家族(1329d688e0 收口的 32 处死路由)具备防回潮机器门禁。\n\nCo-Authored-By: Claude Opus 4.8 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-07-03T03:20:52-07:00"},"CompareURL":"luoanwu/juhi-omni-knowledge-hub/compare/06c1676e4e8d18d0a3797df1323ed4d768d3bee8...7212bb0f7d8f202759b9ddb0e2204b3745825847","Len":1}...
|
1783074059
|
Edit
Delete
|
|
15971
|
5
|
5
|
5
|
6
|
0
|
0
|
refs/heads/react-migration
|
0
|
{"Commits":[{"Sha1":"06c1676e4 {"Commits":[{"Sha1":"06c1676e4e8d18d0a3797df1323ed4d768d3bee8","Message":"fix(rma): complete 契约错位收口——resolution 真落库、completed_at 从死写复活\n\n前端 rmaApi.complete 发送 resolution/refundAmount/returnShippingNo/\nreturnShippingCarrier 四字段,而后端 completeRmaSchema 只收 returnedItem——\n全部被 Zod 静默剥离;且 completeRma 的 updateMany 从不写 completed_at,\n详情 timeline 依赖 completed_at 生成的「完成」节点永不出现(死节点)。\n\n修复(接线 + 契约收敛双向):\n- 后端:completeRmaSchema 补 resolution(max 2000,可选);completeRma 写入\n completed_at + 将 resolution 并入 logistics_json(与 diagnose 的 diagnosis\n 键同构,保留既有 JSON 键);controller 透传。\n- 前端 api:complete 签名收敛为 { resolution, returnedItem? }——删除后端无\n 写链的 refundAmount/returnShippingNo/returnShippingCarrier 死字段(退款\n 金额属财务域真源,不在 RMA JSON 记第二份)。\n- 前端 Detail(视图驱动闭环):完成确认框升级为受控 Modal 真收集处理结论\n (默认「已完成处理」,与既有拒绝原因 Modal 同构);Descriptions 新增\n 「诊断结论」「处理结论」两行读 logisticsJson.diagnosis/resolution,\n 写入的信息在详情页真正查得回。\n\n真实端到端验证(运行中后端 + 真实 DB):\n- created→receive→process→complete 带 resolution:status=completed、\n completedAt 落库(timeline 完成节点复活)、logisticsJson.resolution\n API 读回与 DB 直证一致。\n- 顺带补验上一提交的 diagnose 对齐链:receive→diagnose 带 diagnosisResult,\n DB 直证 logistics_json.diagnosis 落库。\n\n新增回归锁定单测:断言 updateMany 写 completed_at + logistics_json 合并\nresolution 且保留既有 diagnosis 键。rma.service.test.ts 34/34 通过;\n前后端 type-check 全绿。\n\nCo-Authored-By: Claude Opus 4.8 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-07-03T03:16:05-07:00"}],"HeadCommit":{"Sha1":"06c1676e4e8d18d0a3797df1323ed4d768d3bee8","Message":"fix(rma): complete 契约错位收口——resolution 真落库、completed_at 从死写复活\n\n前端 rmaApi.complete 发送 resolution/refundAmount/returnShippingNo/\nreturnShippingCarrier 四字段,而后端 completeRmaSchema 只收 returnedItem——\n全部被 Zod 静默剥离;且 completeRma 的 updateMany 从不写 completed_at,\n详情 timeline 依赖 completed_at 生成的「完成」节点永不出现(死节点)。\n\n修复(接线 + 契约收敛双向):\n- 后端:completeRmaSchema 补 resolution(max 2000,可选);completeRma 写入\n completed_at + 将 resolution 并入 logistics_json(与 diagnose 的 diagnosis\n 键同构,保留既有 JSON 键);controller 透传。\n- 前端 api:complete 签名收敛为 { resolution, returnedItem? }——删除后端无\n 写链的 refundAmount/returnShippingNo/returnShippingCarrier 死字段(退款\n 金额属财务域真源,不在 RMA JSON 记第二份)。\n- 前端 Detail(视图驱动闭环):完成确认框升级为受控 Modal 真收集处理结论\n (默认「已完成处理」,与既有拒绝原因 Modal 同构);Descriptions 新增\n 「诊断结论」「处理结论」两行读 logisticsJson.diagnosis/resolution,\n 写入的信息在详情页真正查得回。\n\n真实端到端验证(运行中后端 + 真实 DB):\n- created→receive→process→complete 带 resolution:status=completed、\n completedAt 落库(timeline 完成节点复活)、logisticsJson.resolution\n API 读回与 DB 直证一致。\n- 顺带补验上一提交的 diagnose 对齐链:receive→diagnose 带 diagnosisResult,\n DB 直证 logistics_json.diagnosis 落库。\n\n新增回归锁定单测:断言 updateMany 写 completed_at + logistics_json 合并\nresolution 且保留既有 diagnosis 键。rma.service.test.ts 34/34 通过;\n前后端 type-check 全绿。\n\nCo-Authored-By: Claude Opus 4.8 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-07-03T03:16:05-07:00"},"CompareURL":"luoanwu/juhi-omni-knowledge-hub/compare/c4a1b8ebcc54d4a222aa030b845818ad365b950d...06c1676e4e8d18d0a3797df1323ed4d768d3bee8","Len":1}...
|
1783073771
|
Edit
Delete
|
|
15970
|
5
|
5
|
5
|
6
|
0
|
0
|
refs/heads/react-migration
|
0
|
{"Commits":[{"Sha1":"c4a1b8ebc {"Commits":[{"Sha1":"c4a1b8ebcc54d4a222aa030b845818ad365b950d","Message":"fix(sn/contracts): bind 接回守卫实现 + 六模块死字段契约清理批\n\n一、serial-numbers bind 接回 bindSerialNumber(bug 家族第 5 处收口)\n语义核实修正:bindSerialNumber 服务函数的 where 条件 status:'in_stock' 是\n乐观锁前置,data 实写 status:'shipped'——即「绑定即随单发货」,与 controller\n语义一致,非此前疑似的语义漂移,无需产品决策。差别是 controller 裸写版本\n缺订单/明细/客户存在性校验、缺 in_stock+未绑定乐观锁、缺 sn_bound 事件,\n且守卫实现是零调用死代码。修复:\n- controller.bind 接回 bindSerialNumber;路由挂 validate(bindSerialNumberSchema)\n (orderId/customerId 必填)。\n- 前端 api bind 签名对齐后端契约(orderId/customerId 必填 + orderItemId/\n shipmentId 可选),删除后端无写链的 contractId/assetId 死字段。\n- live 四向验证:缺 orderId→400、假订单→404 订单不存在、真绑定→200 且\n DB 直证 shipped+bound_order_id+bound_customer_id 落库、重复绑定→conflict\n 乐观锁拦截;验证后经 /return 恢复(顺带复验 restockReturned 清绑定生效)。\n- 新增 controller 回归锁定测试(断言走 bindSerialNumber 且裸 update 未被调)。\n\n二、契约清理批(六项,Zod 收下但永不落库/错位的死契约)\n① inventory 仓库:create/update schema 删 contactName/contactPhone/notes\n (warehouses 无列、mapper 显式忽略、前端不收集),mapper 忽略条目一并清。\n② opportunities:create body 删 phone/email/province/city/address/industry/\n contact_name/contact_phone 八个死字段(service 自动建客户只写 name、无\n customer_contacts 写链、前端走客户选择器不发送);update 派生自动净化;\n IM intent-analyzer 调用点同步清 undefined 占位死参数。live:带 phone 创建\n 被 strict 400 拒绝(Unrecognized key)。\n③ opportunities list startDate/endDate 接线(此前被 allowedFilterFields\n 白名单静默忽略):落创建时间区间。live:全量 317 → 未来起点 0/过去终点 0。\n④ targets update 删 milestones(sales_targets 无标量列、update 无子表写链,\n 透传会触发 Prisma Unknown argument;create 子表写链保留);前端\n toUpdateWire/UpdateTargetRequest 同步删。\n⑤ rma:diagnose/complete 两处 Zod + docs 删 service 从不读取的 eventInsights;\n 前端 diagnose 签名对齐后端唯一持久化键 diagnosisResult(旧\n diagnosis/faultType/severity 与后端完全错位、会被静默剥离)。\n⑥ livestream createSchedule 删冗余必填死字段 scheduledStartAt/scheduledEndAt\n (service 只读 scheduledStart/scheduledEnd,旧契约强迫调用方双发同值且第二\n 份被丢);前端读 DTO 类型同步对齐 scheduledStart/scheduledEnd(旧 *At 键\n DTO 从不返回,恒 undefined)。live:不带 *At 创建过 Zod 进入业务校验。\n\n验证:前后端 type-check 全绿;opportunities/targets/rma/livestream/inventory/\nserial-numbers 测试 192/192 通过;formrules-zod errors 0、field-payload 0/0、\nenum-consistency 无新增。\n\nBacklog 登记:rma complete 前端发送 resolution/refundAmount/returnShipping*\n与后端 completeRmaSchema(returnedItem) 错位(Detail 仅发硬编码文案,无用户\n数据损失),待定接线或清理方向。\n\nCo-Authored-By: Claude Opus 4.8 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-07-03T03:06:13-07:00"}],"HeadCommit":{"Sha1":"c4a1b8ebcc54d4a222aa030b845818ad365b950d","Message":"fix(sn/contracts): bind 接回守卫实现 + 六模块死字段契约清理批\n\n一、serial-numbers bind 接回 bindSerialNumber(bug 家族第 5 处收口)\n语义核实修正:bindSerialNumber 服务函数的 where 条件 status:'in_stock' 是\n乐观锁前置,data 实写 status:'shipped'——即「绑定即随单发货」,与 controller\n语义一致,非此前疑似的语义漂移,无需产品决策。差别是 controller 裸写版本\n缺订单/明细/客户存在性校验、缺 in_stock+未绑定乐观锁、缺 sn_bound 事件,\n且守卫实现是零调用死代码。修复:\n- controller.bind 接回 bindSerialNumber;路由挂 validate(bindSerialNumberSchema)\n (orderId/customerId 必填)。\n- 前端 api bind 签名对齐后端契约(orderId/customerId 必填 + orderItemId/\n shipmentId 可选),删除后端无写链的 contractId/assetId 死字段。\n- live 四向验证:缺 orderId→400、假订单→404 订单不存在、真绑定→200 且\n DB 直证 shipped+bound_order_id+bound_customer_id 落库、重复绑定→conflict\n 乐观锁拦截;验证后经 /return 恢复(顺带复验 restockReturned 清绑定生效)。\n- 新增 controller 回归锁定测试(断言走 bindSerialNumber 且裸 update 未被调)。\n\n二、契约清理批(六项,Zod 收下但永不落库/错位的死契约)\n① inventory 仓库:create/update schema 删 contactName/contactPhone/notes\n (warehouses 无列、mapper 显式忽略、前端不收集),mapper 忽略条目一并清。\n② opportunities:create body 删 phone/email/province/city/address/industry/\n contact_name/contact_phone 八个死字段(service 自动建客户只写 name、无\n customer_contacts 写链、前端走客户选择器不发送);update 派生自动净化;\n IM intent-analyzer 调用点同步清 undefined 占位死参数。live:带 phone 创建\n 被 strict 400 拒绝(Unrecognized key)。\n③ opportunities list startDate/endDate 接线(此前被 allowedFilterFields\n 白名单静默忽略):落创建时间区间。live:全量 317 → 未来起点 0/过去终点 0。\n④ targets update 删 milestones(sales_targets 无标量列、update 无子表写链,\n 透传会触发 Prisma Unknown argument;create 子表写链保留);前端\n toUpdateWire/UpdateTargetRequest 同步删。\n⑤ rma:diagnose/complete 两处 Zod + docs 删 service 从不读取的 eventInsights;\n 前端 diagnose 签名对齐后端唯一持久化键 diagnosisResult(旧\n diagnosis/faultType/severity 与后端完全错位、会被静默剥离)。\n⑥ livestream createSchedule 删冗余必填死字段 scheduledStartAt/scheduledEndAt\n (service 只读 scheduledStart/scheduledEnd,旧契约强迫调用方双发同值且第二\n 份被丢);前端读 DTO 类型同步对齐 scheduledStart/scheduledEnd(旧 *At 键\n DTO 从不返回,恒 undefined)。live:不带 *At 创建过 Zod 进入业务校验。\n\n验证:前后端 type-check 全绿;opportunities/targets/rma/livestream/inventory/\nserial-numbers 测试 192/192 通过;formrules-zod errors 0、field-payload 0/0、\nenum-consistency 无新增。\n\nBacklog 登记:rma complete 前端发送 resolution/refundAmount/returnShipping*\n与后端 completeRmaSchema(returnedItem) 错位(Detail 仅发硬编码文案,无用户\n数据损失),待定接线或清理方向。\n\nCo-Authored-By: Claude Opus 4.8 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-07-03T03:06:13-07:00"},"CompareURL":"luoanwu/juhi-omni-knowledge-hub/compare/da76fc5e9fcbc3f937fa2bee7743931f9b60e4db...c4a1b8ebcc54d4a222aa030b845818ad365b950d","Len":1}...
|
1783073192
|
Edit
Delete
|
|
15969
|
5
|
5
|
5
|
6
|
0
|
0
|
refs/heads/react-migration
|
0
|
{"Commits":[{"Sha1":"da76fc5e9 {"Commits":[{"Sha1":"da76fc5e9fcbc3f937fa2bee7743931f9b60e4db","Message":"docs(governance): 沉淀契约断链深挖战役经验(两个 bug 家族 + live 复现纪律)\n\nbaseline-and-experience.md 置顶新增 2026-07-01~07-03 战役经验块:\n- 核心发现:静态审计停在 Zod 边界,语义断链全在 Zod 之后(casing 错位/\n 缺列/mapper 错映射/绕守卫/路由遮蔽),深挖口径为追「Zod→prisma 写入」\n 与「筛选参数→where」两条真实链的断点。\n- Bug 家族 1「controller 绕守卫走裸 batchAction」:11 模块命中、真断链 4、\n 三查判定法(updateStatus 覆写/update 覆写/batchAction 覆写)豁免 5。\n- Bug 家族 2「静态路由被参数化路由遮蔽」:16 文件 32 处死路由全收口,\n 防回潮探测器 audit:route-shadowing 已入仓。\n- live 复现铁律:子代理 5 个「最强候选」全是假阳性(死 controller/\n BaseService 自动筛选/crud fallback 静默丢弃),改前必正负两向真请求复现。\n- 修复分类法(六种证据形态→修法映射表)、状态词汇多源漂移多数决收敛法、\n 测试防剧场增补(mock FieldMapper 须应用真实映射表)、环境坑增补\n (rogue next 遮蔽 3000/Prisma client 重启/非交互迁移纪律)。\n\nCo-Authored-By: Claude Opus 4.8 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-07-03T02:46:55-07:00"},{"Sha1":"1329d688e027093bb5a1157466cef5cfdfa0513f","Message":"fix(routes): 全仓收口 32 处路由遮蔽死路由,新增 route-shadowing 审计防回潮\n\n承接 supply-chain 采购单批量路由被 /:id 吞掉的发现(fb706e38d6),写模拟\nExpress 顺序匹配的扫描器全仓核查:同一 routes 文件内,先注册的参数化路由\n(/:id...)会吞掉后注册的静态段路由(/batch、/export、/stats、/calendar、\n/today、/templates 等),使其永远不可达——调用方拿到的是详情 handler 的\nPRISMA_P2023/404(静态段被当 UUID 传给 findFirst)。\n\n实测 16 个文件 32 处真死路由(live 抽验 today/stats/calendar 均复现 P2023),\n覆盖:ad-campaigns 批量启停、campaign-targets/contract-templates/tickets/\npartner-customers/social-interactions 批量删除、knowledge-capture 批量审批+\n规则统计、lead-qualification 批量评分/认定、livestream-schedules 日历/今日、\nmarketing 归因 5 个报表端点、satisfaction 响应导出、social-posts 日历/批量\n发布、cash-flow 高风险付款行为、geo-keywords 导出、inventory 盘点行批量、\nsupply-chain 供应商批量删除。\n\n修复:全部静态路由前移到对应参数化路由之前(纯注册顺序移动,handler/权限/\nvalidate schema 一律未动),每处补中文注释说明顺序约束。\n\n防回潮:新增 scripts/audit-route-shadowing.ts(pnpm run audit:route-shadowing),\n模拟 Express 逐段匹配、已处理 :id(regex) 约束段(UUID 正则不吞 batch,剔除\n7 处假阳性);任何新增遮蔽退出码 1,报告写 reports/route-shadowing-audit.latest.json。\n暂未注册 audit-registry(避免触发 reports-missing-zero,接入棘轮由治理口径决定)。\n\n验证:重扫 361 个 routes 文件 0 遮蔽;backend type-check 全绿;live 抽验 10\n端点全部复活(3 处 P2023→success、attribution 5 端点 200、2 个 export 200);\nroute-registration 审计重复挂载 0。\n\nCo-Authored-By: Claude Opus 4.8 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-07-03T02:39:19-07:00"},{"Sha1":"fb706e38d6ba2c08bcea5e43c0da60db2b328e7c","Message":"fix(sn/supply-chain/content-templates): 全仓收口「controller 绕守卫走裸 batchAction」bug 家族\n\n承接 content-creation(ad0aff1667)后全仓扫描 batchAction('update_status')\n家族(11 模块命中),逐模块三查(updateStatus 覆写守卫 / update 覆写守卫 /\nbatchAction 覆写)+ live 复现判责,真断链 3 处全部修复:\n\n- serial-numbers(与 content-creation 完全同族):activate/return/scrap/\n batch-activate 四个动作走裸 batchAction,绕过 assertTransition 守卫(红线 2),\n 且 activate 的 customerId/orderId/activatedAt 被丢弃(客户绑定/激活时间静默\n 丢失、无生命周期事件);带守卫的 service.activate/restockReturned/\n scrapSerialNumber 全是死代码。现全部接回守卫实现。\n live:activate 带 customerId/activatedAt 真落库并读回;activated→return\n 被守卫 400 拦截。新增 4 个 controller 回归锁定测试(断言走守卫方法且\n batchAction 未被调用)。\n- supply-chain 采购单批量确认/取消:两层断链叠加——\n ① batch 路由注册在 /:id/confirm、/:id/cancel 之后,Express 把 \"batch\" 当\n :id,前端 POST /purchase-orders/batch/confirm|cancel 恒 400(批量确认/取消\n 一直是假功能);已把三条 batch 路由前移到 /:id/* 之前。\n ② handler 走裸 batchAction 绕过 canTransitionPurchaseOrder;已改为逐单走\n confirmOrder/cancelOrder 守卫方法并汇总 successCount/failedIds。\n live 混合场景:created 单→confirmed 放行、cancelled 单保持原状进 failedIds。\n- content-templates 记录使用:POST /:id/use 走 batchAction(metadata:{lastUsedAt})\n ——metadata 被忽略、status 为 undefined,什么都不写,前端列表「使用次数」\n 恒 0(死指标)。现实现 service.recordUse(usage_count 自增 + 租户守卫)。\n live:连打两次 usageCount 0→2。顺手修齐既存测试漂移(getTemplateStats 断言\n inactive→archived,对齐 service 真实返回键)。\n\n已核实豁免(live/码面证据,防误改):leads(update 覆写带 canTransitionLead,\n批量状态未绕守卫)、alliance-merchants/products(update 覆写带守卫)、\ncontent-library(batchAction 覆写已专门处理 metadata.categoryId → 真实\nbatchMoveCategory)、marketing-automation(paused 开关型无拓扑)。\n\nbackend type-check 全绿;serial-numbers/supply-chain/content-templates 测试\n93/93 通过;route-registration 审计重复挂载 0。\n\nCo-Authored-By: Claude Opus 4.8 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-07-03T02:02:40-07:00"},{"Sha1":"ad0aff1667f4426638d853309430b89468af8966","Message":"fix(content-creation): 视图驱动补全提交审核链路,接回被绕过的状态机守卫\n\n深挖发现该模块存在三层叠加断链:\n1. 红线 2 违反:controller 的 start/submit/complete/cancel/assign 全部绕过\n service 守卫方法,走裸 batchAction('update_status')——状态机从未拦截过任何\n 非法转换(live 实测 draft→pending_review 任意跳转全通);submit 的 req.body\n 被塞进 batchAction 忽略的 metadata payload,content/outputUrls/note 全部丢弃;\n assign 连 status 都不传(等于什么都不干)。带守卫+流程启动的 service.submit\n 是零调用死代码(与 tickets 4d854c3a 同一 bug 家族)。\n2. 状态词汇三源漂移:machine/statuses.ts 用 pending/assigned/submitted/revision\n (纸面定义、库中从未有数据),运行态(DB 31 行、service 写链、前端\n CONTENTDRAFT_STATUS_MAP)用 draft/in_progress/pending_review/completed/\n cancelled;schema 的 CREATION_STATUS 还混有第三套 review/approved/active 死值\n (其注释宣称的\"控制器实写 review/approved\"经核对与代码不符)。\n3. 数据模型缺位:submitCreationSchema 接受的 content(max 100000)/outputUrls/note\n 无处持久化——content 无列、outputUrls 被 mapper 错映射到 UUID 列\n output_item_id(该列为 ai-assist context-provider 真实读取,不得占用)、\n note 无写链。\n\n修复(按红线 4 视图驱动:视图需求→字段提取→数据模型→迁移→全栈实现):\n- 状态机收敛到运行态词汇(红线 0):machine 拓扑/XState states/statuses.ts/\n schema 枚举统一为 draft→in_progress→pending_review→completed(+cancelled、\n 审核退回 pending_review→in_progress);assign 只设 assigned_to 不再是独立状态。\n- 迁移 20260703030000:content_creations 补 content TEXT / output_urls JSONB\n default [] / submit_note VARCHAR(1000);mapper 修正 outputUrls→output_urls、\n 新增 submitNote→submit_note,解除对 output_item_id 的错误占用。\n- service.submit 持久化三字段并流转 pending_review(勿用 BUSINESS_STATUS.\n PENDING_APPROVAL='pending_approval' 错词);补 complete/cancel 守卫方法;\n controller 五个动作全部接回 service 守卫链。\n- 前端 Index:in_progress 行新增「提交审核」Modal(正文必填/成果链接多行 URL/\n 提交说明),完成按钮收窄到 pending_review 行、取消按钮排除 pending_review\n (旧条件在新守卫下会 400)。\n\n真实端到端验证(运行中后端 + 真实 DB):\n- 修复前:submit 200 但 content/outputUrls/note 全丢(DB 直证 metadata={})、\n draft 直接 submit 也 200(守卫失效)。\n- 修复后:draft→submit 正确 400(错误信息含合法目标)、pending_review→cancel\n 正确 400;start→submit 后 content/output_urls/submit_note API+DB 双证落库、\n output_item_id 未污染;complete 落 completedAt。\n\n测试:machine 测试重写 17/17;service 测试补 submit 持久化锁定(mock mapper\n改为应用真实映射表,锁 outputUrls→output_urls 配置本身)7/7;前端 RTL 补提交\n审核 Modal 用例并同步行按钮断言 2/2。前后端 type-check 全绿;sm-drift 审计\ndivergent/duplicate/topology 全 0、unresolved 9 未涨;enum/formrules/\nfield-payload/prisma-zod 审计全绿。\n\nCo-Authored-By: Claude Opus 4.8 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-07-03T01:36:49-07:00"},{"Sha1":"9ff572ee948d646916ba12fb3b3f084f2bd05a30","Message":"fix(crm-activities): 落地文档承诺的幂等能力,同 idempotencyKey 不再重复建活动\n\ncrm-activities create 的 Zod schema 接受 idempotencyKey、docs 明确宣称\n「支持幂等性(通过 idempotencyKey 字段)」,但此前无列无逻辑:字段经 crud\nfallback 静默丢弃(不 500,也不去重),相同 key 重复提交会产生多条活动记录——\n契约/文档与实现不符(假契约)。\n\n修复(落地承诺,补列+接线):\n- 迁移 20260703020000:crm_activities 补 idempotency_key VARCHAR(100) +\n 租户内唯一索引 (tenant_id, idempotency_key);Postgres 多 NULL 互异,\n 存量行不冲突;folder 真源 + schema.prisma 镜像同步。\n- service.create:命中既有 idempotency_key 直接返回既有活动(去重);\n 并发下唯一约束触发 P2002 时兜底重取既有,避免竞态重复。\n\n真实端到端验证(运行中后端 + 真实 DB):\n- 修复前同 key 两次得两条不同记录(去重失效复现)。\n- 修复后同 key 两次返回同一 id,DB 仅 1 行且 idempotency_key 落库。\n\n新增回归锁定单测:相同 idempotencyKey 命中既有则返回既有、断言 create 未被调用。\ncrm-activity.service.test.ts 9/9 通过;backend type-check 全绿;\nprisma-zod 契约审计 PASS。\n\nCo-Authored-By: Claude Opus 4.8 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-07-03T01:07:46-07:00"}],"HeadCommit":{"Sha1":"da76fc5e9fcbc3f937fa2bee7743931f9b60e4db","Message":"docs(governance): 沉淀契约断链深挖战役经验(两个 bug 家族 + live 复现纪律)\n\nbaseline-and-experience.md 置顶新增 2026-07-01~07-03 战役经验块:\n- 核心发现:静态审计停在 Zod 边界,语义断链全在 Zod 之后(casing 错位/\n 缺列/mapper 错映射/绕守卫/路由遮蔽),深挖口径为追「Zod→prisma 写入」\n 与「筛选参数→where」两条真实链的断点。\n- Bug 家族 1「controller 绕守卫走裸 batchAction」:11 模块命中、真断链 4、\n 三查判定法(updateStatus 覆写/update 覆写/batchAction 覆写)豁免 5。\n- Bug 家族 2「静态路由被参数化路由遮蔽」:16 文件 32 处死路由全收口,\n 防回潮探测器 audit:route-shadowing 已入仓。\n- live 复现铁律:子代理 5 个「最强候选」全是假阳性(死 controller/\n BaseService 自动筛选/crud fallback 静默丢弃),改前必正负两向真请求复现。\n- 修复分类法(六种证据形态→修法映射表)、状态词汇多源漂移多数决收敛法、\n 测试防剧场增补(mock FieldMapper 须应用真实映射表)、环境坑增补\n (rogue next 遮蔽 3000/Prisma client 重启/非交互迁移纪律)。\n\nCo-Authored-By: Claude Opus 4.8 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-07-03T02:46:55-07:00"},"CompareURL":"luoanwu/juhi-omni-knowledge-hub/compare/7942f4d3803ea963e31be6aef86cd52dbd564635...da76fc5e9fcbc3f937fa2bee7743931f9b60e4db","Len":9}...
|
1783072038
|
Edit
Delete
|
|
15824
|
5
|
5
|
5
|
53
|
0
|
0
|
refs/heads/main
|
1
|
{"Commits":[{"Sha1":"a146df273 {"Commits":[{"Sha1":"a146df273f4b5ba09c490cb67458ae8dc8c2fc12","Message":"深度优化:治理缺口闭环 + 规模能力 + 双审计修复\n\n治理:\n- check:schema 泛化为 ENTITIES 登记表,SongJobState 纳入单源门禁(关闭基线 OPEN 项)\n- 端口口径统一:运行时真源 3201,提交层默认值(CLAUDE.md/.env.example/next.config)对齐消除双源漂移\n- .env.example 补齐 ACESTEP_API_URL/SONG_OUTPUT_DIR/SONG_POLL_*/SONG_STALL_*/SONG_SWITCH_* 全量配置\n\n规模与能力(后端审计修复):\n- 真实进度透出:SongJob.progress 列,worker 轮询回写(state 前置条件防覆盖终态),\n 成功置 1、重试清空;实测 0.68→0.8→1 全程可见\n- DELETE /api/songs/:id:终态与 QUEUED 可删(SUBMITTED 409),级联历史 + outbox\n songJob.deleted 事件 + 产物目录清理;实测 200/404/目录已清\n- GET /api/songs 强制分页(take 默认 50 上限 200 + skip,非法参数 400)\n- outbox 已投递记录 7 天保留期每小时清理(表不再无限增长)\n- persistArtifacts 半落盘防护:任一候选下载失败即清整目录并走失败重试,不卡 SUBMITTED\n- downloadAudio 加 10 分钟超时 + 500MB 大小护栏(流式计数)\n\n前端(审计修复):\n- 播放器换源原子性(先停旧源)+ play() 异常捕获置回暂停态 + 删除正在播放的歌时停播并释放 blob\n- 作品库删除按钮(确认后删,生成中隐藏);生成中 chip 与创作页进度条显示真实百分比\n- 播放控制补 aria-label\n\n测试:songs 集成 19→24(删除/跨租户/分页钳制/进度回写/半落盘清理),全仓 45 tests 绿,\n门禁 8 项 + 棘轮通过。\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-07-02T23:00:58-07:00"},{"Sha1":"b49310ecdcf2532cb430c13cf8e97faad0b72a78","Message":"chore: ignore local git bundle artifact\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-07-02T22:36:11-07:00"}],"HeadCommit":{"Sha1":"a146df273f4b5ba09c490cb67458ae8dc8c2fc12","Message":"深度优化:治理缺口闭环 + 规模能力 + 双审计修复\n\n治理:\n- check:schema 泛化为 ENTITIES 登记表,SongJobState 纳入单源门禁(关闭基线 OPEN 项)\n- 端口口径统一:运行时真源 3201,提交层默认值(CLAUDE.md/.env.example/next.config)对齐消除双源漂移\n- .env.example 补齐 ACESTEP_API_URL/SONG_OUTPUT_DIR/SONG_POLL_*/SONG_STALL_*/SONG_SWITCH_* 全量配置\n\n规模与能力(后端审计修复):\n- 真实进度透出:SongJob.progress 列,worker 轮询回写(state 前置条件防覆盖终态),\n 成功置 1、重试清空;实测 0.68→0.8→1 全程可见\n- DELETE /api/songs/:id:终态与 QUEUED 可删(SUBMITTED 409),级联历史 + outbox\n songJob.deleted 事件 + 产物目录清理;实测 200/404/目录已清\n- GET /api/songs 强制分页(take 默认 50 上限 200 + skip,非法参数 400)\n- outbox 已投递记录 7 天保留期每小时清理(表不再无限增长)\n- persistArtifacts 半落盘防护:任一候选下载失败即清整目录并走失败重试,不卡 SUBMITTED\n- downloadAudio 加 10 分钟超时 + 500MB 大小护栏(流式计数)\n\n前端(审计修复):\n- 播放器换源原子性(先停旧源)+ play() 异常捕获置回暂停态 + 删除正在播放的歌时停播并释放 blob\n- 作品库删除按钮(确认后删,生成中隐藏);生成中 chip 与创作页进度条显示真实百分比\n- 播放控制补 aria-label\n\n测试:songs 集成 19→24(删除/跨租户/分页钳制/进度回写/半落盘清理),全仓 45 tests 绿,\n门禁 8 项 + 棘轮通过。\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-07-02T23:00:58-07:00"},"CompareURL":"luoanwu/song-generation/compare/36288790cd7118c7109effc2de997f147665531d...a146df273f4b5ba09c490cb67458ae8dc8c2fc12","Len":2}...
|
1783058922
|
Edit
Delete
|
|
15815
|
5
|
5
|
5
|
53
|
0
|
0
|
refs/heads/main
|
1
|
{"Commits":[{"Sha1":"36288790c {"Commits":[{"Sha1":"36288790cd7118c7109effc2de997f147665531d","Message":"feat: improve song studio mobile playback and engine flow\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-07-02T22:30:05-07:00"}],"HeadCommit":{"Sha1":"36288790cd7118c7109effc2de997f147665531d","Message":"feat: improve song studio mobile playback and engine flow\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-07-02T22:30:05-07:00"},"CompareURL":"luoanwu/song-generation/compare/ff003fc3f1a79b3d645cc67ff77f5f806caaebdc...36288790cd7118c7109effc2de997f147665531d","Len":1}...
|
1783056773
|
Edit
Delete
|
|
15806
|
5
|
5
|
5
|
53
|
0
|
0
|
refs/heads/main
|
1
|
{"Commits":[{"Sha1":"ff003fc3f {"Commits":[{"Sha1":"ff003fc3f1a79b3d645cc67ff77f5f806caaebdc","Message":"精准复刻声浪原型(歌曲生成工作台.html)+ 修复中文显示\n\n从设计原型(内嵌 dc 模板)提取精确 token 与交互逻辑逐项对齐:\n\n- 中文显示:字体栈改为 Space Grotesk(拉丁)+ Noto Sans SC(中文)+\n Space Mono(等宽标签,仅拉丁/数字)——中文不再落进默认等宽字体\n- 主题色精确对齐:强调色 lime #d6ff41(原误判为琥珀)、coral/green/violet、\n 四级底色 #0a0a0c/#131317/#1a1a20/#212129,登记为 tailwind sonic.* token\n- 风格标签改原型 chips 模型:已选 chips(×移除)+ 输入回车添加 +\n 15 个中英预设速选;默认 chips 与原型一致\n- 场景模板扩至原型全部 9 个(含 KTV 合唱嗨歌/深情抒情/失恋买醉/热血燃曲/\n 怀旧金曲),渐变图标、EN 分类、完整示例歌词;载入=覆盖歌词与标签(原型语义)\n- 作品库精准复刻:46 根播种伪随机波形、播放键卡片态、底部播放条\n (真实 \u003caudio\u003e 驱动:进度/暂停/上下首/EQ 动画)、编辑载入二次生成、导出\n- ⚡ 生成歌曲 lime 发光按钮;生成中状态条(真实后端状态,不做假进度)\n- 全局 toast(载入场景/提交/导出/重试提示)\n\n浏览器实测:字体加载、9 场景卡、KTV 场景载入+toast、播放条真音频计时均通过。\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-07-02T07:30:55-07:00"},{"Sha1":"03f2329430ddb5463595da6fcfba500106213d57","Message":"按「声浪 SONIC」设计稿重构交互界面\n\n信息架构从单页升级为工作台三视图(依据 歌曲自动生成界面.zip 设计稿):\n\n- 深色主题(近黑底/暗面板/amber 强调),layout 全局启用 dark\n- 顶栏:声浪品牌 + ENGINE 徽章(当前模型,切换中标注)+ Connected/uptime\n + WebSocket/SSE 传输切换\n- 左侧图标导航:创作 / 场景 / 作品库 + 渐变头像\n- 创作页:/ CREATE 面包屑 + 引擎模型卡(含异步切换全状态)+ 歌词(结构标记\n 提示/字数统计)+ 风格标签三组速选 chips(点击拼进 prompt)+ 时长 + 生成\n- 场景模板页:4 个预设配方卡(广告片/短视频/KTV/门店 BGM),一键填入创作\n 面板(歌词非空不覆盖)\n- 作品库页:任务列表(状态 chip/试听/下载/重试/尝试次数)\n- 右侧 Live Events 面板(mono 风格,songJob 事件按结果着色)\n- 删除被替代的 SongsPanel;框架 demo 组件保留在库中但不再挂载\n\n浏览器实测:三视图渲染、场景→创作联动(tags/时长/歌词骨架)均通过。\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-07-02T07:19:32-07:00"},{"Sha1":"117953b4b4c75a2873b0e19013f5b089665817c9","Message":"修复模型切换 500:改异步切换 + 轮询确认 + 切换期间延迟派发\n\n用户实测切换 acestep-v15-base 报 Internal Server Error。根因:把 GB 级模型\n下载塞进单个同步 HTTP 请求,Node fetch 底层响应头超时(~5 分钟)早于下载完成,\n超时异常未映射 HTTP 语义 → 裸 500(引擎侧下载其实已开始,连接死了下载也断)。\n\n- switchModel 改异步:校验(引擎存在/无生成中任务/引擎可达/无进行中切换)后\n 立即返回 switching 状态;后台触发 /v1/init 并轮询 loaded 列表确认目标模型\n 就位(不以长请求的成败为准),超时如实记入 lastSwitchError\n- GET models 响应新增 switching / lastSwitchError;重复切换 409 SWITCH_IN_PROGRESS\n- worker 新增切换期间守卫:延迟 30s 重派而不烧 attempts(enqueue 支持 delay)\n- 前端:切换中徽章 + 按钮禁用 + 5s 密集轮询 + 上次失败原因展示\n- 新增 2 个异步切换测试(完成路径/进行中拒绝+延迟派发+超时留痕),19/19 绿\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-07-02T06:11:29-07:00"},{"Sha1":"2b3b677ca134fa03e3e3b476a1b2919102a54b58","Message":"引擎抽象层:EngineClient 端口 + EngineRegistry 路由\n\n为接入未来引擎(GPU 服务器 ACE-Step、YuE wrapper、新模型)铺路:\n\n- engine-client.interface.ts:引擎端口(任务提交/轮询/下载/模型管理)+\n 跨引擎语义约定(任务真源在 SongJob 表、未知任务号返回空、生成中透出 progress)\n- engine.registry.ts:SongJob.engine → 适配器的唯一路由点(SONG_DEFAULT_ENGINE)\n- AceStepClient 成为第一个实现,模型目录与能力声明(supportedTaskTypes)内聚到适配器\n- contracts/prisma 增加 engine 字段(默认 acestep);未注册引擎、引擎不支持的\n taskType 在 create 入口 400 拒绝,不入队\n- models/switch 端点支持 ?engine=;切换守卫按引擎计数 SUBMITTED\n- 新增 3 个抽象层测试(未注册引擎拒绝/能力校验/路由),31 tests 绿\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-07-02T05:58:18-07:00"},{"Sha1":"358df6e7dee8d9fdd0998d70cc4eb62884c0bed7","Message":"模型切换:引擎热切换 + 按任务选模型\n\n- GET /api/songs/models:DiT 可加载目录(镜像引擎 model_download.py,登记在\n 适配层唯一入口)× /v1/models 已加载状态;引擎不可达时诚实降级 engineUp=false\n- POST /api/songs/models/switch:代理 /v1/init 热切换默认模型;有 SUBMITTED\n 任务时 409 ENGINE_BUSY(重载会打断在跑生成);未下载模型引擎先下载(同步等待)\n- 按任务 model 参数端到端直通(contracts→prisma 列→引擎入参);引擎对未加载\n 模型会静默回退默认——产物新增 ditModel 如实记录实际使用的模型\n- 前端 SongsPanel 新增引擎模型条:当前模型徽章 + 切换下拉(标注已加载/需下载)\n + 生成中禁用切换\n- 新增 3 个真派发测试(模型直通/切换守卫/降级),28 tests 绿,pnpm check 全绿\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-07-02T05:24:25-07:00"}],"HeadCommit":{"Sha1":"ff003fc3f1a79b3d645cc67ff77f5f806caaebdc","Message":"精准复刻声浪原型(歌曲生成工作台.html)+ 修复中文显示\n\n从设计原型(内嵌 dc 模板)提取精确 token 与交互逻辑逐项对齐:\n\n- 中文显示:字体栈改为 Space Grotesk(拉丁)+ Noto Sans SC(中文)+\n Space Mono(等宽标签,仅拉丁/数字)——中文不再落进默认等宽字体\n- 主题色精确对齐:强调色 lime #d6ff41(原误判为琥珀)、coral/green/violet、\n 四级底色 #0a0a0c/#131317/#1a1a20/#212129,登记为 tailwind sonic.* token\n- 风格标签改原型 chips 模型:已选 chips(×移除)+ 输入回车添加 +\n 15 个中英预设速选;默认 chips 与原型一致\n- 场景模板扩至原型全部 9 个(含 KTV 合唱嗨歌/深情抒情/失恋买醉/热血燃曲/\n 怀旧金曲),渐变图标、EN 分类、完整示例歌词;载入=覆盖歌词与标签(原型语义)\n- 作品库精准复刻:46 根播种伪随机波形、播放键卡片态、底部播放条\n (真实 \u003caudio\u003e 驱动:进度/暂停/上下首/EQ 动画)、编辑载入二次生成、导出\n- ⚡ 生成歌曲 lime 发光按钮;生成中状态条(真实后端状态,不做假进度)\n- 全局 toast(载入场景/提交/导出/重试提示)\n\n浏览器实测:字体加载、9 场景卡、KTV 场景载入+toast、播放条真音频计时均通过。\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-07-02T07:30:55-07:00"},"CompareURL":"","Len":7}...
|
1783052933
|
Edit
Delete
|
|
15805
|
5
|
5
|
5
|
53
|
0
|
0
|
refs/heads/main
|
1
|
|
1783052933
|
Edit
Delete
|
|
15804
|
5
|
5
|
5
|
54
|
0
|
0
|
refs/heads/main
|
1
|
{"Commits":[{"Sha1":"f98acd04c {"Commits":[{"Sha1":"f98acd04c6fe50956d8cf89552a352c8893f037d","Message":"chore(reports): refresh runtime acceptance evidence\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-07-02T21:23:52-07:00"},{"Sha1":"1dc0c63efdf29c804f63ca2849e4e570a9cb9120","Message":"feat: harden runtime HTTP acceptance\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-07-02T21:23:06-07:00"},{"Sha1":"f8ff9b87e68449c3a4d226bf55bbb73180d7c4e8","Message":"feat: harden base framework governance\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-07-02T01:31:50-07:00"},{"Sha1":"4146021846591d0eb7b5cd8b797c198c00b6aec2","Message":"Add Capacitor export config and absolute API base\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-06-22T20:52:41-07:00"},{"Sha1":"3ad7df35c22d175062b25f5a0456046e65582136","Message":"feat(skills): React+Next.js 前端技能四件套纳入本仓 .claude/skills/\n\n把对应 Vue3+Element Plus 参考样板深化复刻的 React 系技能落入仓库版本管理:\n- frontend-view-react:Next.js App Router + shadcn/ui 列表/表单/详情页 + 完善页面体检清单\n- frontend-api-react:feature api 纯函数 + TanStack Query Hook + Query Key 工厂\n- fullstack-7layer-react:全栈七层(后端 1~5 同源,前端 6~7 用 React 栈)\n- zustand-store:仅 UI/全局态,落实「服务端数据绝不进 Zustand」红线\n\n锚定 docs/standards/frontend-standard.md 与 apps/web 实际运行栈;contracts 入参 Zod\n单源贯穿前端 RHF。CLAUDE.md 同步标注技能已随仓库管理。\n\nCo-Authored-By: Claude Opus 4.8 (1M context) \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-06-14T19:40:51-07:00"}],"HeadCommit":{"Sha1":"f98acd04c6fe50956d8cf89552a352c8893f037d","Message":"chore(reports): refresh runtime acceptance evidence\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-07-02T21:23:52-07:00"},"CompareURL":"luoanwu/base-framework/compare/7e269a0aa062715c1751b544cce7e7a8e8bd8bc7...f98acd04c6fe50956d8cf89552a352c8893f037d","Len":10}...
|
1783052672
|
Edit
Delete
|
|
15803
|
5
|
5
|
5
|
54
|
0
|
0
|
refs/heads/main
|
1
|
|
1783052672
|
Edit
Delete
|
|
15802
|
5
|
1
|
5
|
54
|
0
|
0
|
|
1
|
|
1783052658
|
Edit
Delete
|
|
15801
|
5
|
1
|
5
|
53
|
0
|
0
|
|
1
|
|
1783052283
|
Edit
Delete
|
|
15656
|
5
|
5
|
5
|
51
|
0
|
0
|
refs/heads/main
|
1
|
{"Commits":[{"Sha1":"ad491b380 {"Commits":[{"Sha1":"ad491b380b573d1f4389aa0e3a1aae0eceb467d8","Message":"docs(prd): 产品设计PRD v1.1 — 全量PRD初版 + 产品缺失分析扩展\n\n- 新增《尤克特拉产品设计PRD.md》作为产品设计统摄真源(十三章:定位/市场/用户/商业模式/六步闭环/IA 40屏/13功能域/NFR/数据模型/诚实边界/路线图/风险/附录)\n- v1.1 扩展 §12.2 产品缺失分析:新发现商业化闭环断头四项(付费墙无tier守卫/无支付计费/无自助注册/无改密),\n 含代码证据 + B触点/C数据/D执行/E增长五组缺口 + 按阶段闸门的优先级判定\n- 规模口径锚定 docs-metrics 快照 0a13474(153端点/32模块/64model/40屏),诚实三铁则写入顶部版本块\n- CLAUDE.md 文档索引登记 PRD\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-07-02T03:12:53-07:00"}],"HeadCommit":{"Sha1":"ad491b380b573d1f4389aa0e3a1aae0eceb467d8","Message":"docs(prd): 产品设计PRD v1.1 — 全量PRD初版 + 产品缺失分析扩展\n\n- 新增《尤克特拉产品设计PRD.md》作为产品设计统摄真源(十三章:定位/市场/用户/商业模式/六步闭环/IA 40屏/13功能域/NFR/数据模型/诚实边界/路线图/风险/附录)\n- v1.1 扩展 §12.2 产品缺失分析:新发现商业化闭环断头四项(付费墙无tier守卫/无支付计费/无自助注册/无改密),\n 含代码证据 + B触点/C数据/D执行/E增长五组缺口 + 按阶段闸门的优先级判定\n- 规模口径锚定 docs-metrics 快照 0a13474(153端点/32模块/64model/40屏),诚实三铁则写入顶部版本块\n- CLAUDE.md 文档索引登记 PRD\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-07-02T03:12:53-07:00"},"CompareURL":"luoanwu/yggdrasil-local-life-tools/compare/6c1f58f4c1c7dce5c443bbe14d34521de581cbf6...ad491b380b573d1f4389aa0e3a1aae0eceb467d8","Len":1}...
|
1782987176
|
Edit
Delete
|
|
15567
|
5
|
5
|
5
|
50
|
0
|
0
|
refs/heads/codex/p0-edge-governance
|
1
|
{"Commits":[],"HeadCommit":{"S {"Commits":[],"HeadCommit":{"Sha1":"87bcbf6ebbf43784219f8e6a5a40d6cd8fc3041c","Message":"chore(models): track model weights with lfs\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-07-02T01:00:28-07:00"},"CompareURL":"luoanwu/juhi-song-library-alignment/compare/main...87bcbf6ebbf43784219f8e6a5a40d6cd8fc3041c","Len":0}...
|
1782983510
|
Edit
Delete
|
|
15566
|
5
|
5
|
5
|
50
|
0
|
0
|
refs/heads/codex/p0-edge-governance
|
1
|
|
1782983510
|
Edit
Delete
|
|
15549
|
5
|
5
|
5
|
50
|
0
|
0
|
refs/heads/main
|
1
|
{"Commits":[{"Sha1":"87bcbf6eb {"Commits":[{"Sha1":"87bcbf6ebbf43784219f8e6a5a40d6cd8fc3041c","Message":"chore(models): track model weights with lfs\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-07-02T01:00:28-07:00"},{"Sha1":"b7aa37d866f7d33bedbd680cabc5cfd0038e359e","Message":"feat(lyra): harden validation queue acceptance\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-07-02T00:37:29-07:00"},{"Sha1":"d650b66cb8913288b66b796d00c13751802588e3","Message":"chore: media-sync lag 平滑 + 门禁/文档/报告快照同步(工作树聚合提交)\n\n非本轮 Track A/B 作者的并发在制改动 + 报告/曲库 manifest churn,聚合提交上传:\n- LyraWorkstation.tsx / lyra-data.ts:媒体同步 lag 平滑(normalizeMediaSyncLagMs +\n 节流 + 仅暂停态回读),降低抖动\n- scripts/check-{experience,http-ui,lyra-business,ui-clicks}.mjs:门禁模式微调\n- docs/product-prd.md、reports/*.latest.json、reports/product-audit-prd-20260701、\n 曲库 stem-manifest:快照/文案同步(含 project-gap-analysis P1-2 BS-RoFormer qingtian ready)\n\n验证:web+api tsc 0 错、check:governance-docs 通过、check:{lyra-business,experience,\nfrontend-contracts,analysis} 静态门禁全绿。\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-07-01T19:48:00-07:00"},{"Sha1":"ab7d6c4bf6431eb83fe45443edb7cd60757973aa","Message":"test(ui-clicks): 稳定鼓件 console 测试竞态 + 补 analysis-runs gitignore + 治理回灌\n\n- check-ui-click-acceptance.mjs:console 测试在断言初始窗口鼓件状态前,先 waitForFunction\n 等鼓件 lane 段渲染出任一 cue/跳转/间隙 marker(lane 在 stem 就绪徽标之后挂载,Track A\n mount 成本放大了这个 latent race)。修后 check:ui-clicks 稳定 14/14\n- .gitignore 补 reports/analysis-runs/(analysis/run 每次运行产物,不入库)\n- CLAUDE.md 回灌 DD-步骤-fix 关闭记录(Track A 七步真实操作+重置 + Track B producer 翻转),\n 含活体 /analysis/run 424 blocked 冒烟与 check:ui-clicks 14/14 证据、producer runtime\n spawnSync 残留登记\n\n验证:check:ui-clicks 14/14(JUHI_WEB_URL=3000 + 当前代码全栈)、check:governance-docs 通过。\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-07-01T18:50:17-07:00"},{"Sha1":"ae55256379c94671172dad140d495e999bacf3b4","Message":"feat(analysis): 步骤3 本仓真跑 beat/chord/structure producer + 门禁翻转(Track B)\n\n翻转 A1 import-only 边界:本仓接入真实整轨分析 producer(runtime 需用户显式批准安装,\n未装诚实 blocked,绝不假绿)。\n\n- workers/{beat-this,btc-chords,songformer}/scripts/run_*.py:调本机 models/{SongFormer,\n BTC-ISMIR19} + beat_this-final0.ckpt 做真实推理,输出合 contracts 消费 schema\n (songformer.sections / beat-this.report / btc-chords,秒制)。全部 guarded import:\n 缺依赖时 --smoke / 真跑诚实报 {status:blocked, issues},不抛未捕获异常\n- POST /library/songs/:id/analysis/run(tenant-scoped)+ contracts analysisRunRequest/Result;\n 子进程执行集中在 apps/api-fastify/src/modules/analysis-producers(library.service 不直接\n 起子进程,守住 check:experience 的 EDGE/library 请求路径规则);覆盖写 曲库/\u003csong\u003e/分析/*.json\n- check-analysis-artifacts.mjs 翻转:移除「禁止 producer 文件」红守卫,改为「producer 脚本\n 必须存在 + --smoke 可运行(缺失/崩溃/输出不可解析即红;blocked=runtime 未装是诚实态)+\n 触发端点接线」;report 加 producerRuntime 段(当前 ready 0 / blocked 3)\n- 前端步骤3「运行歌曲分析 (beat/chord/structure)」按钮 + 状态串(runStemSeparation 同款\n ok/blocked 诚实呈现);api.ts runSongAnalysis helper\n- 治理回灌:docs/model-boundaries.md(import-only → 有 producer,runtime 经批准安装前 blocked)、\n CLAUDE.md A1 边界翻转 + 真源地图 + 基线表 analysis-artifacts 行\n\n验证:pnpm check exit 0、web+api tsc 0 错、Fastify 真实 DB 63+1 tests(新增 analysis/run\n blocked 路径 + tenant 守卫)、三 producer --smoke 均诚实 blocked、门禁有牙(隐藏 producer\n 脚本→红,还原→绿)。边界:producer runtime 未装(外部代码执行需用户显式批准),当前不产出。\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-07-01T18:34:52-07:00"}],"HeadCommit":{"Sha1":"87bcbf6ebbf43784219f8e6a5a40d6cd8fc3041c","Message":"chore(models): track model weights with lfs\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-07-02T01:00:28-07:00"},"CompareURL":"luoanwu/juhi-song-library-alignment/compare/dc908e7f6ad95ec3d1714681645cb710e622941b...87bcbf6ebbf43784219f8e6a5a40d6cd8fc3041c","Len":10}...
|
1782983352
|
Edit
Delete
|
|
15548
|
5
|
5
|
5
|
50
|
0
|
0
|
refs/heads/main
|
1
|
|
1782983352
|
Edit
Delete
|
|
15498
|
5
|
5
|
5
|
51
|
0
|
0
|
refs/heads/main
|
1
|
{"Commits":[{"Sha1":"6c1f58f4c {"Commits":[{"Sha1":"6c1f58f4c1c7dce5c443bbe14d34521de581cbf6","Message":"fix(auth): enforce refresh token single-use\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-07-01T19:52:00-07:00"},{"Sha1":"757fc19dca988dd04267e33145f1856f840992ab","Message":"docs: 项目进展分析(完成/未完成/待优化/待修BUG) + README 分析文档索引\n\n进展分析:六步闭环通4.5步、automation 4孤岛未接、真AI/平台/支付均Mock、\n安全运维层空白;确认真BUG:refresh竞态无事务、revokeAll死代码损坏、JWT min(8)。\nREADME 加 2026-07-01 四份分析文档索引(治理/技术体检/进展/商业)交叉导航。\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-07-01T17:40:12-07:00"},{"Sha1":"0e5d32056f62c86524f780fc97e189f276ea9e5d","Message":"fix(caliber): 前后端字段口径全量收口 — 平台大写泄漏×2 + 手写/100×6 清零,棘轮门禁上线\n\n后端:metrics getPlatforms / merchant 概览 platform 出口补 toId() 小写(前端 PLATFORMS 查表不再渲染空);\ngroupbuy/audit/booking/platforms 手写 Cents/100 统一走 lib/money.ts centsToYuan。\n前端:新增 caliber.js(window.Caliber:centsToYuan/fmtCents/platformId,先于 screens 加载);\nscreens-member 私有 yuan()、screens-more OCR /100、screens-data ×2 toLowerCase 兜底全部收口。\n门禁:scripts/field-caliber-audit.mjs 四类不变式(金额命名诚实/禁手写除法/平台 toId 出口/端点双向对账)\n棘轮基线全 0,挂进前端 npm test 链(CI frontend-static 自动执行)。\n文档:治理经验库 G-010/G-011;CLAUDE.md 红线段同步;分析报告附第二轮收口记录。\n\n验证:tsc 0 错 · 单测 36/36 · 全量集成 235/235 绿 · 前端静态+治理+口径审计+AOT 构建全绿。\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-07-01T17:02:53-07:00"},{"Sha1":"46eb4e5d004553fff2c36ce1ff2f8e923f904d87","Message":"fix(test): r16/r22 时间炸弹拆除 — startAt 写死 2026-06-05 致凭证 6/12 起全体过期翻红\n\n凭证 validUntil = startAt + 7 天,固定日期写下当天即注定翻红;改相对 Date.now() 生成(futureAt helper)。\n主分支集成门禁已红近三周(停摆连带伤害),非近期改动引入。教训沉淀治理经验库 G-011。\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-07-01T17:02:38-07:00"},{"Sha1":"f9bf497a5ea0da0da007d09b8370a5f4bf898f83","Message":"docs(governance): 2026-07-01 深挖对账收口 — 数字机器对账 + 判定刷新 + 经验库补全\n\n- 新增 scripts/docs-metrics.mjs(G-006 落地):端点153/模块32/model64/迁移22/用例235/屏40,README+CLAUDE.md 全量对齐并标快照 SHA\n- README 归因口径纠偏:三处「置信区间」→「启发式参考区间」(对齐 CLAUDE.md 诚实边界红线)\n- 开发计划 v1.4 状态对齐块置顶;v1.1 过期误判就地标注;过时「未提交」状态更新\n- 阻塞点分析 v1.3:B1-B6 刷新 + 补 B7/B8/B9;最大发现=停摆4周,新排序置顶「重启节奏」\n- 治理经验库补 G-006~G-009 + G-005 复发记录\n- 新增深挖分析报告(矛盾裁定/缺口分类/owner 决策清单)\n\n验证:server test:unit 36/36 绿;screen-governance verify 40 屏绿。\n\nCo-Authored-By: Claude Fable 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-07-01T16:39:40-07:00"}],"HeadCommit":{"Sha1":"6c1f58f4c1c7dce5c443bbe14d34521de581cbf6","Message":"fix(auth): enforce refresh token single-use\n","AuthorEmail":"luoguoguo@gmail.com","AuthorName":"luoguoguo","CommitterEmail":"luoguoguo@gmail.com","CommitterName":"luoguoguo","Timestamp":"2026-07-01T19:52:00-07:00"},"CompareURL":"luoanwu/yggdrasil-local-life-tools/compare/2ab8a33db6a5502c09b6b494d5e4d5ddf1e9379b...6c1f58f4c1c7dce5c443bbe14d34521de581cbf6","Len":10}...
|
1782979375
|
Edit
Delete
|