WIP-312 接真深化核验证据 — a端 Cms / Dashboard + b端 SiteTexts
- 执行人:扣子二号(coze2)
- 时间:2026-09-13
- 结论:派单时描述的三块「静态/骨架/1 个 API」现状均已在更早批次接真(267/272/284/292 已落地)。本单改为接真深化 + 数据安全加固 + 诚实口径,未造假数据、未新增虚构端点。
一、现状核查(逐文件,基于 main 实际代码,非任务描述)
1. a端 Cms.tsx —— 已全套 CRUD 接真(非「仅 1 个 API」)
services/api.ts 已存在并真实调用 ADMIN=/api/admin 下:GET /cms/posts?post_type&page_size&page → listCmsPostsPOST /cms/posts → createCmsPostPUT /cms/posts/{id} → updateCmsPostPOST /cms/posts/{id}/publish|offlineDELETE /cms/posts/{id}- 页面已有列表/状态筛选/创建/编辑/上下架/删除/编辑器弹窗全套交互,非静态壳。
- 后端
admin_backend.py 路由与方法、响应包({ok:true,data} / {ok,error})已逐一核对一致;unwrap() 同时兼容 {ok} 与 {code:0}。
2. a端 Dashboard.tsx —— 已接真(原是埋点事件看板,非静态)
- 已接
GET /stats/overview(订单总数、新增用户、埋点事件、24h 事件)+ 日期范围事件查询 + Top10 事件。 - 缺任务期望的「核销数 / 商户数」—— 经核后端无核销聚合、无商户计数端点(见 BLK),不能前端编造。
3. b端 SiteTexts.tsx —— 已完整接真(非静态)
GET /miniapp/admin/site-texts?group 分三栏(merchant / activity / c_end_shared)PUT /miniapp/admin/site-texts/{key}、DELETE /miniapp/admin/site-texts/{key}- 解包按后端真实包
{code:0,...} 判 code===0;含编辑/保存/删除/取消/加载态/异常态;已注册 App.tsx 路由、business-pack BASE_ROUTES、工作台入口。 - 后端
miniapp_site_texts.py 路由前缀 /api/miniapp/admin/site-texts、SiteTextIn{value,description?}、200/400/404 均一致。本页零改动。
二、本单真实增量(纯前端)
Cms.tsx / Cms.css
- 类型筛选深化:在状态筛选旁新增 post_type 下拉(不限/攻略/公告/帮助),走后端已支持的
post_type 查询参数。 - 正文丢失数据安全加固(修复真实隐患):后端
GET /cms/posts 列表 SELECT 不返回 content 字段,而编辑旧文章时原代码用 post.content ?? form.content 回显——列表项 content 恒为 undefined,正文框为空;若运营者未察觉直接保存,PUT(content 必填)会用空正文覆盖线上正文。 - 防护:编辑文章且列表项未带回 content 时,正文域显示醒目警示条「列表接口未返回正文,直接保存将清空线上正文」,并禁用保存按钮(新建文章不受影响)。
- 根治需后端列表补返回 content(见 BLK-1)。
Dashboard.tsx / Dashboard.css
- 新增「业务概览(近 200 单)」分区,复用已就绪的
GET /api/admin/orders?limit=200,对返回订单做真实前端聚合: - 快照订单数、真实单/测试单笔数、GMV/真实 GMV(total_fen 求和 ÷100,仅统计
total_fen>0); - 订单状态分布(中文标签,未支付/已支付待确认/已确认/已完成/退款中/已退款/已取消)。
- 诚实口径:
- 卡片与区头明确标注「近 200 单快照,非全量」,不冒充全量 GMV;
- 不显示核销数/商户数:后端无对应端点,显示「待后端聚合端点」,绝不填 0 或编造(BLK-2);
- 订单拉取失败显示独立错误条,不影响埋点看板渲染;测试单单独区分避免污染真实 GMV。
三、后端阻塞项(登记,coze2 不改 backend/)
- BLK-1(建议,影响 CMS 编辑体验):
GET /cms/posts 列表行补 SELECT content(或提供 GET /cms/posts/{id} 详情),否则前端编辑旧文无法回显正文,只能靠当前的「禁用保存」防护避免误清空。属阿仁/后端域。 - BLK-2(硬阻塞,Dashboard 核销/商户看板):缺核销统计(redemption/redeem 聚合计数)与商户总数/在线数端点。建议在
/stats/overview 增补 redemption_count、merchant_count、merchant_active_count(或新增 /stats/business)。端点就绪前前端不展示这两项数字。属阿仁/后端域。
四、验证
- a端
tsc --noEmit = 0;npm run build = 0。 - b端
tsc --noEmit = 0(SiteTexts 零改动,基线全绿)。 - 无 mock / setTimeout / 假成功;所有数字均来自
/orders 与 /stats/overview 真实返回;无端点的指标显式标注「待后端」。 - b端无 src 改动(SiteTexts 早已随 main 上线),本单不产生 b端补丁。