31 KiB
自营经营总览图表设计
新增 Admin「海外仓 → 经营总览」,用图表回答本仓近期出库是否变化、库存大约需要多久消化、哪些 SKU 出库多、哪些库存值得关注。页面以 SKU 为中心,所属货主只作识别;保持同仓同名 SKU 跨货主分开,不恢复已取消的货主独立筛选或经营面板。
本文件是经营总览页面、聚合接口、下钻和验收的维护入口;原始事实、同步、可售天数、观察资格、版本与权限沿用一期方案。本次范围为设计与开发交接,不表示页面已经实现、上线或通过视觉验收。采集和环境操作继续按当前正式契约及用户授权执行,图表查询不调用领星。
菜单与页面布局
2026-10-20 用户选择本页作为蓝白卡片式工作台风格的首个样板:六项指标采用淡彩图标底座、蓝色大数字和轻边框圆角卡片;保留两列主图及三榜,并增加分区标题。公共外观由 Admin src/styles/adminWorkbenchTokens.css、adminWorkbench.css 管理,通过 admin-workbench 显式启用(同日已获授权扩展到销量、库存分析与数据采集);查询、数据口径、下钻、图表高度和原弹窗承载不变。整端推广待老板确认,视觉待人工 1920×1080、100% 截图核对。
同日按用户补充截图同步优化图表内部:公共 src/styles/adminWorkbenchChartTheme.ts 提供蓝白配色、灰蓝坐标、轻网格与提示框外观;本页趋势使用蓝色直线和更轻的缩放条,仅连续完整数据段填充浅色面积。柱图采用圆角条、千位分隔数值和按业务分类键稳定配色,待核验保持灰色;空榜单使用居中图标和原因说明。真实数值、零与未知、日期断线和下钻映射保留。主题由总览图表显式接入;同日按用户后续授权,共用 SKU 趋势与库存周转图表也统一接入。
新增路由 /self-operated/overview,模块页建议为 apps/admin-web/src/modules/self-operated/pages/OverviewView.vue。菜单顺序为经营总览、销量分析、库存分析、数据采集;沿用 platform:self-operated-analytics:list,总控统一集成路由、导航及 IAM。保留原三个页面的查询与作业入口,不更改登录后的全局首页。
总览只选一个仓库,不合并两仓库存、规则或可售天数;不增加来源账号、货主或 SKU 输入框。仓库首次为空时提示选择,返回页面可恢复最近选择;无有效仓库不查询经营接口。来源账号由已有受控配置确定,不在业务页面显示技术键。
在 1920×1080、100% 缩放下采用以下设计布局,正常纵向滚动,不为挤进一屏压缩图形和字体:
经营总览 查看销量 查看库存 数据采集
仓库 [选择] 统计时间范围 [最近3天/最近7天/最近15天/最近30天/自定义] 查询 刷新
销量覆盖截至…… 库存采集于…… 有新数据可刷新 / 部分资料提示
──────────────────────────────────────────────────────────────────────
区间出库量 | 所选时段日均出库 | 实物库存 | 正品可售 | 有库存SKU | 无出库SKU
──────────────────────────────────────────────────────────────────────
出库趋势(日折线,约 2/3 宽) 库存消化天数分布(横向条形,约 1/3 宽)
所选日期范围;真实每日点 所选日期范围;分类数量与待核验范围
──────────────────────────────────────────────────────────────────────
所选时段热销Top10 预计消化时间最长Top10 所选时段无出库库存Top10
按出库件数的横向条形 按可售天数的横向条形 按实物件数的横向条形
经营总览时间筛选默认近15天(截至昨日),提供最近3天、最近7天、最近15天、最近30天及最多366天的自定义范围,移除今日;快捷范围均截至北京时间昨日。最近N天为昨日往前完整N天;自定义最晚为昨日,起止日期均包含在统计内。前端将快捷范围转换为明确CUSTOM起止日期调用现有接口,复用查询上下文时以其anchorDate固定边界,整体刷新按当前北京时间重新计算;查看销量与其他下钻统一使用响应中的实际日期。该控件同时影响趋势、区间出库与日均 KPI、库存分布和三个榜单;热销按所选日期内已采集有效出库量排序,未采齐显示部分覆盖。日均与库存评估以同一所选区间的自然日数为分母,包含今日或缺失日期时不以部分销量推算。库存数量仍来自当前固定库存版本,不代表所选日期的历史库存。
KPI 采用紧凑的一行指标带;图表是主要内容,不再以整页描述表承载。复用 Admin 密度令牌,图表不套详情字段网格或普通表格行高。图表行建议趋势约 280~320px 高;榜单给 10 条保留可读高度,不强制全部首屏可见。长 SKU 可换行或省略并提供可聚焦的完整文字;名称与货主为辅助文本,不以内部 ID 回退。
指标带
数值来自服务端,保留版本、单位、覆盖和未知原因。这里的件数均为出库或库存数量,不是订单数、成交收入或净销售额。
| 指标 | 展示口径 |
|---|---|
| 区间出库量 | 与当前全仓趋势的日点合计守恒;全日均完整才显示正式总量,否则标为“区间已采集出库量”,全无可靠值为“—” |
| 所选时段日均出库 | 本仓所选区间实际出库总量÷区间自然日数;完整仓级覆盖即可计算,不因某个 SKU 库存观察不足抹去有效出库。缺日或含未完整今日则为空 |
| 实物库存 | 当前固定库存版各货主/SKU/品质的有效实物量;冻结、次品已经包含在实物中,不重复相加;在途不加入 |
| 正品可售 | 只汇总正品有效可用数量,不再减冻结、不加在途或次品 |
| 有库存 SKU | 全品质实物量已核验大于零的货主+SKU 去重数;品质行不是独立 SKU;存在库存未知时标记“已确认 N,另 M 待核验” |
| 所选时段无出库 SKU | 有实物且满足完整所选区间零出库的 SKU 数;观察不足仅提示,库存或销量未知另外说明,不认定卖不掉 |
库存或风险总量存在依赖未知时,正式值为空,允许显示“已知小计”及未知 SKU 数;不把未知过滤后仍显示成全仓总数。单项完整性独立:库存失败不阻止完整销量图;销量不足不掩盖已核验库存。全仓可售天数、平均 SKU 可售天数、评分和“优级客户”不在指标带中。
五张图表
出库趋势
使用日折线图,横轴为北京时间业务日期,纵轴为件数,零基线;日期轴包含完整选择区间。后台按仓库及固定销量版直接汇总有效日事实,包含现在已无库存的出库商品,不从库存列表或 Top 榜单反推总量。仓级全日覆盖完整且无出库时可为零,不要求每个 SKU 均满足所选区间库存观察资格。
每个日点返回正式量、已采集量、完整性和覆盖原因。缺日断线,部分日用明确的点形/虚线及“未完整”文字;不平滑跨越缺口。今日只有一个日累计点,不画小时趋势;自定义长区间减少坐标标签密度但保留全部日点和提示。整段已采集合计等于可靠日点已采集量之和;所有日点未知时合计为空。
仓级趋势按固定已发布版本的覆盖证据判定历史日,采集滞后或待重算不将该版完整历史日统一降为未完整;待重算时明确提示展示已发布历史结果,未发布事实不混入。来源时区、数量单位、日期缺口及今日未结束的限制保留。当前库存评估仍受待重算保护;所选区间包含今日时页面直接说明完整自然日条件不满足,并提示可选择截至昨日的自定义时段,其他库存与销量可信条件仍须满足。
仓级零值与部分值单独判断:全天覆盖完整时,正式量=已采集量=有效日行合计,无行可为 0;只有部分已证明覆盖且无日行时,正式量为空、已采集量为 0、状态 PARTIAL;没有覆盖证明但存在已确认日行时仍保留日行合计为已采集量、状态 PARTIAL;没有覆盖证明且没有日行时,两值均为空、状态 UNKNOWN。连续水位外的已确认日行不能被丢弃,整个仓级趋势不套单 SKU 存在时间或库存观察门槛。
点击已知日点进入销量分析当日自定义范围;未知日不可伪造零数据下钻,改显示该日覆盖不足原因。鼠标提示和键盘聚焦均显示日期、件数、状态;不能仅依赖颜色解释未知。
库存消化天数分布
使用横向条形图,单位为 SKU 个数,显示“有实物库存或库存待核验 SKU 的分布”。候选取固定两版 profile 的货主+SKU 并集:明确有效且实物为零的 SKU 排除;有效正实物以及实物未知/过期的候选保留。整个库存版尚不可用时显示无库存资料,不将全部销售候选画成一个伪造的库存总量。
bucketRuleVersion=COVERAGE_DISTRIBUTION_V1 按以下先后顺序将每个候选只归入一个桶;上一步命中后不再落入后续桶。销量资格沿用主方案;仅在完整可信窗口及数量单位确认后,没有出库行可记零,观察不足不单独归入 UNKNOWN:
| 桶 | 判定 |
|---|---|
UNKNOWN 库存或销量待核验 |
先检查本 SKU 实物或用于可售天数的正品可售数据异常/未知/过期;命中即归此桶。后续因销量窗口或数量质量不足无法计算时也归此桶,分别统计原因 |
NO_AVAILABLE 无可售库存 |
库存有效、实物大于零且正品可售量明确为零;可包含冻结或次品,不宣称周转良好,不依赖销量资格 |
NO_OUTBOUND_IN_WINDOW 所选时段无出库 |
有效正可售量、完整可信所选区间且出库为零;天数为空,不转成无限大 |
DAYS_0_30、DAYS_30_60、DAYS_60_90、DAYS_GT_90 |
正可售量、正日均且资格完整,按未舍入天数分别落 (0,30]、(30,60]、(60,90]、(90,+∞) |
在无可售库存判断之后、零出库或数值分桶之前检查销量完整性、可信状态和数量单位;不足回到 UNKNOWN。展示顺序为四个数值桶、无出库、无可售、待核验,不等于执行判定顺序。可售天数=当前正品可售量×所选区间自然日数÷区间完整出库量;SKU 的最早有效观察证据单独保留为提示,不阻断上述统计。30/60/90 仅为本版图形分组边界,不是收费、补货或优劣政策。
各桶 skuCount 之和必须等于 candidateSkuCount,并同时返回已排除的确定零实物 SKU 数。图表不展示“风险率”百分比;待核验量无法被藏进已评估分母。可在提示中显示桶内已知实物小计及未知件数范围,不把件数与 SKU 个数混用。
此分布为互斥展示分组,主方案 attention 是可并存的关注条件,两者不等价。例:全冻结且所选区间零出库 SKU 归 NO_AVAILABLE,但仍可出现在无出库库存榜。冻结、次品、可售、在途不能作为可相加的饼图组成部分。
三个 SKU 榜单
均为横向条形图,最多 10 个候选;三个榜单统一使用页面所选日期;无合格候选显示原因,不造空条或补足 10 个。每条展示 SKU、可用名称、所属货主及主指标,提示补充库存/日均/日期依据。同名 SKU 不跨货主合并;坐标从零开始,条长按真实数值,不截成相同最大长度。数量过大可用统一刻度单位,提示保留原值。
| 图表 | 资格与排序 | 下钻 |
|---|---|---|
| 所选时段热销 Top 10 | 按所选日期已采集有效正出库量降序、单数降序、SKU/货主编码升序;部分覆盖也展示,明确标记未完整,不将未采集当零。库存缺失或售罄不阻止进入 | 条目打开同窗口 SKU 趋势;“查看 Top 100”进入销量分析相同 CUSTOM 日期范围 |
| 预计消化时间最长 Top 10 | 有效正可售、正日均、完整可信窗口;按未舍入可售天数降序,SKU/货主编码升序。零销量单列,不冒充无限天数;不等同原 slow-skus 低销量榜 | 条目打开 SKU 趋势;“查看全部”进入库存分析相同有限天数候选及天数降序 |
| 所选时段无出库库存 Top 10 | 主方案 attention=NO_OUTBOUND_IN_WINDOW:全品质有效正实物、完整可信窗口、出库零;包含全冻结/次品有实物者。按实物量降序,SKU/货主编码升序 | 条目打开 SKU 趋势;“查看全部”进入库存分析无出库关注及实物量降序 |
排名从全仓所有已授权货主的候选先算资格/排序后截取,不先截 SKU 清单或逐货主各取十个再汇总。库存或销量数据实际不足时返回待评估数量,观察不足本身不增加待评估数;榜单明确是“符合条件的 SKU”,不以没有合格候选推断库存健康。可售天数很长仍是按历史速度的估算,不标成真实库龄或一定卖不掉。
图表交互与视觉依据
本文件作为新增页面的设计依据,布局由上面的页面示意和本矩阵约束;实现前总控将对应记录并入模块现有 operation-matrix.md。既有页面承载以该矩阵的用户截图纠正为准,不读取或恢复更早的货主面板。
| 页面操作 | 承载与行为 | 设计验收 |
|---|---|---|
| 仓库/统计范围查询 | 同页紧凑 QueryToolbar;查询先校验再更新,切仓清旧数据并取消旧请求 | 不增加独立货主控件,不在主区堆账号键、时区技术值、长规则 |
| 刷新 | 明确按钮整体更新版本与 queryAsOf;新数据提示不自行替换某张图 | 过期上下文显示刷新提示,不混合版本 |
| 柱/条与日点提示 | 图内提示,键盘可聚焦查看同等内容;未知日只展示缺口原因 | 不是新业务弹框,不仅靠颜色或悬浮识别数值 |
| SKU 条目趋势 | 沿用当前 1120px 居中 AppDialog,支持已有全屏/关闭;传该行 customerCode+sku 和上下文,三个榜单均使用所选范围 | 不改为列表下方详情、抽屉或新详情页;关闭取消请求 |
| 分桶或查看全部 | 导航至既有销量/库存正式页面并带准确筛选、版本和返回来源 | 目标页显示可清除的“来自经营总览”条件摘要,不重新引入货主选择器 |
| 查看采集状态 | 导航至所选仓的数据采集页 | 只查看当前状态,不触发采集/重试 |
保留屏幕阅读名称、键盘入口、焦点和足够对比度;趋势每日数值、SKU覆盖证据、库存分组说明、分布与排行榜按2026-10-13用户截图反馈统一使用居中弹框;分布与排行榜使用“查看完整明细”1040px居中弹框,提供完整名称、数值、证据及同资格的键盘下钻入口,长字段换行,正文滚动;悬浮提示只展示名称和数量并限制宽度,Top100/查看全部仍进入对应列表,不将全页默认变回表格。主图使用折线与条形,不使用 3D、雷达、仪表盘、双轴、装饰动画或无依据的“健康分”。按 2026-10-13 用户确认,自营业务图表统一使用 ECharts+vue-echarts,通过模块内 AnalyticsChart.vue 按需注册并使用 Canvas 渲染;坐标轴、提示框、缩放、条形及环形进度用配置维护,删除手写 SVG/CSS 绘图。日趋势与 SKU 趋势共用有效数据连线配置,未完整日用虚线,未知或缺失日期仍断线。
功能/合同评审和人工视觉验收分别记录。本设计不代替真实页面的人工 1920×1080、100% 截图验收,未提供截图时保留待人工确认,不声称视觉通过。
服务端聚合接口
新增 GET /api/platform/v1/last-leg/self-operated-analytics/dashboard,前端使用独立 analyticsApi.dashboard。现有前端 overview 实际调用 sync-overview,是采集状态接口,不能用它冒充经营聚合或改掉原语义。
入参要求 sourceAccount,warehouseCode,趋势参数复用 rangePreset 和 CUSTOM 的 startDate,endDate;不接受 customerCode、SKU、跨仓合并或任意 Top N。首次查询固定主方案中的两版、范围摘要、queryAsOf 及到期时间;后续切换统计范围复用上下文,显式刷新/切仓重新建立。榜单数量服务端固定 10,消化天数分组固定 V1。
在一次短只读一致快照中校验范围/版本并读取所需数据;整个响应共同使用同一上下文,不由前端并发获取多个“最新版本”后拼屏。某一数据族不可用时仅返回该族不可用,不妨碍另一族可用图形;鉴权失败、参数错误、版本无效或 SQL 失败是请求错误,不吞掉后转零或正常空图。
| 响应块 | 主要字段与要求 |
|---|---|
context |
主方案现有完整版本上下文、统一所选范围 rangeStartDate/rangeEndDateExclusive、salesCoveredFrom/Until、库存观测起止、inventoryFreshUntil、queryExpiresAt,另含 inventoryDrilldownExpiresAt(有效库存时取前两截止时间的较早值,否则不可用);技术字段用于程序,不放主页面占位 |
kpis |
六项指标各有 value/knownSubtotal、单位、dataStatus、unknownSkuCount、reasonCodes;区间出库另有正式量/已采集量,日均 averageDailyOutboundQuantity 与无出库数 noOutboundSkuCount 使用同一所选区间 |
salesTrend |
每日 points 及区间汇总;每点 businessDate、outboundQuantity、observedQuantity、dataStatus、reasonCodes,最多 366 点,日轴不省略缺日 |
coverageDistribution |
bucketRuleVersion、candidateSkuCount、excludedZeroPhysicalSkuCount、各 bucketCode/skuCount、可选已知实物小计/未知数、dataStatus/reasonCodes;分组未知原因有摘要 |
hotSkus/longCoverageSkus/noOutboundSkus |
各自实际窗口(windowStartDate/windowEndDateExclusive/calculationWindowDays)、eligibleCount、unassessableCount、items(最多 10)、dataStatus/reasonCodes;每项包含实际 customerCode+sku、名称、主指标及其单位/必要辅助值,窗口出库字段为windowOutboundQuantity。热销部分覆盖返回PARTIAL与SALES_WINDOW_INCOMPLETE,不返回该部分量推算的日均和消化天数。单点弹框复用原 daily API,不因图形新增另一份销量公式 |
计数无法确定时用空值和原因,不能把未计算的 eligibleCount/unassessableCount 默认为零。冻结、次品、在途可作为必要辅助数量,不新增会被误加总的库存占比饼图。所有经营数量的已知小计/完整总量遵守主方案;日均销售和本页库存分类均不以 SKU 观察期作为阻断条件,观察状态单独提示。
精确下钻合同
现有销量/库存页仅解析并传递 warehouseCode、sku,不能只拼一个新 URL 就宣称下钻已完成。此次必须扩展目标页的参数解析、初始化、取消请求、校验与返回上下文;来源条件只作为查询条件,权限仍由服务端核验。
- 通用路由条件:
warehouseCode、可选精确sku,customerCode(仅行身份,不显示独立货主选择器)、原完整版本上下文、from=overview。使用固定本地路由,不接受任意 return URL;编码/日期/枚举非法显式提示,不能静默忽略成全仓查询。 - 趋势日点:销量页
analysis=SKU、rangePreset=CUSTOM且 startDate=endDate=该日。热销 Top 100:analysis=HOT,rangePreset=CUSTOM,startDate,endDate,日期来自榜单窗口(endDate 为 exclusive 截止前一日),不再携带 windowDays。这两个路由枚举是新增初始化合同,开发映射到现有页面状态,不能原样当作新的外部 API 字段。dashboard 的 eligibleCount 是当前已采集有效正出库候选数,热销明细沿用原 Top 100 上限,故 total=min(eligibleCount,100),前 10 名及主值必须一致;不扩展成无限热销榜。 - 无出库全部:库存页
attention=NO_OUTBOUND_IN_WINDOW,sortBy=PHYSICAL_DESC。最长可售全部:/inventory-coverage和路由均新增coverageSelection=FINITE_POSITIVE,在服务端 SQL 分页前过滤为正式有限正可售天数候选,sortBy=COVERAGE_DAYS_DESC;不能仅在浏览器当前页过滤,也不能把零库存、未知天数放进候选冒充同一榜单。该字段属于本地报表接口,不传领星。 - 分布条形:库存页新增
coverageBucket与bucketRuleVersion=COVERAGE_DISTRIBUTION_V1。服务端/inventory-coverage同步接收并按上述唯一分组谓词过滤;不能把区间点击近似替换成 attention 或一个“大于”阈值。coverageBucket 与 coverageSelection、非 ALL attention 互斥,冲突拒绝;未带 bucket 时不接收单独 ruleVersion。FINITE_POSITIVE 与非 ALL attention 也互斥。 - 日点、整榜、分桶或具体 SKU 下钻均携带同一版本上下文;条件 chip 可清除,清除后恢复目标页常规范围,但不更换仍有效的上下文。返回总览恢复原仓库、趋势范围、上下文及滚动位置;到期或版本不可用时提示整体刷新,不能悄悄换新后声称与原图一致。
库存严格下钻从原图 context 提取起止日期,向 /inventory-coverage 携带 drilldownFrom=DASHBOARD,rangePreset=CUSTOM,startDate,endDate(endDate 含当日),不携带 salesWindowDays/salesWindowEndDate。普通库存明细仍使用独立的 10/30 日选择;同一无出库关注与区间出库排序按实际窗口计算。严格下钻标志用于声明与原图一致的读取要求,不授予额外权限;from=overview 的目标页必须映射此参数。服务端从原上下文及库存 run 的真实时效重新计算 inventoryDrilldownExpiresAt,不信任客户端传入的截止时间。库存已超过有效期或上下文到期时返回明确的“原图库存已过期,请刷新总览”错误,不能按过期后的 UNKNOWN 重新分桶再冒充原图结果;前端同时禁用原库存图的分桶/榜单列表下钻。此时趋势与热销的有效读取仍可继续,普通库存页的历史/过期展示保持原规则;重新加载的过期总览仅提供普通库存诊断入口,不提供严格分桶下钻。单条 SKU 的出库趋势不受库存过期阻断。
数据模型与查询性能
本页不新增采集任务、调度、周月汇总、缓存平台或库龄表。2026-10-13 用户确认允许新增仓库每日汇总表 ll_selfop_warehouse_daily_sales,按销量版本、来源账号、仓库、业务日保存有效已采集量、异常日行数与源日行数,数量沿用六位小数。每批 SKU 日行与对应仓日汇总在同一事务写入并推进构建检查点;发布前核对汇总覆盖的源行数,成功后同事务设置销量版本 warehouse_daily_ready。空销量版也必须完成该验证,不能以汇总表无记录推断为零。缺少就绪证据的版本明确拒绝总览读取,重新构建发布,不回退到旧查询或补写旧版本。
趋势和仓库销量合计读取已发布仓日汇总,日期完整性、部分采集与异常口径仍由原版本覆盖证据判定;仓日汇总不证明完整自然日。SKU 明细、库存与榜单继续复用已发布 daily、snapshot、profile、run;SQL 按版本、仓库、日期限缩,库存先按货主+SKU/品质聚合,再与销量连接,禁止原始订单 Join 或逐 SKU/逐货主 N+1。版本保留与受保护版本规则同时覆盖仓日汇总;不引入额外清理调度。
趋势在数据库按业务日期聚合;三个榜单分别在完整候选上计算并排序 LIMIT 10;分桶在 SQL 中 CASE 聚合,不能从第一页库存或 Top 100 拼出全仓分布。前端一次 dashboard 响应只接收最多 366 个日点、7 个桶和 30 条榜单记录及固定 KPI,不请求全部库存,不逐货主调用 owner-overview。下钻的库存计数及谓词必须与 dashboard 共享,避免边界漂移。
沿用主方案的代表性合成数据档位:单仓 1 万货主+SKU、多个历史统计版、有后台构建及 10 个并发只读用户。新增目标为 dashboard HTTP P95≤1.5s;报告 P50/P95/P99、SQL 数、扫描行及响应大小,查询数量须为固定少量、不得随 SKU/货主数线性增长。目标未实测,不以 SVG 绘图流畅代替后端验收。首次与预热分别记录,任何测试不对领星发起压力请求。
首次加载用结构占位;无仓、无业务版本、可靠全零、观察不足、过期和失败分别呈现。主动切仓立即清旧仓图并隔离迟到响应;相同条件刷新失败可以保留旧图,但明确“刷新失败,展示上次查询”,不伪装新成功。到达库存有效期或上下文到期后,相应指标标为历史/待刷新,不继续作为当前可信结论;不靠后台轮询替换单张图。点击刷新只读本地接口,不意味着立即同步领星。
离线验收与评审
下表均为合成数据设计,不作为真实经营结果;开发需同步 OpenAPI、权限、目标页路由解析和直接测试,API 门禁沿后端根指引执行。原模块已有功能与人工截图结论保留,不因新增总览回退 SKU 中心布局。
| 用例 | 必须得到的结果 |
|---|---|
| 近15天截至昨日,切换最近3/7/15/30天/CUSTOM | 无今日选项,自定义禁选今日及未来;趋势、KPI、分布和榜单使用同一实际区间,缺日保留待评估;下钻与返回日期一致 |
| 日量 2、未知、5,今日部分 1 | 可靠值合计 8 标已采集,正式总量为空;缺日断线,今日部分;全未知合计为空,不为 0 |
| 同仓 SKU X 属货主 A 出库 2、B 出库 5,均有效 | 全仓对应日为 7;榜单与点击身份保留两条,下钻分别为 2/5 |
| 库存缺失但所选区间完整销量数据存在 | 日均、趋势、热销可用,依赖库存的图形显示未就绪,不让库存失败清空销售 |
| A 正可售 3000、30 日出库 300;B 正可售 30、出库 30 | A 可售 300、B 30,分别归 >90 和 (0,30],最长榜 A 在前;不按低销量将 B 当更积压 |
| 候选 5 个:有效正可售零出库、全冻结且零出库、库存未知、有效天数 30、有效天数 30.04;再有明确零实物 1 个 | 分别落无出库/无可售/待核验/(0,30]/(30,60];桶合计 5、排除数 1;冻结 SKU 仍能进入独立无出库库存榜 |
| 正品实物 120 含冻结 20,可售 100;次品实物 8,在途 30 | 实物 128、可售 100,不相加为 278;图中不出现这几个重叠量的库存组成饼图 |
| 整体存在未知库存或销量缺口;热销和无出库候选不足 10 个 | 标已知小计和待评估,不补齐榜单、不宣称整体无风险;完全无可靠资料不显示健康零值 |
| 90、90.04 天显示均可能接近 90;零出库的天数为空 | 比较与分桶按未舍入值,分别≤90/>90;零出库不进最长有限天数榜、不放成无限值 |
| 每个分桶点击、榜单跳转、单条趋势,随后返回;另测 200 个热销候选 | 库存分桶/最长/无出库的 total 等于对应完整候选数;热销 total=min(eligibleCount,100),200 个候选时为 100,前 10 一致。身份/版本不变,复用 1120px 趋势弹框,返回保留范围及滚动位置 |
| 图表加载途中切仓、后台发布新版、跨午夜或上下文过期 | 旧仓响应不覆盖新仓;不单图切版或自动滚动今天;到期明确刷新,库存过期不继续显示当前有效 |
| 同一版本和 30 分钟上下文仍有效,但库存先到 freshUntil,再点击原分桶/库存榜单 | 前端阻止旧图严格下钻,服务端同样拒绝,不返回改变分类的结果冒充一致;要求刷新总览,出库趋势/热销仍按其独立资格读取 |
| dashboard 或路由参数缺仓、非法桶、互斥参数冲突、客户身份调用 | 明确拒绝,不能悄悄全仓查询;平台鉴权和来源范围校验不因汇总而弱化 |
设计评审收口项:SKU 中心与现有页面一致;总览及下钻统一所选区间;分布互斥且守恒;零出库与有限天数分开;全品质实物不重叠相加;未知不隐藏;下钻需要真实参数接线和共用谓词;新增聚合接口与运行概览分开。评审不覆盖生产吞吐、真实数据对账或人工视觉验收。
本轮已分别完成数据口径、页面/接口两项独立评审,并复核修正后的合同:补齐仓级部分日零值规则、库存时效先于查询上下文到期的严格下钻门禁,以及热销完整候选数与原 Top 100 上限的区别。设计范围内无剩余阻塞,可交开发总控安排;不把该结论作为代码、性能或视觉验收通过。
后续可在真实库龄、空间占用和内部经营规则核验后增加库龄分布及成本分析,不在本页放无数据的库龄饼图、平均周转率、货主评分或费用预测。开发总控按本设计安排前后端工作,计划和测试状态由其当前对话及正式工程契约维护。
图表明细与说明弹框通过 append-to-body 挂到页面根部,避免图表卡片动画/transform限制遮罩与弹框;更换数据关闭旧弹框,日期下钻先关闭明细,长表只滚动弹框正文。库存分组说明宽760px,每日数值/覆盖证据和排行明细宽1040px,可全屏。
热销Top10完整明细按用户最新截图去重:使用1280px居中弹框,按排名、SKU、商品名称、货主、所选时段出库量、实物库存、可售库存、窗口日均、预计可售天数分列;不再拼接重复说明段落,窗口与覆盖状态只在表格上方展示。商品名称与SKU完全相同时显示—,以“SKU+空格”起始时仅去掉该重复前缀;货主+SKU身份及点击下钻保持不变,未知指标不补零。
三张Top10卡片的日常展示只保留标题、图表与必要的一行异常提示(未采齐、待评估数量或待刷新);日期、资格数量、完整性详情和统计口径收进右上角“说明”,正常状态不重复显示“完整/待评估0”。图表顶部保持对齐,预计消化天数图上与悬浮数字最多两位小数,明细保留原始精度。
出库趋势与库存消化天数分布沿用Top10的简洁展示:日期、线型图例、候选/排除数量、完整性及分组口径均在右上角“说明”查看,独立“明细”入口保留每日数据或分桶数值。图表主体保留坐标轴、单位及必要空态。