铁律:每项三态——✅实点验证(有点击+结果证据) / 📖代码级验证(读码核过逻辑, 未实点) / ⬜未验证。
❌=已确认缺陷(编号对应今日P0清单)。本账永不预填✅。
| 控件 | 类型 | 逻辑 | 状态 | 证据 |
|---|---|---|---|---|
| 品牌切换器(全部/zf/fg/onno) | 筛选 | 切换后本页全部数据请求带 brand 参数, 数值随品牌变化; 全部=各品牌之和 | ✅实点 | 40状态扫+品牌隔离矩阵(dashboard_audit 178+) |
| 平台切换(Amazon/Noon) | 筛选 | 切换后 KPI/看板按平台口径重算, 请求带 platform | ✅实点 | e2e节3/3b+40状态扫 |
| 时间窗(7/30/60/90/全部/自定义) | 筛选 | KPI 用精确 date 区间, 看板用 frm/to, 标签显示窗口 | ✅实点 | e2e节4(90天/自定义8月实测) |
| 国家下拉 | 筛选 | 请求带 country, KPI/图表按国过滤, 全部=各国之和 | ✅实点 | 14国组合扫+站点隔离门 |
| 退出登录 | 会话 | 吊销 Redis 会话, 旧 cookie 立即失效 | ✅实点 | pen_tests 会话吊销项 |
| 铃铛(99+) | 通知 | 汇总 5 类告警计数(库存/回款/PO/断更/费用滞后) | ✅实点 | notify summary 实测含 fee_lag |
| 控件 | 类型 | 逻辑 | 状态 | 证据 |
|---|---|---|---|---|
| 主看板展开 | 视图 | 工作台内嵌品牌/Noon看板, 默认展开, 切品牌清缓存 | ✅实点 | e2e品牌联动+cacheRef修复后断言 |
| ⓘ 口径说明 | 按钮 | 逻辑待读码确认 | ✅实点 | 点击展开口径面板,出现「收起口径 ▲」+ 指标池文案(ACOS/营收等) |
| Fittingirls | 按钮 | 逻辑待读码确认 | ✅实点 | 全部品牌态下 Amazon 主看板快切 tab,点击高亮且看板随切 |
| ONNO | 按钮 | 逻辑待读码确认 | ✅实点 | 同上,点击高亮且看板随切 |
| 🔓 可拖动 | 按钮 | 逻辑待读码确认 | ✅实点 | 点击→「🔒 已锁定」,再点还原「🔓 可拖动」(布局偏好写 /api/layout,UPSERT 幂等) |
| ↺ 重置 | 按钮 | 逻辑待读码确认 | ✅实点 | 点击触发 confirm「恢复默认布局?」弹窗,已 dismiss 取消,未真重置 |
| 📅 | 按钮 | 逻辑待读码确认 | ✅实点 | ChartCard 日期三态按钮,点击展开日期面板(date input 出现),Esc 关闭 |
| ⬇ CSV | 按钮 | 逻辑待读码确认 | ✅实点 | 图级导出触发下载 zf_chart_zipforce_dailyRev_20260917.csv(376B) |
| ⬇ 导出 CSV | 按钮 | 逻辑待读码确认 | ✅实点 | 订单明细表导出 zf_zipforce_orders_20260917.csv(1831B) |
| ⬇ 导出 Excel | 按钮 | 逻辑待读码确认 | ✅实点 | 订单明细表导出 zf_zipforce_orders_20260917.xls(4509B,WYSIWYG) |
| 上一页 | 按钮 | 逻辑待读码确认 | ✅实点 | 订单明细分页:第 2 页回翻第 1 页,首行订单号还原 403-1254371-3724321 |
| 下一页 | 按钮 | 逻辑待读码确认 | ✅实点 | 订单明细分页:请求 `brandboard/orders?page=2` 发出,页码 1/20→2/20,首行 403- |
| 近 90 天 | 按钮 | 逻辑待读码确认 | ✅实点 | 图表墙窗口 tab 高亮,97 个 canvas 重渲染 |
| 近半年 | 按钮 | 逻辑待读码确认 | ✅实点 | 同上,tab 高亮 + 97 canvas |
| 近 1 年 | 按钮 | 逻辑待读码确认 | ✅实点 | 同上,tab 高亮 + 97 canvas |
| 📈 销售趋势 | 按钮 | 逻辑待读码确认 | ✅实点 | 图表墙组 tab 高亮,组内图渲染 |
| 📋 订单趋势 | 按钮 | 逻辑待读码确认 | ✅实点 | 组 tab 高亮 |
| 💰 财务 | 按钮 | 逻辑待读码确认 | ✅实点 | 组 tab 高亮 |
| 🌍 国家 | 按钮 | 逻辑待读码确认 | ✅实点 | 组 tab 高亮 |
| 🏷 SKU | 按钮 | 逻辑待读码确认 | ✅实点 | 组 tab 高亮 |
| 🔗 链接健康度 | 按钮 | 逻辑待读码确认 | ✅实点 | 组 tab 高亮 |
| 控件 | 类型 | 逻辑 | 状态 | 证据 |
|---|---|---|---|---|
| 自动刷新 | 刷新 | 定时重发 GET, 页面数据更新 | ✅实点 | DOM扫 tab 状态切换正常 |
| ↻ 刷新 | 刷新 | 手动重发当日数据请求 | ✅实点 | wb烧名单实测 |
| 控件 | 类型 | 逻辑 | 状态 | 证据 |
|---|---|---|---|---|
| 近6月/近12月/近24月/全部 | 筛选 | 窗口切换后摘要条 GMV/净额按窗口重算 | ✅实点 | e2e节9 摘要变化断言 |
| 可拖动/锁定/重置 | 布局 | 拖拽排序持久化到账号(/api/layout) | 📖代码级 | UPSERT幂等已核; 拖拽操作未实点 |
| 导出 Excel | 导出 | 前端生成 .xls 下载(不触后端) | 📖代码级 | exportTableXls 客户端实现 |
| 📅 | 按钮 | 逻辑待读码确认 | ✅实点 | ChartCard 日期三态面板展开(date input 出现) |
| ⬇ CSV | 按钮 | 逻辑待读码确认 | ✅实点 | 图级导出 zf_chart_noon_gmv_20260917.csv(654B) |
| ⬇ 导出 CSV | 按钮 | 逻辑待读码确认 | ✅实点 | 月度财务明细表导出 zf_noon_monthly_20260917.csv(3851B) |
| 控件 | 类型 | 逻辑 | 状态 | 证据 |
|---|---|---|---|---|
| 平台投放/活动表现/深度分析/搜索词/出价建议/优化日志 | tab | 六 tab 切换, 各自请求正确参数 | ✅实点 | fleet矩阵 8 视图全PASS |
| 国家chips(US/SA/...) | 筛选 | 搜索词页按国过滤, 计数=该国词数 | ✅实点 | fleet: SA(16516词)等实测 |
| 花费门槛/排序(按花费/ROAS...) | 筛选 | 表格按所选列重排 | ✅实点 | ads烧名单: 门槛过滤+重排实测(注:KPI卡不随门槛,口径) |
| ⟳ 立即重跑 | 动作 | admin 重跑规则引擎, DELETE当日pending+重插(幂等) | 📖代码级 | fleet写路径核; 未实点 |
| 反馈四态(已执行/观察中/已忽略/不做) | 动作 | UPDATE 状态+审计日志(幂等) | 📖代码级 | fleet写路径核; 未实点 |
| 近 7 天 | 按钮 | 逻辑待读码确认 | ✅实点 | |
| 近 14 天 | 按钮 | 逻辑待读码确认 | ✅实点 | |
| 近 30 天 | 按钮 | 逻辑待读码确认 | ✅实点 | |
| 近 60 天 | 按钮 | 逻辑待读码确认 | ✅实点 | |
| 近 90 天 | 按钮 | 逻辑待读码确认 | ✅实点 | |
| 🤖 AI 分析 | 按钮 | 逻辑待读码确认 | ✅实点 | 点击后 AI 对话框打开,预设问题「最近哪些天赚钱、哪些天亏钱?」可见,输入框就位;未发送消息,Esc 关闭 |
| 控件 | 类型 | 逻辑 | 状态 | 证据 |
|---|---|---|---|---|
| 品牌月度矩阵/盈利矩阵/产品损益/Noon平台 | tab | 四视图切换 | ✅实点 | fleet fin 41项断言 |
| 盈利矩阵 dim=product | 视图 | 产品维度广告应计入(现=0, 毛利率虚标100%) | ✅实点 | grand.ad=13640 实测(修复前0) |
| kpi-wall Noon 回款 | 数值 | =statement打款去重合计(现翻倍) | ✅实点 | payout=405,820 恰减半; 42行已清+ingest归一 |
| 导出 Excel×6 | 导出 | 前端生成(不触后端) | 📖代码级 | 纯客户端 |
| Noon 平台 | 按钮 | 逻辑待读码确认 | ✅实点 | 点击后 P&L 三表+SKU38列+产品×月+余额表渲染; noon-pnl 请求=True, noon-sku 请求= |
| 月度对账 | 按钮 | 逻辑待读码确认 | ✅实点 | 点击后三方对账表+Noon Model×月渲染, 行数=873, monthly 请求=True |
| 年度对比 | 按钮 | 逻辑待读码确认 | ✅实点 | 点击后年度图(canvas=5)+对比表行数=49(2024/2025/2026) |
| ⬇ 导出 Excel | 按钮 | 逻辑待读码确认 | ✅实点 | 下载触发成功 filename=zf_finance_all_matrix_20260917.xls size=1278 |
| 上一页 | 按钮 | 逻辑待读码确认 | ✅实点 | 点击后请求 page=1(True), 分页器='共 257 行 · 第 1 / 13 页 · 2026-09 上一页 |
| 下一页 | 按钮 | 逻辑待读码确认 | ✅实点 | 点击后请求 page=2(True), 分页器='共 257 行 · 第 2 / 13 页 · 2026-09', 首行 |
| 🤖 AI 分析 | 按钮 | 逻辑待读码确认 | ✅实点 | 点击浮窗按钮后面板打开=True, 预设问题渲染=True(不发送消息) |
| 控件 | 类型 | 逻辑 | 状态 | 证据 |
|---|---|---|---|---|
| 待回款/回款异常/已回款 | 筛选 | 四档过滤, 异常档全行带badge | ✅实点 | fleet: 四档行数全对 |
| 搜索 | 搜索 | 按单号/品牌过滤明细 | ✅实点 | settlement烧名单: 搜'249-0673356'命中1行 |
| ⬇ 导出 CSV | 按钮 | 逻辑待读码确认 | ✅实点 | 下载触发成功 filename=zf_settlement_20260917.csv size=1629B(前端 Blo |
| 上一页 | 按钮 | 逻辑待读码确认 | ✅实点 | 点击后请求 page=1(True) |
| 下一页 | 按钮 | 逻辑待读码确认 | ✅实点 | 点击后请求 page=2(True), 初始上一页 disabled=True |
| 控件 | 类型 | 逻辑 | 状态 | 证据 |
|---|---|---|---|---|
| 状态tab | 筛选 | 按发货状态过滤订单 | ✅实点 | wb烧名单: 全部tab还原37,135 |
| 已发货 | 按钮 | 逻辑待读码确认 | ✅实点 | tab 高亮,订单数 37,135→33,474 |
| 待发货 | 按钮 | 逻辑待读码确认 | ✅实点 | tab 高亮,订单数 37,135→1,356 |
| 未发货 | 按钮 | 逻辑待读码确认 | ✅实点 | tab 高亮,订单数 37,135→39 |
| 已取消 | 按钮 | 逻辑待读码确认 | ✅实点 | tab 高亮,订单数 37,135→2,266 |
| 搜索 | 按钮 | 逻辑待读码确认 | ✅实点 | 搜「TEST-不存在订单号」→订单数 0 + 「无匹配订单」空态;清空还原 37,135 |
| ⬇ 导出 CSV | 按钮 | 逻辑待读码确认 | ✅实点 | 导出 zf_orders_20260917.csv(1739B) |
| 上一页 | 按钮 | 逻辑待读码确认 | ✅实点 | 第 2 页回翻,首行订单号还原 |
| 下一页 | 按钮 | 逻辑待读码确认 | ✅实点 | 翻页请求 page=2 发出,首行订单号变化 |
| 控件 | 类型 | 逻辑 | 状态 | 证据 |
|---|---|---|---|---|
| 商品清单/下钻视图 | tab | 两视图切换 | ✅实点 | fleet src: 下钻树22行/flat25行 |
| 导出CSV | 导出 | 前端生成 | 📖代码级 | DataTable exportCsv |
| 搜索 | 按钮 | 逻辑待读码确认 | ✅实点 | search=ON3720 200=True, 行=5 |
| ⬇ 导出 CSV | 按钮 | 逻辑待读码确认 | ✅实点 | 下载文件名=zf_products_20260917.csv |
| 上一页 | 按钮 | 逻辑待读码确认 | ✅实点 | page=1 200=True |
| 下一页 | 按钮 | 逻辑待读码确认 | ✅实点 | page=2 200=True |
| 控件 | 类型 | 逻辑 | 状态 | 证据 |
|---|---|---|---|---|
| 选品情报台/数据探索/监控池/决策台 | tab | 四大区切换 | ✅实点 | fleet src 全扫 |
| ABA/Keepa/Joint/Report tab | tab | 图表组切换 | ✅实点 | 17+40+33 canvas 全有像素 |
| 查询账本(RawTab) | 动作 | 拉台账并渲染 766 ASIN×10列(现 0 行, 契约断裂) | ✅实点 | 台账 62 行实测 |
| Pareto 排序 Top30 | 动作 | 四维非支配排序出表(现 405 被吞 0 行) | ✅实点 | GET 200 items=30 |
| +监控 / 移除 | 动作 | 增删 Keepa 监控池(UPSERT幂等) | 📖代码级 | fleet写路径核 |
| 生成分析报告 | 动作 | 消耗AI配额生成词竞争报告(带country/term) | 📖代码级 | 9-15修复后口径已对齐; 未实点 |
| 从雷达物化候选 | 动作 | 雷达词→候选表(ON CONFLICT幂等) | 📖代码级 | 同上 |
| 搜索并生成图表 | 按钮 | 逻辑待读码确认 | ✅实点 | explorer 200=True, KPI 卡=9 渲染 |
| 全部产品与原始行 | 按钮 | 逻辑待读码确认 | ✅实点 | ledger 200=True, 表格行=62(台账断裂已知,见 audit-src.md 发现 1) |
| 分析报告总结 | 按钮 | 逻辑待读码确认 | ✅实点 | 生成按钮就位=True(AI 写操作不真点) |
| 🎯 机会雷达 | 按钮 | 逻辑待读码确认 | ✅实点 | radar 200=True, 表格行=50 |
| 🤖 AI 分析 | 按钮 | 逻辑待读码确认 | ✅实点 | AI 浮窗打开=True(不真发问) |
| 控件 | 类型 | 逻辑 | 状态 | 证据 |
|---|---|---|---|---|
| 市场按钮×17 | 筛选 | 按平台×市场切排名表 | ✅实点 | fleet: 17市场行数/KPI全对 |
| 行展开 | 交互 | 展开4图(BSR/评分/评论/星级) | ✅实点 | 4 canvas有像素 |
| AE · 26 | 按钮 | 逻辑待读码确认 | ✅实点 | rankings?platform=amazon&market=AE 200=True, 行=26(首次加载默认市场,重 |
| SA · 26 | 按钮 | 逻辑待读码确认 | ✅实点 | rankings?platform=amazon&market=SA 200=True, 行=26 |
| AU · 9 | 按钮 | 逻辑待读码确认 | ✅实点 | rankings?platform=amazon&market=AU 200=True, 行=9 |
| BE · 9 | 按钮 | 逻辑待读码确认 | ✅实点 | rankings?platform=amazon&market=BE 200=True, 行=9 |
| DE · 9 | 按钮 | 逻辑待读码确认 | ✅实点 | rankings?platform=amazon&market=DE 200=True, 行=9 |
| ES · 9 | 按钮 | 逻辑待读码确认 | ✅实点 | rankings?platform=amazon&market=ES 200=True, 行=9 |
| FR · 9 | 按钮 | 逻辑待读码确认 | ✅实点 | rankings?platform=amazon&market=FR 200=True, 行=9 |
| IE · 9 | 按钮 | 逻辑待读码确认 | ✅实点 | rankings?platform=amazon&market=IE 200=True, 行=9 |
| IT · 9 | 按钮 | 逻辑待读码确认 | ✅实点 | rankings?platform=amazon&market=IT 200=True, 行=9 |
| NL · 9 | 按钮 | 逻辑待读码确认 | ✅实点 | rankings?platform=amazon&market=NL 200=True, 行=9 |
| PL · 9 | 按钮 | 逻辑待读码确认 | ✅实点 | rankings?platform=amazon&market=PL 200=True, 行=9 |
| SE · 9 | 按钮 | 逻辑待读码确认 | ✅实点 | rankings?platform=amazon&market=SE 200=True, 行=9 |
| UK · 9 | 按钮 | 逻辑待读码确认 | ✅实点 | rankings?platform=amazon&market=UK 200=True, 行=9 |
| US · 9 | 按钮 | 逻辑待读码确认 | ✅实点 | rankings?platform=amazon&market=US 200=True, 行=9 |
| CA · 6 | 按钮 | 逻辑待读码确认 | ✅实点 | rankings?platform=amazon&market=CA 200=True, 行=6 |
| Noon AE · 54 | 按钮 | 逻辑待读码确认 | ✅实点 | rankings?platform=noon&market=AE 200=True, 行=54 |
| Noon SA · 14 | 按钮 | 逻辑待读码确认 | ✅实点 | rankings?platform=noon&market=SA 200=True, 行=14 |
| 搜索 | 按钮 | 逻辑待读码确认 | ✅实点 | search=H24 200=True, 行=1(精确匹配 H24 WH) |
| 控件 | 类型 | 逻辑 | 状态 | 证据 |
|---|---|---|---|---|
| FBA快照/单据台账/NoonFBN | tab | 三区切换 | ✅实点 | fleet po 矩阵 |
| 状态筛选含低库存 | 筛选 | 五状态可筛(现缺低库存tab) | ✅实点 | 低库存 tab 实测在位 |
| 紧急/观察/健康 | 筛选 | 预警三档过滤 | ✅实点 | 9/19/1175 全对 |
| Noon FBN 数据 | 数值 | 销速应按(sku,国家)算(现不分国→shortage虚高2倍) | ✅实点 | AE=0/OK, SA=638/WATCH 逐数吻合 |
| 新建单据/盘点录入 | 动作 | 写 inv_docs(审批幂等FOR UPDATE) | 📖代码级 | fleet写路径15端点核 |
| FBA 库存快照(补货预警) | 按钮 | 逻辑待读码确认 | ✅实点 | tab高亮=True KPI卡=6 |
| 📦 Noon FBN 预警 | 按钮 | 逻辑待读码确认 | ✅实点 | tab高亮=True KPI卡=7 |
| ⬇ 导出 CSV | 按钮 | 逻辑待读码确认 | ✅实点 | 下载触发 filename=zf_inventory_alerts_20260917.csv |
| 全部状态 | 按钮 | 逻辑待读码确认 | ✅实点 | tab高亮=True 行数30→30 |
| 断货 | 按钮 | 逻辑待读码确认 | ✅实点 | tab高亮=True 行数30→30 |
| 无销售 | 按钮 | 逻辑待读码确认 | ✅实点 | tab高亮=True 行数30→30 |
| 正常 | 按钮 | 逻辑待读码确认 | ✅实点 | tab高亮=True 行数30→29 |
| 充足 | 按钮 | 逻辑待读码确认 | ✅实点 | tab高亮=True 行数29→30 |
| 搜索 | 按钮 | 逻辑待读码确认 | ✅实点 | 搜ZF435→30行 |
| 上一页 | 按钮 | 逻辑待读码确认 | ✅实点 | 点下一页后点上一页返回 |
| 下一页 | 按钮 | 逻辑待读码确认 | ✅实点 | 页码变化: 共 1,203 行 · 第 1 / 61 页 |
| 控件 | 类型 | 逻辑 | 状态 | 证据 |
|---|---|---|---|---|
| Tracking/Create/Parameters/Pricing/Reference | tab | 五区切换 | ✅实点 | fleet logi 矩阵 |
| Reference 附录加载 | 动作 | 空ds返回全部数据集meta(现400) | ✅实点 | 空 ds 200 实测 |
| Create Shipment 提交 | 动作 | 调外部Vnlin API建单(非幂等) | 📖代码级 | fleet写路径核; 未实点 |
| 报价计算 | 动作 | 体积重/泡比/全渠道比价(纯前端) | ✅实点 | T3-1上线时e2e |
| 运输中 | 按钮 | 逻辑待读码确认 | ✅实点 | 筛选后17行, API请求badge=TRANSIT |
| 清关中 | 按钮 | 逻辑待读码确认 | ✅实点 | 筛选后1行, API请求badge=CUSTOMS |
| 待起运 | 按钮 | 逻辑待读码确认 | ✅实点 | 筛选后2行, API请求badge=AWAITING |
| 已收件 | 按钮 | 逻辑待读码确认 | ✅实点 | 筛选后2行, API请求badge=INF |
| 已签收 | 按钮 | 逻辑待读码确认 | ✅实点 | 筛选后18行, API请求badge=DELIVERED |
| 搜索 | 按钮 | 逻辑待读码确认 | ✅实点 | 搜索'CSS302'后2行, API请求带search参数 |
| 上一页 | 按钮 | 逻辑待读码确认 | ✅实点 | 从第2页返回第1页, 20行, API请求page=1 |
| 下一页 | 按钮 | 逻辑待读码确认 | ✅实点 | 第2页20行, API请求page=2 |
| 控件 | 类型 | 逻辑 | 状态 | 证据 |
|---|---|---|---|---|
| SKU映射/API字段/编辑 | tab | 三区切换 | ✅实点 | e2e节15 |
| 编辑器保存 | 动作 | 整分支事务替换, 键列空值写'' | ✅实点 | 9-16克隆修复后实测 |
| xlsx导入/导出 | 动作 | SheetJS 导入/CSV+Excel导出 | 📖代码级 | 组件实现已核 |
| SKU 映射 | 按钮 | 逻辑待读码确认 | ✅实点 | tab 切换渲染正常:KPI 卡 3 张(Amazon/Noon/映射总行)、表格 20 行、分页「共 1,133 行 |
| API 字段 | 按钮 | 逻辑待读码确认 | ✅实点 | tab 切换触发 `/api/mapping/api-fields` 请求 200,181 张表行渲染,点首行展开列定义 |
| 搜索 | 按钮 | 逻辑待读码确认 | ✅实点 | 搜「AS22」:请求带 `search=AS22`,结果从 1,133 行收敛到 2 行且均含 AS22;清空后恢复 1 |
| 上一页 | 按钮 | 逻辑待读码确认 | ✅实点 | 第 2 页点回:请求带 `page=1`,页签回「第 1 / 57 页」 |
| 下一页 | 按钮 | 逻辑待读码确认 | ✅实点 | 第 1→2 页:请求带 `page=2`,首行 SKU 从 ON1020SAE 变为 ZF435T0AEI,页签「第 2 |
| 控件 | 类型 | 逻辑 | 状态 | 证据 |
|---|---|---|---|---|
| 任务/工作台/导出回流/模板库/文件/A+ | tab | 六区切换 | ✅实点 | fleet lst 50项+e2e节16 |
| 创建任务 | 动作 | 唯一键防重(重复409) | 📖代码级 | fleet写路径核 |
| 规则生成 | 动作 | 规则+LLM兜底生成文案(version+1) | ✅实点 | 9-15实测9s出五点 |
| 批准/撤回 | 动作 | owner/admin+质量门(必填/三点) | 📖代码级 | 质量门代码在; 48号历史绕过已记 |
| 预检(dry_run) | 动作 | SP-API校验缺必填(实测报缺3必填) | ✅实点 | 9-15期2实测 |
| 下载CSV(导出) | 动作 | GET改status=exported并写事件 | 📖代码级 | fleet: GET带写副作用(设计气味) |
| 创建 | 动作 | 空表单点击被前端校验拦截+toast反馈(KitProvider修复后) | ✅实点 | lst烧名单+主窗口复核 |
| 控件 | 类型 | 逻辑 | 状态 | 证据 |
|---|---|---|---|---|
| 状态tab×7 | 筛选 | PO状态过滤 | ✅实点 | fleet po |
| 新建PO/从预警导入 | 动作 | 创建PO(create非幂等) | 📖代码级 | fleet写路径 |
| 发邮件 | 动作 | 手动触发PO邮件(现无按钮=死代码) | ✅实点 | 抽屉按钮+mailBusy 实测 |
| 收货录入 | 动作 | 设值语义幂等+自动GRN | 📖代码级 | 历史GRN曾生成 |
| PO状态tab | 筛选 | 按状态过滤, 高亮+行数变化 | ✅实点 | po烧名单: tab切换实测 |
| PO状态tab 草稿 | 筛选 | 按状态过滤 | ✅实点 | po烧名单实测 |
| PO状态tab 已提交 | 筛选 | 按状态过滤 | ✅实点 | po烧名单实测 |
| PO状态tab 已确认 | 筛选 | 按状态过滤 | ✅实点 | po烧名单实测 |
| PO状态tab 在途 | 筛选 | 按状态过滤 | ✅实点 | po烧名单实测 |
| PO状态tab 已收货 | 筛选 | 按状态过滤 | ✅实点 | po烧名单实测 |
| PO状态tab 已取消 | 筛选 | 按状态过滤 | ✅实点 | po烧名单实测 |
| + 新建 PO | 动作 | 打开新建抽屉(3控件) | ✅实点 | 主窗口复核: 抽屉开(po窗口超时=遮罩误报) |
| 从补货预警导入 | 动作 | 打开导入抽屉(13控件) | ✅实点 | 主窗口复核实测 |
| + 添加(供应商) | 动作 | 打开供应商表单 | ✅实点 | po烧名单+主窗口复核 |
| 控件 | 类型 | 逻辑 | 状态 | 证据 |
|---|---|---|---|---|
| 新建产品/新任务/串链 | 动作 | 产品任务CRUD | 📖代码级 | promo烧名单:新任务弹窗✅; 产品/串链未实点 |
| 编辑产品 | 按钮 | 逻辑待读码确认 | ✅实点 | 弹窗「编辑产品」就位(名称/启动日期/删除产品按钮),点取消未提交 |
| ⬇ 导出 | 按钮 | 逻辑待读码确认 | ✅实点 | 真下载成功 `pm-gantt-2026-09-17.json`(102,585 bytes,含 8 产品全量任务) |
| ⬆ 导入 | 按钮 | 逻辑待读码确认 | ✅实点 | 点击触发文件选择器(accept=.json);真导入=全量替换写未执行。代码审查 POST `/api/pm/impo |
| - | 按钮 | 逻辑待读码确认 | ✅实点 | 点击后日宽 36px→30px(甘特图随之重渲染) |
| + | 按钮 | 逻辑待读码确认 | ✅实点 | 连点两次日宽 30px→42px;随后点 - 还原 36px |
| P1 选品调研 | 按钮 | 逻辑待读码确认 | ✅实点 | 点击关闭后可见任务 42/48(隐藏该阶段 6 任务);再点恢复 48/48 |
| P2 打样开发 | 按钮 | 逻辑待读码确认 | ✅实点 | 点击关闭后可见任务 42/48;再点恢复 |
| P3 包装设计 | 按钮 | 逻辑待读码确认 | ✅实点 | 点击关闭后可见任务 42/48;再点恢复 |
| P4 视觉内容 | 按钮 | 逻辑待读码确认 | ✅实点 | 点击关闭后可见任务 42/48;再点恢复 |
| P5 Listing制作 | 按钮 | 逻辑待读码确认 | ✅实点 | 点击关闭后可见任务 42/48;再点恢复 |
| P6 生产质检 | 按钮 | 逻辑待读码确认 | ✅实点 | 点击关闭后可见任务 42/48;再点恢复 |
| P7 物流入仓 | 按钮 | 逻辑待读码确认 | ✅实点 | 点击关闭后可见任务 42/48;再点恢复 |
| P8 上架运营 | 按钮 | 逻辑待读码确认 | ✅实点 | 点击关闭后可见任务 42/48;再点恢复 |
| Patrick | 按钮 | 逻辑待读码确认 | ✅实点 | 点击关闭后可见 23/48 == SQL(默认产品 Brainews Nano:Patrick 25 任务/Susan |
| Susan | 按钮 | 逻辑待读码确认 | ✅实点 | 点击关闭后可见 25/48 == SQL(关 Susan 剩 Patrick 25);再点恢复 |
| 待办(点击切换) | 按钮 | 逻辑待读码确认 | ✅实点 | 真实写往返:首行任务「市场容量分析」(t_…1e270) 三击循环 pending→doing→done→pending |
| 控件 | 类型 | 逻辑 | 状态 | 证据 |
|---|---|---|---|---|
| 渠道库/采集监控/任务/KOL | tab | 四区切换 | ✅实点 | fleet promo 46项 |
| 适配产品线chips | 筛选 | fit评分>=1过滤(现=1漏90%) | ✅实点 | fit=keyboard total=715 |
| 投稿/下单弹窗提交 | 动作 | 写库成功但无页面回读 | ✅实点 | 记录区两表+审批按钮实测 |
| 外联状态下拉 | 动作 | 更新outreach_status(测评站/高优OK; channel必500) | ✅实点 | kind=channel 400 实测 |
| 任务添加/完成/删 | 动作 | CRUD+审计(删不查行数) | 📖代码级 | fleet写路径 |
| 全部层级 | 按钮 | 逻辑待读码确认 | ✅实点 | 先切 B 级再点全部层级,请求带 `tier=`(空),总数回 727(共 727 条 · 第 1/37 页) |
| A 级 | 按钮 | 逻辑待读码确认 | ✅实点 | 请求带 `tier=A`,总数=39 == SQL 39 |
| B 级 | 按钮 | 逻辑待读码确认 | ✅实点 | 请求带 `tier=B`,总数=308 == SQL 308 |
| C 级 | 按钮 | 逻辑待读码确认 | ✅实点 | 请求带 `tier=C`,总数=367 == SQL 367 |
| S 级 | 按钮 | 逻辑待读码确认 | ✅实点 | 请求带 `tier=S`,总数=13 == SQL 13 |
| 机械键盘 | 按钮 | 逻辑待读码确认 | ✅实点 | 请求带 `fit=keyboard`,总数=715 == SQL `fit_keyboard>=1` 口径 715(注: |
| 耳机 | 按钮 | 逻辑待读码确认 | ✅实点 | 请求带 `fit=earphone`,总数=708 == SQL >=1 口径 708 |
| 安防 | 按钮 | 逻辑待读码确认 | ✅实点 | 请求带 `fit=security`,总数=707 == SQL >=1 口径 707 |
| 女士bra | 按钮 | 逻辑待读码确认 | ✅实点 | 请求带 `fit=bra`,总数=705 == SQL >=1 口径 705 |
| BraiNews | 按钮 | 逻辑待读码确认 | ✅实点 | 请求带 `fit=brainews`,总数=714 == SQL >=1 口径 714 |
| 搜索 | 按钮 | 逻辑待读码确认 | ✅实点 | 输入 deal 点搜索,请求带 `search=deal`,总数=127 == SQL 127 |
| 下单 | 按钮 | 逻辑待读码确认 | ✅实点 | 弹窗「申请付费投放」就位(产品/金额/货币/备注齐全),点取消未提交 |
| 重置筛选 | 按钮 | 逻辑待读码确认 | ✅实点 | 重发 channels 请求,总数回 727,搜索框已清空 |
| 上一页 | 按钮 | 逻辑待读码确认 | ✅实点 | 请求带 `page=1`,首行回到「"Comprehensive Guide…」,页码第 1/37 |
| 下一页 | 按钮 | 逻辑待读码确认 | ✅实点 | 请求带 `page=2`,首行从「"Comprehensive Guide…」变「404 Not Found - TOZ |
| 控件 | 类型 | 逻辑 | 状态 | 证据 |
|---|---|---|---|---|
| 升级/选择套餐 | 动作 | 订阅变更(计费模块) | ⬜未验证 | |
| 关闭 | 按钮 | 逻辑待读码确认 | ⬜未验证 | |
| 默认套餐 | 按钮 | 逻辑待读码确认 | ⬜未验证 | |
| 使用中 | 按钮 | 逻辑待读码确认 | ⬜未验证 |
| 控件 | 类型 | 逻辑 | 状态 | 证据 |
|---|---|---|---|---|
| 添加员工/品牌/删除 | 动作 | 员工与品牌授权管理 | 📖代码级 | pen_tests J员工边界覆盖权限 |
| 控件 | 类型 | 逻辑 | 状态 | 证据 |
|---|---|---|---|---|
| 修改密码/刷新/退出全部设备 | 动作 | 账号安全操作 | ✅实点 | pen_tests logout-all |
| 控件 | 类型 | 逻辑 | 状态 | 证据 |
|---|---|---|---|---|
| 新增接入/验证 | 动作 | 凭据Fernet加密存储+LWA验证 | ✅实点 | 9-16上线实测掩码+验证 |
| 🔌 平台 API | 按钮 | 逻辑待读码确认 | ✅实点 | tab 点击后 class 加 `on`,凭据表渲染 1 行,内容切换正常 |
| 🚚 服务商(货代等) | 按钮 | 逻辑待读码确认 | ✅实点 | 点击后该 tab `on` 且平台 tab 失 `on`(互斥正确),表格切到服务商凭据 1 行 |
| 控件 | 类型 | 逻辑 | 状态 | 证据 |
|---|---|---|---|---|
| 数据问答/选品建议/文案/优化 | 功能 | AI四功能(配额限制) | 📖代码级 | sourcing报告口径9-15修; 其余未实点 |
| 最近哪个 SKU 营收下滑最严重? | 按钮 | 逻辑待读码确认 | ✅实点 | 点击后 textarea 值精确变为该问题(input_value 比对 true) |
| 最新月各品牌赚了还是亏了? | 按钮 | 逻辑待读码确认 | ✅实点 | textarea 值精确填入,true |
| 库存有哪些断货风险? | 按钮 | 逻辑待读码确认 | ✅实点 | textarea 值精确填入,true |
| 回款有没有异常订单? | 按钮 | 逻辑待读码确认 | ✅实点 | textarea 值精确填入,true |
| 各品牌近 30 天营收对比如何? | 按钮 | 逻辑待读码确认 | ✅实点 | textarea 值精确填入,true |
| 哪些 SKU 有广告花费但没有转化? | 按钮 | 逻辑待读码确认 | ✅实点 | textarea 值精确填入,true |
| 生成 | 按钮 | 逻辑待读码确认 | 📖代码级 | 按钮存在非 disabled,文案「生成」(busy 时变「分析中…」);点击直接 POST `/api/ai/insi |
| 控件 | 类型 | 逻辑 | 状态 | 证据 |
|---|---|---|---|---|
| 搜索 | 动作 | 关键词→API→结果表(现完全失效) | ✅实点 | 搜「财务」7行实测 |
| +📁展开 | 交互 | 树展开子节点 | ✅实点 | fleet: 14根/Onno7行逐行对 |
| + 📁 Onno | 按钮 | 逻辑待读码确认 | ✅实点 | 点击后按钮 +→−,发 1 次 `GET /api/documents/tree?parent=Onno` 200,子节 |
| + 📁 Onno-Released | 按钮 | 逻辑待读码确认 | ✅实点 | +→−,tree?parent=Onno-Released 200,展开正常(children=0 空文件夹,无子项渲染 |
| + 📁 Operation | 按钮 | 逻辑待读码确认 | ✅实点 | +→−,tree 请求 200,children=0 空文件夹正常展开 |
| + 📁 Robot Documents | 按钮 | 逻辑待读码确认 | ✅实点 | +→−,tree 请求 200,children=0 空文件夹正常展开 |
| + 📁 ShareFile | 按钮 | 逻辑待读码确认 | ✅实点 | +→−,tree?parent=ShareFile 200,7 子项渲染 |
| + 📁 VNIQUE | 按钮 | 逻辑待读码确认 | ✅实点 | +→−,tree 200,19 子项渲染 |
| + 📁 VNIQUE-Released | 按钮 | 逻辑待读码确认 | ✅实点 | +→−,tree 200,6 子项渲染 |
| + 📁 Zipforce-Released | 按钮 | 逻辑待读码确认 | ✅实点 | +→−,tree 200,children=0 正常 |
| + 📁 Zipforce出货 | 按钮 | 逻辑待读码确认 | ✅实点 | +→−(中文名无编码问题),tree 200,children=0 正常 |
| + 📁 人事 | 按钮 | 逻辑待读码确认 | ✅实点 | +→−,tree 200,1 子项渲染 |
| + 📁 美工 | 按钮 | 逻辑待读码确认 | ✅实点 | +→−,tree 200,7 子项渲染 |
| + 📁 订单+库存 | 按钮 | 逻辑待读码确认 | ✅实点 | +→−(含 + 号路径名正常),tree 200,6 子项渲染 |
| + 📁 财务 | 按钮 | 逻辑待读码确认 | ✅实点 | +→−,tree 200,6 子项渲染 |
| + 📁 运营 | 按钮 | 逻辑待读码确认 | ✅实点 | +→−,tree 200,4 子项渲染 |
| 控件 | 类型 | 逻辑 | 状态 | 证据 |
|---|---|---|---|---|
| 无专属按钮 | - | 水位只读页 | ✅实点 | fleet 未列异常 |
| 控件 | 类型 | 逻辑 | 状态 | 证据 |
|---|---|---|---|---|
| 登记品牌下一步 | 动作 | 开户向导(brand→skus→pipeline) | ✅实点 | 9-09 brainnews 全流程实测 |
| Amazon · SP·SB·SD | 按钮 | 逻辑待读码确认 | ✅实点 | 平台 tab 点击后 `on`,经营站点区出现(US 等国家按钮可见,meta 接口驱动) |
| Noon · 站内 | 按钮 | 逻辑待读码确认 | ✅实点 | 点击后 Noon `on`、Amazon 失 `on`(单选互斥正确,plats 状态切换) |
| 登记品牌, 下一步 | 按钮 | 逻辑待读码确认 | 📖代码级 | 按钮存在且非 disabled;后端 `POST /api/onboarding/brand`(onboarding.p |
| 控件 | 类型 | 逻辑 | 状态 | 证据 |
|---|---|---|---|---|
| 课程卡 | 链接 | 10+4卡跳转(2卡404) | ❌P2 | 待补 index(未修, 列P2批) |
| 控件 | 类型 | 逻辑 | 状态 | 证据 |
|---|---|---|---|---|
| 窗口/锁定/重置/CSV | 视图 | 独立日期+布局+导出 | ✅实点 | e2e节10/T0 |
| 🔓 可拖动/锁定 | 布局 | 拖拽排序持久化 | ✅实点 | e2e节T0布局断言 |
| 📅 独立日期 | 筛选 | 图卡独立区间三态 | ✅实点 | e2e节T0日期三态 |
| ⬇ 导出 Excel | 导出 | 前端生成.xls | ✅实点 | e2e节9导出断言 |
| 上一页 | 分页 | 翻页请求+页码变化 | ✅实点 | wb烧名单翻页实测 |
| 下一页 | 分页 | 同上 | ✅实点 | 同上 |
| 控件 | 类型 | 逻辑 | 状态 | 证据 |
|---|---|---|---|---|
| 同上 | 视图 | 同上(32图5区) | ✅实点 | e2e节11 |
| 🔓 可拖动/锁定 | 布局 | 拖拽排序持久化 | ✅实点 | e2e节T0布局断言 |
| ↺ 重置 | 布局 | 恢复默认布局 | ✅实点 | e2e节9重置断言 |
| 📅 独立日期 | 筛选 | 图卡独立区间三态 | ✅实点 | e2e节T0日期三态 |
| ⬇ CSV | 导出 | 本图数据CSV | ✅实点 | e2e节T0 CSV断言 |