Compare commits

21 Commits
Author SHA1 Message Date
ouyangxq 249276debf 优化 2026-11-04 18:08:25 +08:00
ouyangxq f3b4e914f9 记录财务与采购运输修复续批测试发布 2026-10-30 19:02:21 +08:00
ouyangxq 57bf848432 记录10月30日测试环境发布与核验结果 2026-10-30 16:00:01 +08:00
ouyangxq 38a136e509 补充客户端新增页和海外PDA界面规范 2026-10-30 15:42:39 +08:00
ouyangxq 3ff7841a89 统一客户端新增页布局与字段校验设计规范 2026-10-29 14:16:02 +08:00
ouyangxq d7f5d02ac1 记录海外PDA托盘异步校验修复测试H5发布 2026-10-28 17:39:55 +08:00
ouyangxq b17f4592bc 记录履约界面和船节点署名测试环境发布 2026-10-28 17:03:46 +08:00
ouyangxq e33825c161 记录采购出库提示及费用重试列测试环境核验 2026-10-28 14:16:37 +08:00
ouyangxq e4c6712634 记录预约与客户工作台续批测试发布及费用菜单修复 2026-10-28 12:07:10 +08:00
ouyangxq d584217da5 记录后台统一布局与已完成修复的测试环境发布 2026-10-28 11:14:01 +08:00
ouyangxq ed07692a16 docs: 记录船期顺延真实 HTTP 验收结果 2026-10-27 17:26:11 +08:00
ouyangxq b59ad09423 docs: 记录船期日历测试发布与接口验收结果 2026-10-27 17:15:35 +08:00
ouyangxq b0d249973a docs: 明确船期日历顺延和订柜统计口径 2026-10-27 16:56:21 +08:00
ouyangxq f5a8fe5f78 docs(admin): clarify finance cards and detail spacing 2026-10-27 16:55:36 +08:00
ouyangxq 32af159987 docs: record finance reopen and lifecycle TEST acceptance 2026-10-27 15:39:48 +08:00
ouyangxq b1baceaa08 docs: record tested finance and admin deployment 2026-10-27 12:18:47 +08:00
ouyangxq e50cf9e5e6 优化 2026-10-27 12:09:18 +08:00
ouyangxq 806641c579 优化 2026-10-26 18:52:09 +08:00
ouyangxq 1a92bba2d5 优化 2026-10-26 17:27:38 +08:00
ouyangxq 517efab68c 优化 2026-10-26 13:58:45 +08:00
ouyangxq 75461279d8 docs(deploy): record evening test release and PDA static hosting 2026-10-23 20:03:13 +08:00
11 changed files with 454 additions and 25 deletions
@@ -2,9 +2,9 @@
## 目标
本文只维护逐操作核对方法、验收范围和证据要求。Admin 当前样式的唯一依据为 [Admin 界面规范](Admin高密度界面规范.md),不在本文重复定义配色、密度、按钮或弹窗尺寸。Client 沿用已确认原型,不自动采用 Admin 风格。
本文只维护逐操作核对方法、验收范围和证据要求。Admin 当前样式的唯一依据为 [Admin 界面规范](Admin高密度界面规范.md);Client 新增、新建、下单的通用外观按 [Client 界面样式规范](Client界面样式规范.md) 的“新增页面”章节,其他操作读取该规范的适用条款和已确认原型,不自动采用 Admin 风格。本文不重复定义配色、密度、按钮或弹窗尺寸。
页面业务字段、顺序、分组和操作承载以当前业务契约及逐操作确认为准;已有原型作为直接核对证据。Admin 主规范已经确认替代的外观使用现行规则,其余差异逐项记录,不因套用公共组件而改动承载方式。
页面业务字段、顺序、分组和操作承载以当前业务契约及逐操作确认为准;已有原型作为直接核对证据。Admin / Client 主规范已经确认替代的外观使用对应现行规则,其余差异逐项记录,不因套用公共组件而改动承载方式。
## 修改门禁
@@ -19,14 +19,14 @@
## 承载方式
- 原型使用独立页面:必须使用正式路由、页面级布局和明确返回入口;不得改成抽屉或弹框。
- 原型使用居中弹框:必须使用居中模态框,核对标题、正文、底部按钮和关闭方式;Admin 外观与尺寸以主规范及已确认业务例外为准,Client 按原型还原,不得改成右侧抽屉。
- 原型使用居中弹框:必须使用居中模态框,核对标题、正文、底部按钮和关闭方式;Admin / Client 外观分别按各自现行样式规范和已确认业务例外,承载尺寸按对应操作确认,不得改成右侧抽屉。
- 原型使用侧滑面板:仅该操作允许使用抽屉,并按原型方向、宽度和内部布局还原。
- 原型未定义:先停在矩阵中标记待确认,不得因为公共组件方便而自行选择。
- 同一列表的详情、新增、编辑、审核可以采用不同承载方式,必须逐操作判断。
## 视觉与排版
- Admin 按 [主规范任务入口](Admin高密度界面规范.md#按任务阅读)选择对应章节核对;Client 按已确认原型逐项核对。矩阵标明当前依据及业务例外,不把旧试点和过程记录当成另一套通用规则。
- Admin 按 [主规范任务入口](Admin高密度界面规范.md#按任务阅读)选择对应章节核对;Client 按 [样式规范](Client界面样式规范.md) 的适用章节及对应操作原型逐项核对。矩阵标明当前依据及业务例外,不把旧试点和过程记录当成另一套通用规则。
- 核对字段分组、列宽、换行、对齐、控件、表格、按钮及图标;保留原型的业务语义和操作资格。主规范未授权的装饰、功能与交互不得自行添加。
- 长编号、长地址、长文件名、多字段、空值和业务状态使用真实形态的数据核对;不能靠缩小字号、裁切关键值或减少字段通过验收。
+10
View File
@@ -86,9 +86,12 @@
- 同级状态/分类页签与顶部业务按钮共用工具栏:页签放 `toolbar-start`,操作放 `toolbar-actions`/`toolbar-end`,查询放 `filters`;蓝白页签加 `workbench-list-tabs`。不叠加重复路由标题、页签行、按钮行;保留真实业务子分区、统计数量、失败重试与当前范围。
- “操作”列在第一列,需要固定时固定在左侧。默认最多三个高频操作直接显示,其余用更多菜单;保留已确认的直接操作数量、权限和危险确认。更多入口为 `…`(`MoreHorizontal`),保留业务对象相关的可访问名称与悬停提示,菜单项纯文字。
- 已接入标准列表的行操作采用纯文字:无描边、填充或装饰图标,400 字重,普通操作蓝色、危险操作红色、禁用灰色、悬停无下划线。`RowActions` 用 `text-actions`;手写按钮组用 `row-actions density-actions admin-text-actions`,危险语义通过 `data-tone="danger"` 或 `type="danger"` 显式指定。统一外观由 `adminTextActions.css` 维护,不再沿用早期国内仓描边行按钮。顶部、查询及弹框提交按钮按各自用途保留,不机械套用行操作外观;尚未接入的消费者在本轮明确范围内再调整。
- 状态列前置:有主要业务编号时紧跟编号,没有编号时紧跟主要名称;多个当前状态集中排列,操作列仍在第一列。DataTable 的状态列通过 `afterColumn` 显式指定跟随的列键,恢复已保存的列序时仍遵守该位置,状态列不独立拖动;其他列的个人顺序、列宽和显隐继续保留。历史记录中的原状态、新状态及状态变化保留事件阅读顺序。
- 列宽按实际编号、状态和按钮数量决定,核对长编号、最多按钮、加载与权限变化;不把样板操作列宽套给所有列表。数值列右对齐,单位优先放表头;保留横向滚动、列偏好、分页和行内编辑。
- 标准 DataTable 沿用默认灰白斑马纹,不由页面显式关闭;行底色复用 `--admin-row-stripe`,悬停行、当前行及悬停单元格由 Element 状态样式处理,父表底色不穿透子表。
- 表格与分页交界只画一条底线:Element Plus 的 `el-table__inner-wrapper::before` 保留,紧邻该表格的 DataTable 分页不再叠加上边框;自定义结果区域仍保留原分页分隔线。不全局隐藏表格底线,避免空表和无分页表格缺边。
- `appearance="integrated"` 保留原组件组合能力,不再表示搜索与表格必须相连。样式维护在 DataTable 和公共 CSS,不为接入样式切换业务模式。
- 详情内的充值申请、账户流水等连续表格同样使用 `workbench-table is-page-surface` 去掉 DataTable 外壳的重复边框、圆角和阴影,保留表格本体边线、横向滚动和分页。筛选放在 DataTable 的 `filters` 插槽时,接入 `appearance="integrated"`,由筛选容器独占边框与底色;内部 QueryToolbar 不再绘制第二层边框或阴影。优先复用这些公共入口,不在页面追加隐藏边框的覆盖规则。
#### 公共列表能力
@@ -119,6 +122,7 @@ Admin 仍使用 Element Plus。普通 `el-select` 由构建组件解析器统一
### 费用、汇总与测量
- 汇总使用单行摘要或紧凑描述表。自动费用与其他费用保持各自业务口径,金额、单价、计费量、附加费和版本完整展示。
- 客户资金账户详情采用已确认的六项紧凑金额卡片,复用公共 `workbench-metric is-compact` 外观;保留授信有效期、到期和负余额状态。导出流水与充值、扣款、授信操作集中在详情页头,流水区不再单独设置导出工具栏。结算单应收/应付详情同样使用三项紧凑金额卡片展示应收/应付、已收/已付、未结余额,到期日保留在基本信息中。以上为已确认的详情页例外,不推广到其他详情。
- 保留公式、计费依据和价格来源入口,不能为了减少行数合并不同口径的金额或重量。
- 测量各来源保留独立分组;展开时在表尾显示合计,折叠时在标题显示摘要,同一口径不在上下重复占位。
- 测量作业弹框采用用户确认的分区配色:申报与实测对比白色(`#fff`)、客户申报明细浅蓝(`#f7f9ff`)、平台实测箱规白色(`#fff`),保留细边框和 8px 圆角,不使用左侧强调色条,作为连续白底规则的局部例外。区块不得使用负外边距伸出正文;左右内边距由 `measurementDensity.css` 统一维护,通用密度规则不得将其清零。保持 1560px、92vh 居中作业弹框及原有业务分组,各区按当前确认配色呈现,不恢复已移除的绿色背景。 三个分区同级排列,客户申报不得嵌套在实测大框内。箱数、毛重、体积集中在“指标/客户申报/平台实测/差异(实测 − 申报)”表中,不在下方重复总数;未采集显示“未测量/待测量”,申报缺失显示“—”,相等显示“一致”。净重、材积重单独显示平台事实,不与申报毛重混比。 客户申报区保持只读;实际品名和预计托数放在“平台实测箱规”区,沿用原保存与权限规则。未采集时只保留主状态,有箱规和来源后显示采集来源;平台补充数据的口径说明通过提示展示。提交按钮旁显示当前订单状态、缺少测量或称重等实际阻断原因。 桌面布局中,对比区标题与客户、渠道、状态同排;申报区标题与原单据号码同排,标签和值横向排列;实测箱规标题、实际品名、预计托数及录入操作共享一行。长内容自然换行,不截断编号或缩小字号。提交阻断原因集中在固定底栏,正文不重复显示同一提示,业务状态、偏差和冲突提醒保留。
@@ -285,6 +289,12 @@ Admin 仍使用 Element Plus。普通 `el-select` 由构建组件解析器统一
详情主容器的 `workbench-panel.is-page-surface` 在屏幕展示时不再叠加 padding,即使同时有 `is-compact` 也由外层页面或业务分区提供唯一一层留白。独立预装/装柜清单详情和货柜内的清单页签按此规则接入;内部独立紧凑卡片仍为 14px,普通卡片仍为 20px。该规则排除 `AdminPage` 页根并仅用于屏幕,不覆盖页面原有 12px 或打印内距。
财务详情通过 `financeDensity.css` 的 `finance-density-detail` 统一收敛:账户、费用来源、对账单和结算单的页头、摘要、正文及底栏在屏幕上不重复增加左右内边距,由外层 `AdminPage` 提供。嵌套 `AdminPage` 必须使用 `admin-workbench is-embedded`;区块纵向间距、金额卡片、描述表单元格和筛选控件的内部留白保留,打印内距不变。
国内/海外托盘、整柜业务、应收款统计和应收/应付结算单的顶部统计卡片独立置于列表工具栏与筛选区上方。卡片网格与紧随其后的 DataTable 工具栏之间外层 `gap` 为 `0`,留白由工具栏已有的上下 padding 与最小高度提供,不能再叠加 6px 或默认页面间距;卡片之间的网格间距独立保留。此规则仅适用于这类直接相邻结构,不清零普通业务分区或筛选区与表格之间的间距。
间距和边框核对必须包含公共组件编译后的 scoped 选择器、模块规则、断点及加载顺序。显式接入规则应有稳定的优先级,不能仅凭源码出现 `gap: 0` 或 `padding: 0` 就判断已生效;自动合同检查与实际截图核对分别报告,不用 `!important` 或负外边距掩盖重复容器。
### 公共样式接入
页面直接导入 `@/styles/adminWorkbench.css`,保留原有密度入口,并在实际页面根容器增加 `admin-workbench`。不依赖先打开样板页后残留的 CSS,不将主题放入全局入口,不修改 `:root`。导航、顶栏、页签由总控在各自容器显式接入,不给包含业务页面的 `.app-shell` 或 `.app-main` 添加主题类;业务页和 Teleport 浮层仍须自己接入。
+146 -2
View File
@@ -2,14 +2,17 @@
## 范围与验收状态
- 本规范由客户端样式对话确认建立,首个验收样板为“头程物流 → 订单列表”(`/orders/first-leg`)。当前为首版实现,待人工截图确认;通过后再逐模块推广。
- 本文是客户端样式的现行维护正文,按新增页面和列表分别定义规则。后续客户端的新增、新建、下单操作统一采用下文“新增页面”的风格;列表沿用列表章节,不把两者的控件尺寸和间距混用。
- 新增页以“海外采购下单”和“美国本土卡车下单”在当前对话确认的外观与布局为样板:满宽、无阴影、精简说明、12px 模块间距、浅色 placeholder 和字段右上角校验提示。两页的不同字段排列见下文,不按整页截图机械复制。规范确定不等于所有新增页已改造或通过视觉验收。列表首个验收样板为“头程物流 → 订单列表”(`/orders/first-leg`),其验收状态见文末。
- 只维护 `apps/client-web/` 内的样式和公共组件,不与 Admin 跨应用链接依赖。
- 左侧菜单背景保持现状,不修改 `shell.css` 中的导航背景,也不通过全局品牌变量间接改变导航。
- 标准通过正文容器 `.client-ui` 接入;首批覆盖订单列表。创建、详情与其他模块需分别核对承载方式和字段,不以列表通过代替整模块验收。
- 标准通过正文容器 `.client-ui` 接入;新增页在本页或新增表单容器内覆盖对应令牌,不将新增页尺寸写入全局默认值。创建、详情与其他模块需分别核对承载方式和字段,不以某个样板通过代替整模块验收。
- 按 1920×1080、浏览器缩放 100% 验收,保留现有窄屏能力。
## 公共入口与职责
按任务阅读:新增、新建、下单读“新增页面”;列表读“尺寸与布局”“颜色与按钮”及适用的列表样板条款。视觉核对方法只维护在 [Admin / Client 前端原型还原验收规则](Admin-Client前端原型还原验收规则.md)。
| 入口(相对 apps/client-web) | 职责 |
|---|---|
| `src/styles/client-ui.css` | `--client-*` 颜色、尺寸、间距;正文按钮和状态外观 |
@@ -17,11 +20,150 @@
| `src/components/common/DataTable.vue` | 表格、工具栏、行操作、分页;工具栏内容用插槽提供 |
| `src/components/common/tableActions.ts` | 三个操作以内全部展示,超过三个折叠;禁用和加载状态执行保护 |
| `src/modules/first-leg/utils/firstLegOrder.ts` | 头程状态码 → 语义色,不在公共样式中判断业务状态码 |
| `src/modules/cross-border/views/ProcurementView.vue` 的新增分支 | 新增页外观样板;只参考当前新增分支,不跨模块导入该业务页面 |
| `src/modules/cross-border/components/BusinessOrdersView.vue` 与 `TransportDemandForm.vue` 的新增分支 | 本土卡与散板共用新增外观;参考三列短字段、两列详细地址和右上角校验。编辑分支及各业务的视觉验收分别核对,不从共用组件推定已通过 |
页面只提供字段、操作、业务状态与权限,不再覆盖公共工具栏 padding、表格行高及分页 padding。确有业务差异时增加明确的组件能力,避免重复页面 CSS。
## 新增页面
### 适用范围与设计依据
- 后续客户端新增、新建、下单操作按本章实施。既有页面在对应任务触及时按授权范围调整,不因规范更新批量改造其他页面。
- 本章替代最初海外采购 HTML / UI Redesign Spec 中的 1240px 内容宽度上限、26px 模块间距、24px 表单卡片内边距及重复说明文字;不采用带阴影的大圆角截图版本。桌面导出文件是参考材料,后续规则统一更新本文,不要求开发者依赖个人桌面文件或设计工具链接。
- 统一外观不统一业务表单:字段、顺序、分组、必填条件、默认值、权限、计算口径和提交行为仍按各业务契约及已确认原型。海外采购的采购方向、币种、收件资料等不自动成为其他新增页的字段。
- 独立页面、居中弹框、抽屉仍按对应操作的已确认承载方式;本规范不将所有新增操作改成独立页面。后续用户明确确认的外观例外优先于本章,其余通用外观不回退到旧原型的大留白、阴影或说明堆叠。
- 本章只约束新增内容区。复用现有侧边栏、顶栏、页签和面包屑,不复制设计稿中的静态用户名、菜单或页签,不因新增页改造修改公共外框。
### 企业设置承载方式
以下为当前已确认的企业设置操作,不按字段数量自动改造其他业务。企业设置常规表单采用“完整维护进入独立页面,少量字段用居中弹框”的方式;这些操作不再使用右侧抽屉。
| 操作 | 当前承载方式 |
|---|---|
| 编辑企业资料 | 独立页面,分企业基本信息、联系信息两块;保存后返回企业资料 |
| 成员新增/编辑 | 独立页面,分账号信息、联系信息与角色两块;保存后返回成员列表 |
| 角色新增/编辑 | 三个字段,使用居中弹框;内置角色和权限限制沿用业务规则 |
| 角色权限分配 | 保持现有独立页面 |
| 资质上传、文件预览、成员密码重置 | 保持各自专项弹框与原有业务校验 |
独立编辑页沿用本章的满宽、白色无阴影卡片、三列短字段、12px 模块间距与右上角校验提示。新增与编辑路由分别校验对应操作权限,菜单仍只展示原有业务入口;直接打开与刷新应重新加载服务端资料,加载失败提供重试,保存失败保留填写内容。
### 页面组织与信息密度
1. 独立新增页使用一个清晰标题,右侧按现有列表访问权限提供返回入口;默认不增加标题下的解释性段落。
2. 摘要区按业务需要使用,展示数量、预算等真实表单派生值。已有三项摘要时等宽三列;没有必要摘要的表单直接进入业务区,不为套用样板硬凑三个指标。
3. 表单按业务分组呈现为独立白色卡片,标题位于卡片上方,以小圆点区分分组。常规短字段使用三列等宽网格;成对详细地址可使用两列,单个长地址、链接、长备注可占满整行。具体排列按下文样板及业务确认,不把所有区域强制设成相同列数。既有明确分组和摆放不得因凑满网格擅自重排。
4. 独立页底部操作靠右,返回列表在前、主提交按钮在后;返回资格沿用现有权限。弹框或抽屉保留其已确认的取消、关闭和提交语义,不硬加“返回列表”。
5. 内容填满所在容器的可用宽度,使用 `width: 100%`、`min-width: 0`;独立页不设置 1240px 等固定内容上限造成右侧空白。弹框和抽屉中的满宽指其正文容器,不是铺满浏览器视口;保留应用壳层或容器已有边距,不重复包一层大 padding。
6. 在 1920×1080、100% 缩放下优先减少无效留白和重复文案,使主要填写内容更集中。长表单允许正常滚动,不通过隐藏必要字段、缩小字号、裁切内容或未经确认拆步骤强行塞进一屏;一屏效果以人工截图为准。
### 字段列数与宽度
“内容区满宽”“字段单独一行”和“控件占满整行”是三个不同要求,实施前按下表区分。
| 场景 | 当前标准 | 样板 |
|---|---|---|
| 页面、表单卡片 | 铺满可用正文宽度,不留下固定宽度上限造成的右侧空白 | 两个新增页 |
| 常规短字段 | 一行三列等宽,横向间距 20px;输入框填满所在列 | 采购品类/商品名称/商品规格;本土卡取货地/联系人/电话 |
| 前置选择项独立一行 | 单独占一行位置,控件只占三列中的一列,与下一行第一列对齐,右侧留空 | 采购方向、车辆类型 |
| 成对详细地址 | 同一行两列等宽,分别放取货地址、送达地址 | 本土卡运输信息 |
| 单个长字段 | 按已确认分组占满该行,例如商品链接、完整收货地址、备注 | 海外采购及本土卡备注 |
- 前置选择项的一列宽度按正文网格计算:`calc((100% - 40px) / 3)`,其中 40px 是两个 20px 列间距。不得改成任意固定的 280px,也不得把“独立一行”理解成下拉框横跨整张卡片。
- 混合三列短字段与两列地址时,可以使用六列基础网格,短字段跨两格、详细地址跨三格;这只是实现方式,用户看到的仍是三列或两列。前置项独占整行位置,再将自身宽度限制为标准一列。
- 字段按实际阅读顺序写入模板,键盘 Tab 顺序与视觉顺序一致;不只用 CSS `order` 把同一组联系人拆散重排。
### 两个样板的具体排列
以下是后续页面可对照的布局依据,不是要求其他业务复制相同字段、默认值或摘要指标。
| 页面/区域 | 已确认排列 |
|---|---|
| 海外采购/摘要 | 数量、预算单价、币种三张等宽卡片,数值与当前表单联动 |
| 海外采购/商品与预算 | 采购方向独立一行、控件一列宽;其后采购品类/商品名称/商品规格三列,采购数量/预算单价/预算币种三列;商品链接整行,预算总上限用普通文本 |
| 海外采购/收件资料 | 收件人、联系电话各占三列网格的一列,第三列留空;完整收货地址、采购要求各占整行 |
| 本土卡/运输信息 | 车辆类型独立一行、控件一列宽;取货地/取货联系人/取货联系电话一行三列;送达地/送达联系人/送达联系电话一行三列;取货地址/送达地址一行两列 |
| 本土卡/货物信息 | 托数/总重量/总体积一行三列 |
| 本土卡/费用与时效 | 预算总价与币种组成同一字段,占两列网格的左列,右列留空;取货时间/送达时间一行两列;备注整行 |
代码参考:[海外采购新增分支](../apps/client-web/src/modules/cross-border/views/ProcurementView.vue)、[本土卡页面外框](../apps/client-web/src/modules/cross-border/components/BusinessOrdersView.vue)、[本土卡表单](../apps/client-web/src/modules/cross-border/components/TransportDemandForm.vue)。新业务先确定字段分组与承载方式,再使用通用外观;若要调整上述排列或推广到其他共用分支,须在对应任务中明确范围,不顺手扩展。
### 尺寸与间距
以下数值分别适用,不将所有间距一律改为 12px。
| 元素 | 新增页标准 |
|---|---|
| 页头、摘要区、表单模块底部间距 | `margin-bottom: 12px` |
| 摘要卡之间 | 横向 gap 16px |
| 摘要卡内部 | padding 12px 16px;纵向 gap 8px |
| 摘要标题行 | 图标与标题 gap 12px;图标底块 44×44px,圆角 8px;线性图标 20px |
| 表单卡片 | padding 16px;1px 边框;圆角 10px |
| 摘要卡片 | 1px 边框;圆角 10px |
| 分组标题 | 下方 margin 10px;圆点 9px;圆点与标题 gap 10px |
| 表单网格 | 常规三列等宽,两列/整行区域按上文布局;纵向 gap 12px、横向 gap 20px;单项不另叠加底部 margin |
| 标签与控件 | 间距 6px;标签行高 20px |
| 字段校验提示 | 字段右上角、标签同行,12px 字号、20px 行高;不增加底部占位和字段高度 |
| 输入框、选择框 | 最小高 44px;圆角 6px;padding 10px 14px |
| 多行输入 | 最小高 110px;padding 11px 14px;允许纵向调整;字数计数在下方右侧,间距 4px |
| 预算等必要汇总值 | 上方 margin 10px;字号 13px、行高 20px;普通文本,不做说明横幅 |
| 底部按钮间距 | gap 12px |
| 次按钮 | 最小高 44px;padding 10px 18px;圆角 6px |
| 主按钮 | 最小高 44px;padding 12px 28px;圆角 6px |
### 字体、颜色与状态
字体沿用中文无衬线栈:`"PingFang SC", "Microsoft YaHei", "Noto Sans SC", sans-serif`。
| 用途 | 标准 |
|---|---|
| 独立页标题 | 26px / 700;margin 0 |
| 分组标题 | 18px / 700 |
| 正文、输入内容 | 14px / 400 |
| 字段标签 | 14px / 600 |
| 摘要标题、数值、单位 | 15px / 600;30px / 700;14px / 500 |
| 内容底色、卡片及控件底色 | `#F4F7FC`、`#FFFFFF` |
| 主文字、标签、次要文字 | `#1F2937`、`#374151`、`#6B7280` |
| 占位文字 placeholder | `#B0B7C3`;输入框、多行输入和选择框的未填写提示统一使用,已填写内容保持正文色 |
| 卡片边框、控件及次按钮边框 | `#E3E8F0`、`#D5DCE8` |
| 主按钮 | `#2F7BFF` 背景、白字 |
| 次按钮、摘要数值 | `#1D5FE0`;次按钮白底描边 |
| 必填星号 | `#E5484D` |
| 焦点 | 2px `#2F7BFF` outline;无发光阴影 |
- 卡片、输入框、选择框及其弹出层、按钮均不使用装饰阴影、渐变、毛玻璃或位移动效;分隔依靠边框与底色。
- 主要操作以蓝色为强调色,其他颜色仅用于必要的业务状态、错误反馈和小面积分组标记。样板图标底块可使用蓝 `#EAF2FF / #2F7BFF`、绿 `#E8F8F0 / #16A34A`、橙 `#FFF5E0 / #D97706`;分组圆点使用蓝色或青色 `#0EA5A4`,不把整块表单染成状态色。
- 已确认的原型图标沿用对应资源;未定义的图标使用项目既有图标库,不引入第二套组件库或表情图标。无需要时不添加装饰图标。
- 保留清晰的禁用、提交中、焦点和错误状态,状态不只依赖颜色表达;不得为了“干净”删去校验、失败重试或权限说明。
### 文案与数据绑定
- 删除重复解释性提示:不恢复页头“一单一个商品及规格……”、摘要卡下的说明行,也不新增类似的常驻说明段落或黄色提示横幅。
- 字段标签与简短占位提示负责说明输入用途;校验错误、提交失败、无权限及必要业务提示按实际状态就近出现。保留影响客户正确操作的必要信息,不将“去提示”理解为关闭验证或隐藏错误。
- 未填写字段应提供简短 placeholder,例如“请选择车辆类型”“请输入取货联系人姓名”“请选择取货日期和时间”;不要通过 `placeholder=""` 将必要输入提示清空。按字段性质标明选填,不使用整段业务说明代替占位文字;已存在默认值时显示真实值,不为显示 placeholder 清除默认值,尤其不得把有效的 `0` 当作空值。
- 保留真实汇总数据,例如货款预算总上限;摘要和汇总跟随当前表单实时更新,不能保留设计稿中的静态 `1`、`USD` 或 `0 / 1000`。
- 空值显示“—”,合法零值按零展示;金额沿用现有精度处理,不因样式调整改变校验或金额口径。支持多个币种或方向的业务继续联动展示,不用原型示例缩减现有能力。
### 必填校验与稳定布局
- 字段错误提示统一放在输入框右上方,与字段标签同行、靠右对齐;保留必填星号与错误边框。提示出现、纠正或清空时,后续字段和整张卡片不得上下跳动。
- 错误不参与正常文档流,不在控件下面额外预留 16px 空行;标签区应能同时容纳标签与简短错误文案。对当前明确的单行标签,可相对 `.el-form-item__content` 使用 `bottom: calc(100% + 6px)`、`right: 0` 定位,宽度避开标签。更长标签或提示须单独核对,不截断必要错误或覆盖标签、输入内容。
- 必填星号必须配套字段级校验:Element Plus 表单绑定 `ref`、`model`、`rules`,校验项绑定对应 `prop`;文本失焦、选项变化时校验当前字段,提交时校验全部必填项。未通过时不发送创建请求,不用整页错误代替缺失字段提示。
- 填写正确并再次触发校验后清除该字段错误;重置表单时清除校验状态;提交中防重复点击,失败保留填写内容。采购预算单价 `0` 是有效值,不得误报必填。
- 已有金额、格式、权限和服务端校验继续保留;非字段级请求失败仍按原有页面错误反馈处理。本规范不改变业务规则,也不将两页未统一的所有校验逻辑推定为已统一。
### 接入与核对
- 使用现有 Vue、Element Plus 和 `.client-ui`;新增页所需 44px 控件、14px 字号、配色等在新增内容容器内覆盖。列表仍使用下文的 32px 控件,不修改全局 `:root` 使其他页面跟随变化。
- 同一组件同时承载列表、新增和详情时,新增样式必须限制在新增分支;不得扩大到列表、详情或侧边导航。跨模块稳定复用时按应用指引抽取通用能力,不跨模块导入采购页,也不复制设计工具的 React 运行时。
- 新增或整体重排页面时,按前端验收规则核对该操作的承载方式、满宽、字段分组和按钮;重点检查前置选择项是否与三列网格对齐、短字段和成对地址列数、placeholder、长值、摘要联动、空值与零值、校验出现/消失时的位置稳定及正常滚动。纯文案或小间距调整只核对差异,不重复建立完整矩阵。
- 自动检查按实际变更选择;文案和纯样式不自动升级为全量测试、类型检查或构建。真实视觉由人工提供截图确认,部署成功或静态资源命中不等于一屏布局通过;不开展当前阶段未要求的窄屏验收。
## 尺寸与布局
本节用于列表、查询栏和表格工具栏;新增表单使用上文“新增页面”的尺寸。
| 项目 | 标准 |
|---|---|
| 正文、表格、按钮字号 | 13px |
@@ -42,6 +184,8 @@
## 颜色与按钮
本节用于列表操作和状态语义;新增表单按钮的外观使用上文“新增页面”,业务危险语义和权限要求仍须保留。
| 用途 | 文字色 | 背景色 |
|---|---|---|
| 默认操作 | `#1777ff` | 白色 |
+1
View File
@@ -34,6 +34,7 @@
| 单据编号、订单主状态与操作 | [编号契约](业务单据编号契约.md)、[订单状态契约](统一订单主状态与操作契约.md),按问题选一项 |
| 本机资源、最小验证、工作区与协作执行 | [工程执行约束](AI工程执行与协作约束.md) |
| Admin 样式、Client 样式或视觉验收 | [Admin 样式](Admin高密度界面规范.md)、[Client 样式](Client界面样式规范.md)、[前端验收](Admin-Client前端原型还原验收规则.md),不将三份作为共同必读 |
| 海外 PDA 首页、作业列表与待办样式 | [海外 PDA 样式规范](海外PDA界面样式规范.md),不自动套用 Admin/Client 样式 |
| 测试 Jenkins、数据库操作与中文注释 | [测试部署指南](测试环境Jenkins部署指南.md)、[数据库操作手册](../baiyue-firstleg/deploy/sql/数据库迁移操作手册.md)、[数据库注释规范](数据库注释维护规范.md),按操作选读 |
| 测量设备上传 | [墨家接口说明](墨家设备测量上传接口说明-V3.md) |
+4 -3
View File
@@ -10,7 +10,7 @@
| 常用说法 | 区分依据 | 首个定位范围 |
|---|---|---|
| 没有报价、价格未命中、人工定价、手工报价 | FBA 单票费用的显式人工报价,不是价格簿上传或静默回退 | Admin `apps/admin-web/src/modules/inbounds/fee/api.ts` 的 `createManualInboundQuote`;Backend `baiyue-firstleg/firstleg/src/main/java/com/baiyue/firstleg/service/FbaPricingService.java` 的 `manualQuote`,联查 `PlatformFbaPricingController`、`fba-pricing-v1.yaml`;Client 快照类型 `apps/client-web/src/modules/first-leg/types/inboundBilling.ts` |
| 没有报价、价格未命中、人工定价、手工报价、私人地址报价 | FBA 未命中报价时人工定价;PRIVATE 私人地址使用人工头程报价,区别于价格簿上传 | Admin `apps/admin-web/src/modules/inbounds/fee/api.ts` 的 `createManualInboundQuote`;Backend `baiyue-firstleg/firstleg/src/main/java/com/baiyue/firstleg/service/FbaPricingService.java` 的 `manualQuote`,联查 `PlatformFbaPricingController`、`fba-pricing-v1.yaml`;Client 快照类型 `apps/client-web/src/modules/first-leg/types/inboundBilling.ts` |
| 退货换标候选、退货单创建换标 | 客户退货库存进入换标申请,区别于平台审核与 PDA 签收 | `baiyue-firstleg/lastleg-service/src/main/java/com/baiyue/lastleg/returnreceipt/controller/MerchantReturnOrderController.java` 的 `GET /{returnNo}/relabel-candidates`、`POST /{returnNo}/relabel` → `ReturnReceiptService.relabelCandidates/createRelabel`;公共前缀 `/api/merchant/v1/last-leg/return-orders`,客户范围取认证身份 |
| 退货审核、退货驳回、换标审核 | 先区分退货预报准入与换标申请审核,均不是仓储转运审核 | 退货预报 `apps/admin-web/src/modules/overseas-warehouse/pages/LastMileOrdersView.vue`;换标申请 `apps/admin-web/src/modules/overseas-warehouse/pages/RelabelOrdersView.vue`;条件与 API 见该模块 `AGENTS.md` |
| PDA版本、安装包下载、热更新、发布版本、停发 | 平台管理版本与设备检查更新分开定位,先区分国内/海外 PDA | 管理页 `apps/admin-web/src/modules/pda-releases/pages/PdaReleasesView.vue`;设备更新为国内 `apps/pda-uniapp/utils/app-update.js`、海外 `apps/pda-overseas-uniapp/src/utils/app-update.js`;后端查 `baiyue-firstleg/file/AGENTS.md` |
@@ -33,7 +33,7 @@
| 报关资料、退税资料、完成文件 | 平台整柜操作与客户订单上传先按终端区分 | Admin `apps/admin-web/src/modules/container-loading/components/ContainerCustomsPanel.vue`;Client `apps/client-web/src/modules/first-leg/components/CustomsDocumentsDialog.vue` |
| 退货、退货预报、退货换标、退货签收、退货合箱 | 客户退货预报及签收库存,区别于派送异常退回 | Client `apps/client-web/src/modules/overseas-warehouse/views/ReturnOrdersView.vue`;Admin `apps/admin-web/src/modules/overseas-warehouse/pages/ReturnInventoryManagementView.vue`;PDA `apps/pda-overseas-uniapp/AGENTS.md`;Lastleg `returnreceipt/`,见下文“退货预报、签收、库存与合箱” |
| PDA 出库、PDA 发车、扫码出库、整托出库 | 海外 PDA 执行排车和出库,不是平台排车配置或客户派送查询 | 海外 PDA `apps/pda-overseas-uniapp/src/pages/dispatch/dispatch.vue`、`src/api/fulfillment.js`;Backend `baiyue-firstleg/lastleg-service/dispatch/pda/`;统一经 `gateway/` |
| 异常、退回、退仓、回访 | 派送异常退回与库存退货业务不可混用 | 派送查 `apps/admin-web/src/modules/overseas-warehouse/pages/ExceptionOrdersView.vue`;退货预报/库存查 Lastleg `returnreceipt/` |
| 异常、退回、退仓、异常回仓、回访 | 派送异常回仓归 `exceptionorder/`,客户退货预报归 `returnreceipt/`,PDA 两类签收不可混用 | 平台查 `apps/admin-web/src/modules/overseas-warehouse/AGENTS.md`;现场查 `apps/pda-overseas-uniapp/AGENTS.md` 的 `ExceptionReturnWork.vue` |
| 仓储转运审核、转运通过 | 平台转运审核通过弹框 | `apps/admin-web/src/modules/overseas-warehouse/components/WarehouseTransferReviewDialog.vue` |
| 转运驳回、REJECT | API 审核结论;当前弹框无此动作 | `apps/admin-web/src/modules/overseas-warehouse/api/warehouseTransfers.ts` 的 `reviewWarehouseTransfer`;界面能力查最近指引 |
@@ -81,9 +81,10 @@
| 海外仓库主档、名称、地址与能力 | 前端 [Admin](../apps/admin-web/src/modules/warehouses/AGENTS.md);后端 [Warehouse](../baiyue-firstleg/warehouse/AGENTS.md) | [资源归属](业务实现边界.md#海外仓库与通用资料) |
| 海外库位、托盘与资源锁 | [Warehouse Overseas](../baiyue-firstleg/warehouse-overseas-service/AGENTS.md) | [资源归属](业务实现边界.md#海外仓库与通用资料) |
| 车辆管理、司机证照、保养加油、车辆维修/故障/救援/异常、外接货与车次 | [模块指引](../apps/admin-web/src/modules/overseas-master-data/AGENTS.md) | [对应章节](业务实现边界.md#车辆管理司机证照保养加油车辆维修故障救援异常外接货与车次) |
| 拼车需求池、车次余位、销售拼车意向 | [模块指引](../apps/admin-web/src/modules/overseas-master-data/AGENTS.md) | [对应章节](业务实现边界.md#拼车需求池车次余位销售拼车意向) |
| 拼车需求池、车次余位、销售拼车意向、散板加货 | [模块指引](../apps/admin-web/src/modules/overseas-master-data/AGENTS.md) | [对应章节](业务实现边界.md#拼车需求池车次余位销售拼车意向) |
| 国内出仓后船节点 | [模块指引](../apps/admin-web/src/modules/port-schedules/AGENTS.md) | [对应章节](业务实现边界.md#国内出仓后船节点) |
| 海外出库、排车、派送、异常与回访 | [模块指引](../apps/admin-web/src/modules/overseas-warehouse/AGENTS.md) | [对应章节](业务实现边界.md#海外出库排车派送异常与回访) |
| 海外费用明细、仓租库存与资金/投递重试 | [模块指引](../apps/admin-web/src/modules/overseas-business/AGENTS.md) | [后端入口](../baiyue-firstleg/lastleg-service/AGENTS.md#快速索引) |
| 海外业务费用来源与客户财务 | [模块指引](../baiyue-firstleg/finance/AGENTS.md) | [对应章节](业务实现边界.md#海外业务费用来源与客户财务) |
| 自营销量与领星统计 | [模块指引](../apps/admin-web/src/modules/self-operated/AGENTS.md) | [对应章节](业务实现边界.md#自营销量与领星统计) |
| 预约管理与工作日历 | [模块指引](../apps/admin-web/src/modules/appointment-calendar/AGENTS.md) | [对应章节](业务实现边界.md#预约管理与工作日历) |
@@ -6,7 +6,7 @@
> **当前展示版范围已重新冻结:只做船期维护和只读展示,不做自动归班、不消费预报、不改写收货审核、不自动改绑,也不改变现有智能排柜流程。** 首版只需要让管理人员看到每个航次的已收/预计货量、可用容量、按柜型初算的建议柜数、已订柜和待补柜,并据此人工判断是否合并到其他船。后续若要增加货物归班,再单独立项评审。第 15.8 节覆盖本文此前关于自动归班和异常改配的旧口径。
> **展示版统计口径**:每个船期按“收货仓 + 渠道 + 起运港 + 目的港”展示;已收使用现有收货/测量结果,预计量使用现有入仓和智能排柜可读数据;不创建或变更船期归班事实。收货截止时间只用于标记“截止前参考量/截止后风险”,不触发自动分配。订柜数只做只读初算,最终以现有智能排柜和人工确认结果为准。
> **展示版统计口径**:日历仅展示上海时区今天及以后开船的计划。未离仓审核实测货量优先保留有效订舱和排柜对应的船期,未安排或原安排失效的余量按“收货仓 + 渠道”展示在最近一班尚未截仓的有效船期;各船期继续展示自身起运港和目的港。顺延只改变日历货量和订柜参考,不创建或变更船期归班、订舱或排柜事实。订柜数按统一柜型容量向上取整,已离仓柜的容量不再抵扣余货需求,最终以现有智能排柜和人工确认结果为准,详细规则以第 15.8 节为准。
## 1. 输入来源与现状边界
@@ -652,20 +652,21 @@ Phase 1 不提供正常货量的批量改绑、强制赶截止和容量预占;
当前版本允许运营人员维护渠道、周模板和具体船期;货量相关能力全部只读:
- **已收 CBM**:读取现有收货/测量流程已经产生的有效实测结果,不在船期页面重新生成收货事实。
- **有效船期与过期**:按 `Asia/Shanghai` 自然日,月历和汇总只纳入今天及以后开船的计划;今天之前的计划自然过期并从日历移除,不删除记录、不伪造已开船状态。服务端返回上海本地时间 `nextRefreshAt`,取下一零点和同仓、同渠道范围内最近截仓时刻之后 1 毫秒的较早值;截仓查询不受展示月份、船名、港口或状态筛选限制。页面据此自动刷新,失败后延迟 60 秒重试,避免跨月顺延后货量停留在旧值。
- **已收 CBM 与未发货顺延**:读取现有收货/测量流程已经产生且尚未确认国内离仓的有效实测体积。已排柜且关联有效 `RELEASED` 订舱的部分,保留在其开船日期不早于今天、状态为 `OPEN/CLOSED` 的船期,截仓后仍保留;支持既有跨仓、跨渠道安排。未安排或原安排取消、日期过期的余量,按原收货仓和渠道选取 `OPEN`、开船日期不早于今天且截止时间不早于当前时刻的最近一班,按开船时间、船期编号、ID 稳定排序。同一份货量只计入一班,部分排柜按体积分开,不受原收货月份限制;没有下一有效船期时保留原货物事实,后续新增有效计划即可承接。这里只改变只读展示,不改已确认订舱、排柜或真实运输安排。
- **预计 CBM**:读取现有入仓预报或智能排柜可读数据;没有可靠来源时显示“暂无数据”,不凭渠道名称或订单分页猜测。
- **截止前参考量**:按船期的收货仓、渠道、起运港、目的港和 `warehouseCutoffAt` 做查询口径,只用于显示“理论上可供管理人员参考的货量池”,不表示货物已经归入该船。
- **截止前参考量**:对顺延后的待发货量按收货时间与 `warehouseCutoffAt` 区分参考量和风险量,不表示货物已经绑定该船。每次月历查询共用一个业务时刻,避免跨过截仓瞬间造成重复。
- **已明确本船量**:只读取现有系统已经明确关联到该船名/航次或现有订舱/柜次事实的数据;日历不新增关联。
- **建议订柜数**:按可展示货量和统一柜型容量做初算,显示计算时间、柜型和“最终以智能排柜/人工确认结果为准”;不创建订舱、不锁舱位、不改柜次。
- **建议订柜数**:对展示的待发实测与可核验预计体积之和,除以统一柜型容量向上取整;正货量不足一柜也算一柜,零货量为零柜。晚到/风险标签不直接抹除已收货量。待补柜按货量先扣除未离仓柜的可用订舱容量,再按对应柜型向上取整,下限为零;已离仓柜的容量不能抵扣仓内余货。日历卡片、汇总和各柜型方案保持一致。不创建订舱、不锁舱位、不改柜次。
- **合船判断**:页面只提供“本船未满、建议关注相邻船期”的提示,并展示相邻船的可用容量和货量对比;不自动合并、不自动改绑。
展示版的数据实现口径再明确一层:已收实测只统计测量审核为 `APPROVED` 且有 `actual_volume_cbm` 的有效入库单,按上一班截止时间到当前班截止时间的窗口汇总;主单只在未拆分时统计,拆分后的有效余量子单单独统计,避免父子单重复。当前没有可核验的预计体积来源时,预计量按 0 展示并在页面提示“暂无可核验数据”,不得把申报体积、原始体积或分页列表合计冒充预计量。已订柜读取已放舱订舱的柜型需求,优先识别已有船期关联,同时允许用仓库、渠道、港口、船名、航次和开船日期做确定性只读匹配;日历页面不创建关联。建议柜数只按统一柜型容量计算,待补柜只做提示。
展示版的数据实现口径再明确一层:已收实测只统计测量审核为 `APPROVED` 且有 `actual_volume_cbm` 的有效入库单,限定 `WAIT_PALLETIZE/WAIT_SPLIT/LOADING/LOADED`。未拆分单与拆分后的余量单各按自身实测体积统计;PDA 拣货结算后处于 `FULLY_SPLIT + LOADING/LOADED` 的源单已归一化为实际装柜部分,未离仓前同样保留,不能与整票原始体积重复。每票按有效装柜明细拆分为已离仓体积、有效订舱占用体积与未安排余量;已离仓要求客户、入库单和柜次一致,离仓状态为 `WAITING_FOR_LOADING` 且存在确认时间。扣除已离仓和有效订舱占用后,余量最低为零;订舱占用部分单独计入对应船期,撤销离仓后按现有运输安排重新纳入。当前没有可核验的预计体积来源时,预计量按 0 展示并在页面提示“暂无可核验数据”,不得把申报体积、原始体积或分页列表合计冒充预计量。已订柜读取已放舱订舱的柜型需求,存在有效显式关联时只认该关联;没有有效显式关联才用仓库、渠道、港口、船名、航次和开船日期做确定性只读匹配,每条订舱只选一班。已订总容量保存在 `bookedPlanningCapacityCbm`,扣除已离仓柜后的可用容量为 `availableBookedCapacityCbm`;按订舱需求中的柜型容量整柜扣除,同柜多票只扣一次,撤销离仓后恢复。日历页面不创建关联,待补柜只做提示。
当前版本明确不做以下写操作:
1. 收货审核通过时,不调用船期日历服务,不写入 `fl_sailing_assignment`、预报消费或船期实收事实。
2. 创建或修订预报不自动生成船期归班;预报维护接口不作为本轮页面入口。
3. 取消船期不自动把任何货物转到下一班;货物归属仍由原智能排柜和订舱流程维护。
3. 取消船期后未离仓货量按上述规则顺延展示;不改写货物实际归属,仍由原智能排柜和订舱流程维护。
4. 页面不提供货量异常改配、手工绑定实收、订舱关联/解除等操作;这些操作留在现有业务流程。
因此,本轮验收重点从“自动归班正确”改为:船期维护正确、展示口径透明、已收/预计/已订柜/建议柜数不重复、取消或截止只影响展示标签、不会改变原收货和智能排柜数据。后续如果需要让管理人员在页面上确认“合并到哪一班”,再单独增加人工确认动作和正式归属模型。
因此,本轮验收重点从“自动归班正确”改为:船期维护正确、展示口径透明、未发货量顺延且不重复、建议柜数向上取整、取消或截止只影响只读展示,不会改变原收货和智能排柜数据。后续如果需要让管理人员在页面上确认“合并到哪一班”,再单独增加人工确认动作和正式归属模型。
+166
View File
@@ -1,5 +1,78 @@
# 测试环境单机部署与配置契约
## 2026-10-30 财务与采购、运输 review 修复续批:TEST 已更新
- 用户授权更新测试环境,发布本批已审阅的财务、采购照片整改、费用审核前调整与作废、运输取消及托数展示,并包含客户账单编号详情入口、对账单缓存页迟到响应隔离和部分拣货中文状态三项修复。发布前对齐测试分支新增的异步建单资金状态、异常退回及人工完结;保留两侧修改,补齐采购状态类型,未覆盖其他对话已提交的功能。
- Admin 提交 `7704532e8f2866718572a694af883780d9fab422`,`admin-web-test #738` SUCCESS;Client 提交 `63193d04deb6d739859383a52bc367ac86877889`,`client-web-test #459` SUCCESS;Lastleg、Finance 固定提交 `035e7e06af1f8c0ece3c0404085227da6addf8ad`,分别为 `baiyue-firstleg-lastleg-service #449`、`baiyue-firstleg-finance #146` SUCCESS。实际运行标签与对应提交前 12 位一致。Firstleg 及两个 PDA 无本批待发布修改,未重复发布。
- 用户单独授权执行 [对账单明细索引脚本](../baiyue-firstleg/deploy/sql/finance-reconciliation-line-uniqueness-repair.sql),SHA-256 为 `45887a1260404da7a86c9f78099fc8b5cdbf48e703c4d3db6b4e726cd58e52cd`。以一条原子 ALTER 将 `fin_bill_line` 的费用来源全历史唯一键改为单内唯一键,并补费用来源普通索引;原有 69 条明细的逐行摘要、字段及其他索引均保持一致,没有修改金额、回填或删除数据。
- 合并后的 Admin 234 项、Client 49 项及后端 154 项定向检查通过;输入未变的三项修复回归 62 项和其余财务定向结果复用。旧预算用例仍按同步建单假设断言跨客户提交失败,修正为验证相同请求键不能读取其他客户原单后复测通过,未放宽生产隔离。发布合同 17 项通过,新异常入口再次通过路由合同 5 项;Mapper 扫描核对 10 个持久化模块、432 个 Mapper。前端流水线类型检查与构建通过,后端复用已通过的定向验证,保留生产和测试源码编译、打包及健康检查。
- 最终只有 Admin、Client、Lastleg、Finance 四个应用镜像变化,15 个在用应用均 running/healthy;全部已记录容器的环境变量与挂载摘要不变,三个历史暂停服务保持原状。两前端临时 SCM 固定已逐字恢复原配置;未修改 Gateway、Nacos 或其他环境。
- 202 个 Admin/Client 公网首页及相关资源摘要与运行容器一致,确认账单编号链接和部分拣货文案进入产物。28 项真实 HTTP 检查全部通过,覆盖对账单列表与详情、费用来源、应收统计、应收应付结算、海外费用资格、采购、卡车、出库、异常及既有履约查询,并完成独立会话登录和退出。未进行业务写入回归,页面视觉及完整作业流程待人工验收。证据保存在本机私有临时目录 `codex-test-fix-release-20261030-01c45f16`。
## 2026-10-30 本批 review 修复及已完成修改:TEST 已更新
- 用户授权发布当前已完成代码,本批包括 Admin 采购审核仓库查询竞态、装柜及派送资料展示,Client 企业编辑与采购重试,海外 PDA 作业列表、待办和废弃扫码,以及 Lastleg 废弃预留重放、实际箱唛保存与预算到期判断。预算到期查询改为传入 UTC 截止时间,避免数据库会话时区导致刚创建的预留提前释放;未改变接口或追加数据库字段。
- Admin 固定提交 `4abd6ffd5d3af5d7d9604e36062a301a2731162f`,`admin-web-test #736` SUCCESS;Client 固定提交 `55868177cdc397cd69043adf1ec9fa7e1f32c5e0`,`client-web-test #457` SUCCESS。Firstleg、Lastleg 固定提交 `872215367b07b0e7af5674721df54dea0220cdd8`,分别为 `baiyue-firstleg-firstleg #528`、`baiyue-firstleg-lastleg-service #447` SUCCESS。实际运行标签均与对应提交前 12 位一致。Finance 保持本批开始时的 `e1bfcfc8f529`,无受影响源码,不重复发布。
- 用户单独授权执行 `discard-actual-carton-marks.sql`,仅为 `baiyue_lastleg.ll_cargo_discard_item` 新增可空 JSON 列 `actual_carton_marks_json`;SQL SHA-256 为 `d6208091cb8d0e78b9705768a62ec0c29056b0840dd2205025d68a53620f5202`。执行后字段已就绪,原有 9 条记录及索引保持一致,未回填或删除数据。其他依赖表与字段只读核对已存在,未执行额外 SQL。
- 海外 PDA H5 固定提交 `fadef061919add3c341d03c6b7d7ea883b0f15f3`,按既有宿主机 Nginx 静态托管方式备份并更新。服务器及公网 88 个文件摘要均与产物一致,整体 SHA-256 为 `c857b2bac5d0d65a29b254f8c9ff987078b147993306dfedddee6c2bc22d8e6b`;站点配置摘要不变,同源 Auth 登录、退出两项检查通过。国内 PDA 未发布,海外 PDA 未发布应用容器、APK 或 WGT。
- 定向验证通过:Admin 241 项、后端 85 项、海外 PDA 87 项及 H5 部署合同 4 项、部署合同 17 项、指引索引合同 1,637 项;Client 复用输入未变的 43 项采购定向回归。前端 Jenkins 类型检查与生产构建通过,后端流水线复用上述定向验证,完成生产及测试源码编译、打包和健康检查;不外推为整项目测试通过。
- 最终仅 Admin、Client、Firstleg、Lastleg 四个应用镜像变化,15 个在用应用均 running/healthy,全部已记录容器的环境变量和挂载摘要不变,三个历史暂停服务保持原状。Admin、Client 的 Jenkins 临时 SCM 固定已逐字恢复原配置;首次轻量检出固定提交失败的两次任务未进入部署,改为完整检出后上述发布成功。未修改 Gateway、Nacos 或其他环境。
- 196 个 Admin/Client 公网首页及相关资源摘要与运行容器一致;16 项 HTTP 检查通过,覆盖货柜、节点、船期、排车、尾程、统一订单、装柜关联、采购与废弃查询,并完成独立会话登录、退出。未执行业务写入回归;页面视觉、带仓身份的 PDA 操作和真机扫码待人工验收。执行证据保存在本机私有临时目录 `codex-test-release-20261030-e5f50c3a`,包括固定源码、定向验证、SQL 回执、构建结果、配置恢复、资源摘要及最终核对。
## 2026-10-28 海外 PDA 托盘校验竞态:TEST H5 已更新
- 用户授权部署本轮托盘校验修复,海外 PDA 固定提交 `a74f0a1e36f3c67c0dbbe4b039b5a3ba83a8d305`。托盘输入、入仓单、柜会话、作业账号/仓或页面生命周期变化后,旧校验的成功与失败响应均被丢弃;重新校验当前托盘后才能提交实收。已发送实收的服务端结果仍沿原流程确认。
- 按现行宿主机 Nginx 静态托管方式更新海外 PDA TEST H5:核对实际生效站点及 `nginx -T`,备份将覆盖的文件,先上传资源、最后原子替换首页;保留既有站点配置、证书目录和旧资源。服务器及公网 83 个文件摘要均与本次产物一致,产物整体 SHA-256 为 `5fc1c9ccb8f9be75fd1779f31236d794962938c3e9f397205a912b082da63361`。
- 37 项收货定向测试、4 项 H5 部署合同、H5 构建及产物校验通过;同源 Auth 代理独立登录和退出两项检查通过。Nginx 配置摘要不变,15 个在用应用容器均 healthy,所有既有容器的镜像、环境变量、挂载和运行状态保持一致。本批未执行 SQL、发布 PDA 容器或 APK/WGT;带仓身份的真实收货及 Android 扫码硬件仍待人工验收。
- 执行证据位于本机私有临时目录 `codex-pda-test-release-20261028-2c73e245`,包含固定源码及产物摘要、站点前后核对、覆盖文件备份摘要、公网逐文件校验和最终结果。
## 2026-10-28 履约状态与船节点署名:TEST 已生效
- 用户授权发布本批已 review 的修改及 PDA 状态修复。发布前已快进合入远端提交并保留全部工作区编辑;Client 同步包含已提交的统一换标明细模板与运输字段文案。Admin 整理装柜详情重复内容、照片类型、尾程筛选偏好及排车资料入口,订单详情补齐 `UNASSIGNED/PROCESSING/COMPLETION_FAILED` 中文状态;船节点日志使用操作时保存的用户名快照。
- Admin 提交 `d990637b387291a6b692fcb1514355f5aa10cfe6`,`admin-web-test #730` SUCCESS,运行标签 `d990637b3872`;Client 提交 `fdf646227eed741b1867d9cfe5c73d51c0e8c0e0`,`client-web-test #448` SUCCESS,运行标签 `fdf646227eed`;Firstleg 提交 `353c86f4cfbdb7526d6b231c3155b5c32e3448f3`,`baiyue-firstleg-firstleg #527` SUCCESS,运行标签 `353c86f4cfbd`。其他服务及两个 PDA 未重复发布,Lastleg 保持本轮开始时已部署的 `71a1026e21c2`。
- 用户单独授权后,以一次原子 ALTER 为 `baiyue_firstleg.fl_carrier_schedule_node_fact` 新增可空 `operator_id BIGINT UNSIGNED`、`operator_name VARCHAR(128)`;SQL SHA-256 为 `239bc75241aa4f61de782c52e7591cbf3ecc18e4d0876dee7b99245a70fac08c`。执行前后原有节点字段的逐行摘要、记录数及索引摘要一致,未回填历史节点。结构定义与 Firstleg 模块基线、国内统一空库基线一致。
- 定向自动检查通过:Admin 354 项(本次状态及详情 48 项,输入未变的其他 306 项复用 review 结果)、Client 91 项、Firstleg 54 项及部署静态合同 20 项。后端流水线复用已通过的定向测试并编译测试源码,前端流水线类型检查及构建通过;这些结果不代表完整模块或真实业务写入回归。
- 最终 15 个在用应用容器全部 healthy,仅上述三个应用镜像变化,环境变量、挂载及既有暂停容器状态保持一致。177 个 Admin/Client 公网首页及相关静态资源摘要与运行容器一致,PDA 状态和节点署名代码已进入产物;11 项只读 HTTP 检查通过,覆盖货柜列表/详情、节点事实、船期任务、排车、尾程订单及装柜/PDA 关联,并完成独立登录与退出。复用原 API 路由,节点事实响应新增 `operatorName`,本批未修改 Gateway 或 Nacos。页面视觉及真实补录、确认出仓的写入效果待人工验收;执行证据位于本机私有临时目录 `codex-test-release-20261028-review-5ae0ec39`。
## 2026-10-28 采购出库费用提示与费用重试列:TEST 已生效
- 用户要求继续更新新提交,本批按已提交版本核对。检查开始时,Admin 业务提交 `4581130b62058880554f310ecb30d9f8d7042ed1`(`admin-web-test #727`)和 Lastleg `f3d57869f2f80b52912ff355218c000be57becb4`(`baiyue-firstleg-lastleg-service #441`)已部署成功并 healthy,直接复用既有发布结果。采购创建出库不再以费用缺失或未审核作为门禁;费用查询只提供提示,原采购状态、数量、跟踪号、客户隔离、权限及幂等校验继续执行。
- 补充检查修正一处测试夹具默认值,由 `undefined` 改为新接口允许的 `null`,仅提交该测试文件。Admin 最终提交 `4fdba0fb5d47f2917703880ec7cd6865ae297db9`,`admin-web-test #728` SUCCESS,实际镜像标签 `4fdba0fb5d47`;采购业务源码与 `4581130b` 相同。Lastleg 实际标签保持 `f3d57869f2f8`,未重复发布。
- 已只读核对 [V35 费用重试列修复](../baiyue-firstleg/deploy/sql/migrations/overseas/baiyue_lastleg/V35__widen_finance_fee_command_action.sql) 的运行条件,脚本 SHA-256 为 `2e15dcc4e63b9ccc35d17197c6e41f0baaa75fb7f92f761dd55f58b393bdc57e`:`baiyue_lastleg.ll_finance_fee_command.action` 已为 `VARCHAR(32) NOT NULL`,`uk_ll_finance_fee_command` 仍按 `operator_id/action/idempotency_key` 唯一。本轮未执行 SQL,也未进行真实费用资金重试或余额操作。
- 前端 7 项、后端 7 项定向测试通过,包含采购出库可选费用提示、费用幂等动作扩列及原唯一约束;相关前端生产和测试源码类型检查通过。Jenkins 前端构建通过,不以本批定向检查代表完整模块回归。
- 最终 15 个在用应用容器均 healthy,相对本轮开始时仅 Admin 测试修正提交的镜像变化;环境变量及挂载保持一致,Client、其他服务及既有暂停容器保持原状。6 项只读 HTTP 检查通过,覆盖采购列表、详情、出库工作流、本单费用及独立登录/退出;86 个 Admin 公网首页及相关资源摘要与运行容器一致,采购费用提示代码已进入产物。
- 排车列表、Client 计费界面及排车业务文档的 7 处原有未提交编辑保留,不混入本批。未新建采购出库或执行真实资金重试,页面及写入业务效果仍待人工验收。执行证据保存在本机私有临时目录 `codex-test-release-20261028-next-36c8286c`。
## 2026-10-28 预约修复与客户工作台续批:已发布 TEST
- 用户授权发布当前全部修改,合并远端已发布的排车操作与客户海外仓界面修复后,提交并发布当前工作区的预约确认、原货件资料带入、无确认时间排车、测量体积显示、派送资料及公共筛选调整;Client 同步订单列配置持久化、最新计费量展示和报关资料弹框调整。两个 PDA 无新增源码修改,本批未重复发布。
- Admin 提交 `39b9a6a1a0b5ac89acd05544e1cc2226d0e30d07`,`admin-web-test #726` SUCCESS,实际镜像标签 `39b9a6a1a0b5`;Client 提交 `c187544a94aa90681a515f777af4be668d9383c7`,`client-web-test #446` SUCCESS,实际标签 `c187544a94aa`。Lastleg 提交 `4f2d90b490f355b3f575bf0aedf000e5f2a5b3b2`,总控 `backend-java #725`、单服务 `baiyue-firstleg-lastleg-service #440` SUCCESS,实际标签 `4f2d90b490f3`。
- 用户单独授权执行 [费用菜单归属修复 SQL](../baiyue-firstleg/deploy/sql/overseas-fee-menu-finance-parent-repair.sql),SHA-256 `5229d0e3b7174214c9697b20c5d9a15ac89a9352c811399b42129709c34395f4`。仅在 `baiyue_iam` 将海外费用菜单更名并归到财务管理,按脚本刷新相关授权版本;权限接口及数据库只读查询确认全部后置条件,临时过程已移除。首次执行后的回执校验误按整数判断 JSON 布尔值,随后仅修正校验并只读复核,未重复执行 SQL。
- 本批 Admin 336 项定向回归通过,另复用输入未变的 36 项;Client 63 项通过,复用此前 14 项;Lastleg 共 111 项相关测试通过,其中 57 项结果在输入未变时复用。Admin 相关生产及测试源码类型检查通过,两个 Web 的 Jenkins 构建通过;后端 Jenkins 明确复用已完成定向结果并跳过重复测试执行,仍完成生产/测试源码编译及打包,不将此记为全模块回归。预约原生弹框测试已同步正式确认及原货件接口;到仓修改沿用现行简化流程,未恢复旧的失败后锁定行为。
- 最终仅 Admin、Client、Lastleg 三个镜像变化,15 个在用应用容器均 running/healthy,环境变量及挂载摘要不变;既有暂停容器保持原状。未修改 Jenkins Job 配置、Nacos 或其他环境,未清库或删除业务记录。
- 最终 13 项 HTTP 检查通过,包含预约货物及有效货件资料契约、费用菜单归属、采购工作流、财务及订单读取、独立登录与退出;两个 Web 公网共 191 个首页及相关资源摘要与运行容器一致(Admin 84、Client 107),订单列配置持久化及状态列元数据已进入产物。未在共享测试环境新建业务数据验证实排车或采用资料写入,页面效果与完整业务闭环仍待人工验收。
- 执行与核验记录保存在本机私有临时目录 `codex-test-release-20261028-all-ffd3416f`,包含各仓库版本、定向测试报告、Jenkins 状态、SQL 回执、容器及公网资源摘要和最终 HTTP 结果,不含凭据。
## 2026-10-28 Admin 统一布局与已完成续项:已发布 TEST
- 用户授权提交当前工作区及其他对话已完成的修改并更新 TEST,随后明确本批只发布已完成修改;仍在开发的预约资料读取和预约时间修复保留在工作区,未提交、未发布。本批包含状态列位置及个人列序恢复、详情全宽与间距、计费预览和外箱快照、测量体积显示、排车 BOL 直接操作及作业界面文案调整。
- Admin 最终提交 `6f8dc920ca917c55bd80a49750549f62a50fcc4d`,`admin-web-test #724` SUCCESS,实际镜像标签 `6f8dc920ca91`;此前首批 `#723` 已发布 `e41e9e6d3fbd6a1f6948e415dc3e3cfc262c0a3e`。Firstleg 最终提交 `ca61f79b6d68c1cbabb6077f28266ed33da443ac`,总控 `backend-java #724`、单服务 `baiyue-firstleg-firstleg #526` SUCCESS,实际标签 `ca61f79b6d68`。Lastleg 提交 `b2e4f0d246a889331d18cac8d6ec827099df9943`,总控 `#723`、单服务 `baiyue-firstleg-lastleg-service #438` SUCCESS,实际标签 `b2e4f0d246a8`。
- 发布前只读烟测发现 TEST 缺少采购新流程表,收发货查询返回 S0500。用户单独授权后,仅执行 [采购流程建表脚本](../baiyue-firstleg/deploy/sql/overseas-procurement-workflow.sql),SHA-256 `c99c915f9a2369cb45e4e6ee5bf7fbea7a8cef19afbc0ea008045aed5339cf32`;三表执行前均不存在,执行后 `ll_procurement_workflow_receipt`、`ll_procurement_workflow_outbound`、`ll_procurement_workflow_command` 均为空,字段、中文备注及主键/索引已核对。未执行旧表退役或测试数据重置脚本,未回填数据。
- 前端最后一轮 378 项定向回归通过,含 79 项样式合同;其他批次公共表格及相关模块验证结果复用,Admin 类型检查和生产构建通过。Firstleg 续项 73 项、Lastleg 当前采购与费用边界 54 项定向测试通过;架构检查 15 项、Gateway 路由 5 项和 Mapper 扫描通过。初次总控 `#721` 因照片端口、车次模型的静态断言未同步而失败,精确修正后复验通过。
- 总控 `#722` 中 Firstleg 完整模块已完成 1,853 项报告,其中 9 项按既有条件跳过;Lastleg 完整回归未完成,任务因与已验证变更范围重复而主动终止,确认 Maven 锁释放。后续 `#723`、`#724` 明确复用对应源码的已完成验证并跳过重复测试执行,仍完成生产/测试源码编译、打包及部署健康检查;不将 `#722` 或 Lastleg 全模块记为通过。
- 最终逐项比对仅 Admin、Firstleg、Lastleg 三个应用镜像变化,15 个在用应用容器均 running/healthy;全部已记录容器的环境变量和挂载摘要不变,历史暂停容器保持原状。Client、两个 PDA 无本批已完成源码差异,未重复发布;未更改 Jenkins Job 配置、Nacos 或生产/灰度环境。
- 发布后 76 个首页和相关脚本/样式资源 HTTP 内容摘要与运行容器一致,已确认公共 DataTable、异常订单、应收/应付结算页的状态跟随编号元数据实际进入线上脚本。最终 10 项 HTTP 检查全部通过,覆盖异常订单、客户回访、采购列表/详情/工作流、本土卡车、统一订单、应收结算单及独立会话登录/退出;采购收发货查询已恢复。未造业务数据,未进行实际计费、收发货或人工页面截图验收。
- 文档索引合同仍有 5 项既有断言缺失,未计入通过项;预约修复及页面人工验收不在本批完成范围。执行和核验记录保存在本机私有临时目录 `codex-test-release-20261028-46819379`,包括 SQL 回执、各轮 Jenkins 日志/结果、测试报告、容器摘要及最终 HTTP 结果,不含凭据。
## 2026-10-27 船期日历顺延与订柜建议:已发布 TEST
- 用户授权部署本轮已提交的船期日历修改。Firstleg 最终提交 `57cd211973a87176a902eafdc6c68b4b501acb58`,`baiyue-firstleg-firstleg #523` SUCCESS;Admin 提交 `3464f35a010582fd7f86807d4db3b01c82dd6cb6`,`admin-web-test #721` SUCCESS。实际镜像标签分别为 `57cd211973a8`、`3464f35a0105`,均 running/healthy;发布前后仅这两个应用容器变化,环境变量及挂载摘要未变,Admin 临时 SCM 固定已逐字恢复。
- 首次 Firstleg `#522` 容器健康,但真实 11 月月历查询发现跨表排序规则冲突(MySQL 1267)。已在 Mapper 中按字段完整长度统一文本比较,保留完整渠道、港口、船名和航次匹配;修复后 48 项后端定向测试通过,再发布 `#523`。另有 28 项发布静态合同通过;复用 Admin 27 项业务测试,Jenkins 类型检查及生产构建通过。
- 发布后 12 次只读业务 HTTP 检查均成功,覆盖历史月、当前月、下月、四个有效船期的货量汇总和订柜建议,以及原货物渠道筛选。10 月五个过去船期已从月历隐藏,11 月四个船期正常返回,并提供下一刷新时间。Admin 健康入口、船期页面及船期脚本均返回 200,页面和脚本摘要与运行容器一致;独立验收会话已退出。
- 原截图船期 `SL202610210001` 的渠道为 `EXX_RAIL_NY`;首次发布时 11 月四个船期均属于另一渠道,同仓同渠道筛选为空。随后用户授权真实 HTTP 验收,按该仓库、渠道创建五个带 TEST 标记的临时船期;验收时实际未发货量为 123.986 m³,40GP/40HQ/45HQ 分别建议及待补 3/2/2 柜。等待真实截仓时间后,前班体积归零、下个月承接全部 123.986 m³、后续班为零;再取消承接班,体积完整进入下一班,没有重复统计。顺延仅改变只读货量投影,没有迁移正式订舱或排柜归属。
- 本轮专项正式执行 46 次 HTTP 请求、29 项断言全部通过,另有 6 次只读预检请求;覆盖过去船期隐藏、今天保留、三柜型向上取整、跨月筛选的刷新边界、真实截仓与取消顺延、未登录/不存在船期/陈旧版本拒绝,以及原业务船期及其历史不变。五个临时船期 `SL202610270001` 至 `SL202610270005` 全部取消并保留审计,未留下开放验收计划,独立会话已退出;因此该渠道仍需业务人员配置正式后续船期。没有在真实环境操作已订容量、离仓或撤销离仓,相关边界仍以定向测试为证,人工页面验收待完成。
- 部署阶段未造业务数据,后续验收只创建、编辑拒绝探测和取消自有临时船期;未执行业务 SQL、修改 Nacos、改动货物/订舱/排柜或发布其他服务,验收前后两应用容器版本及健康保持不变。部署证据在本机私有临时目录 `codex-sailing-release-20261027-iZrD1t`;HTTP 专项证据在 `codex-sailing-http-20261027-raL6DD` 的 `preflight.json`、`execute.json` 和 `summary.json`,含逐请求诊断及写入前检查点,不含凭据。
## PDA H5 发布方式(2026-10-23 当前约束)
- 国内、海外 PDA H5 在 TEST 与既有灰度统一采用宿主机 Nginx/宝塔站点直接托管构建产物。两端独立根目录,`location /` 读取上传的静态文件;`/gateway-api/` 独立转发当前环境统一 Gateway `/api/`。PDA H5 不再作为容器发布单元,不构建、恢复或发布旧 H5 镜像/Compose 服务;Admin、Client 与后端发布方式不受本条影响。
@@ -7,6 +80,99 @@
- 用户本轮已删除灰度旧 PDA 容器,并按本轮提供的命令把两站点页面代理改回静态文件;用户回传国内、海外域名首页均 HTTP 200,并确认恢复。该结果不外推 TEST 容器清理、其他代理节点或完整业务验证;本轮未远程执行其他环境删除或发布。
- 2026-09-29 起的 TEST H5 容器方案、2026-10-07 灰度容器/端口转发及后续镜像更新记录仅证明当时部署事实,已被本节发布方式取代。历史 `reports/gray-release-20261007/`、`reports/three-module-gray-20261012/` 等脚本与报告只用于追溯,不得重跑以恢复 PDA 容器或覆盖站点路由。
## 2026-10-26 排车档案照片与装车多图:已发布 TEST 并完成定向验证
- 用户确认执行照片表 SQL 并发布 TEST。后端 PR #38 合入 `test`,固定发布提交 `be9f5d2a30e4d7441f72ac3e0ac1e32cfd377e1a`;Admin PR #30、海外 PDA PR #10 合入 `release/test`,分别固定为 `04b099249e710f4c9ff5665a35cbfed8e3eeba66`、`3934ad57f89fed68bdff6e792d11f2af46d9db87`。保留测试分支既有费用、仓租和采购改动,解决 SQL 基线与业务索引冲突,统一初始化建表数为 240;未重放初始化。
- 唯一数据库写入为 `deploy/sql/lastleg-fleet-resource-photos.sql`,SHA-256 `9721e33dc1d9c38c4c7c88fc435466f1bd547bb650af64fcb3106af4c1201c16`。执行前确认目标表不存在,执行后核对 `baiyue_lastleg.ll_fleet_resource_photo` 的 9 个字段及空表状态;仅新增照片版本表,未回填或删除业务记录。
- File `#159`、Lastleg `#433`、Admin `#715` 均 SUCCESS,耗时分别 66.811、106.009、61.291 秒。后端明确检出固定提交并复用已通过定向门禁,跳过重复测试执行但保留生产/测试源码编译、打包和健康检查;Admin 类型检查、生产构建和发布通过。Admin 临时 SCM pin 已恢复并逐字核对原配置。实际后端镜像 tag 为 `be9f5d2a30e4`,Admin 为 `04b099249e71`;只有这三个容器镜像变化,15 个在用应用容器均 healthy,所有已记录容器的环境变量及挂载摘要保持不变,未处理历史退役容器。
- 海外 PDA H5 在核对实际生效的宿主机 Nginx 站点及 `nginx -T` 成功后,先备份覆盖文件,再上传资源、最后替换首页。服务器及公网 83 个文件 SHA-256 均与本批构建一致;没有发布 PDA 容器、APK 或 WGT。Admin 公网首页与运行容器摘要一致,61 个首页引用资源均 HTTP 200。
- 真实 HTTP 使用专属 TEST 合成车辆、司机和图片验证两类档案上传、版本冲突拒绝、当前与历史图片下载,以及新建排车自动复制两类档案照片。替换档案后,原排车的文件引用和图片内容保持不变。23 项照片及样本收尾检查通过,随后 13 项只读复核及线上资源检查通过;另读取已有有效装车单资料成功。合成空排车 `PC202610260001` 已按正式接口取消,车辆和司机已停用,独立会话已退出;无货物、库存或费用操作,合成档案、图片和审计记录保留。
- 两次验收脚本假设已纠正并保留原失败记录:空照片字段会由 JSON 序列化省略;未进入装车阶段的空草稿必须返回 A0409。前者沿同一组已创建资源继续验证,未重复造主档;后者按正式阶段门禁核对,未绕过状态推进。未因此修改生产代码或再次部署。
- 合并门禁为后端 117 项定向用例、Admin 104 项业务用例、PDA 4 项部署合同,以及 23 项部署拓扑/恢复合同;Admin 与 H5 构建通过。后端照片表测试截取范围、Admin 入库详情组件隔离问题已在测试分支修复并复测。Admin 样式合同仍有 4 项测试分支既有失败,未宣称全量回归通过。每类五张的完整现场上传/替换、装车至签收全链、人工页面及 PDA 真机相机验收仍待完成。
- 本轮不发布生产或灰度,不改 Nacos/Gateway 配置。证据保存在本机私有 `artifacts/chongchong-global/fleet-photo-test-20261026/`,包括 SQL 回执、Jenkins 日志/状态、配置恢复核对、静态文件摘要及 HTTP 报告;凭据未进入仓库或报告。
### 同日 PC/PDA 同步修复续批:已更新 TEST,真实 HTTP 91 项通过
- 最新 Lastleg `#436`、File `#160`、Admin `#716` 均 SUCCESS,实际镜像分别为 `00616d593001`、`3e0d8d6c8849`、`0137fd3a4c8c`,三个容器均 healthy;与续批发布前相比仅这三个容器镜像变化,环境变量及挂载摘要未变。Admin 临时 SCM pin 已恢复。海外 PDA H5 基于 `105c7825b49f5558ed4b5f83ae161a0762ceecfc` 加工作区已有扫码提示改动构建,两个未提交文件的摘要单独记录;服务器及公网 83 个产物摘要均一致,未发布 APK/WGT。
- 合成测试排车 `PC202610260002` 沿同一业务链分阶段续跑,累计 **91/91 项 HTTP 检查通过**,补齐上批待验的每类五张上传/替换与自动发车。五类统一为司机驾驶证、车牌照片、装车完成、封车照片、BOL 司机签字;档案图片及 PDF 驾驶证自动复制至前两类,改车/司机后旧资料失效、重审带出新档案,旧轮上传和旧待绑定文件被拒绝。PC/PDA 交替填满每类五张、拒绝第六张、满额替换及幂等重放均通过,两端 25 份文件引用和下载字节一致。
- 两张原生转运入库单完成仓租预校验、真实 HTTP 拣货及装车确认,自动生成唯一出库单和派送单,最终 DELIVERING、出库两箱;不足量装车被拒绝,拣货/装车重放未重复扣库存或生成单据。临时海外 PDA 账号已停用、验收会话退出,合成单据和资料保留。本续批未执行 SQL、重置数据、修改既有 PDA 身份或操作生产/灰度。
- 真实 HTTP 先发现 File 尚未同步 PDF 资料策略,补发 File 后照片检查通过;随后发现仓租把转运尾程单 ID 当作库存入库单 ID,已改为核对转运单真实入库关联,保留错单和缺失关联拒绝。该修复 8 项定向测试通过;本批 File 13 项、照片后端 24 项、Admin 14 项和 PDA 61 项受影响测试及相应类型/构建检查通过。Lastleg `#434` 误启的冗余全模块测试已主动终止并确认进程退出;后续发布复用定向结果,不宣称全模块回归通过。
- 续批证据位于本机私有 `artifacts/chongchong-global/dispatch-loading-test-20261026-r2/`,最终为 `http-final/report.json` 与 `final-verification.json`;各阶段失败、修复、部署及续跑记录保留。这里只覆盖至自动发车,不替代签收链、人工截图或 Android 相机/扫码硬件验收。
### 2026-10-27 装车资料单列布局:已发布 TEST
- 用户确认发布 PC 装车资料布局调整。Admin `release/test` 提交 `4595dfef3475fccd76669338a27d91804dc14bde` 已推送,`admin-web-test #717` SUCCESS(60.496 秒),实际容器镜像 `4595dfef3475` 且 healthy。五类资料改为单列分区,每张资料的预览、保存时间及更换操作逐行对应,不再展示文件名;时间格式统一到秒。上传、自动带出及权限逻辑未变。
- 复用输入未变的 14 项组件回归与定向模板类型检查;Jenkins 类型检查、构建及发布通过。公网首页及 63 个相关资源与容器内产物摘要一致,已验证单列组件及时间格式代码。仅 Admin 镜像变化,容器环境变量及挂载摘要不变,Jenkins 临时 SCM pin 已恢复;未发布后端/PDA 或执行 SQL。
- 本批发布与资源验证不代替修改后人工视觉验收。证据保存在本机私有 `artifacts/chongchong-global/dispatch-loading-layout-release-20261027/`,含构建状态、配置恢复、前后运行版本、`public-verification.json` 与 `final-verification.json`。
### 2026-10-27 维护车辆附件上传:已发布 TEST
- 用户确认本批部署测试。Admin `release/test` 提交 `392f94e95cc0119c6f5cd934336f31849bd63942` 已推送,`admin-web-test #718` SUCCESS(58.648 秒),实际镜像 `392f94e95cc0` 且 healthy。三个附件上传按钮不再因未选车辆或司机而置灰,删除新增的操作说明;保存时拒绝将已有附件引用随空资源静默丢弃。既有权限、作业状态及上传中的禁用规则保留。
- 82 项定向测试通过,覆盖三类附件、档案及临时外配资源保存后重新打开和再次保存;Jenkins 构建与部署成功。公网首页及 62 个相关资源与容器内产物摘要一致,已核对保存校验存在且已删除的提示文案不在产物中。仅 Admin 镜像变化,环境变量和挂载摘要未变,Jenkins 临时 SCM pin 已恢复;本批未发布后端/PDA 或执行 SQL。
- 本批未执行新的业务写入或人工页面验收,不将静态资源验证视为实际上传闭环。发布证据保存于本机私有 `artifacts/chongchong-global/dispatch-evidence-upload-release-20261027/`。
## 2026-10-27 财务接收与三项读取修复:已发布 TEST 并只读复核
- 用户明确授权部署 Finance 与 Admin。后端 `test` 固定提交 `83f2fda4cd2a432c7516018f6ce3b1b05eb1d2d7`、Admin `release/test` 固定提交 `b9b930936d2db7acaa3c9c12eeacb1f7ceb522bb` 已推送;本批包含此前费用接收幂等、客户归属及金额校验修复,以及应付来源付款进度、对账单修订后金额和客户名称读取修复。
- `baiyue-firstleg-finance #140`、`admin-web-test #719` 均 SUCCESS,耗时分别 73.007、58.845 秒;实际镜像标签分别为 `83f2fda4cd2a`、`b9b930936d2d`,两容器 running/healthy。发布前后只有 Finance、Admin 镜像变化,历史退役事件桥保持原状。Admin 临时 SCM pin 已逐字核对并恢复。
- 复用输入未变的三项修复 92 项后端定向测试、此前费用接收 40 项定向结果,以及 Admin 27 项测试和类型检查;补跑 22 项发布合同全部通过。Finance 流水线显式跳过重复测试执行,仍完成生产/测试源码编译与打包;Admin 类型检查、生产构建及容器健康检查通过,不宣称全模块回归通过。
- 发布后通过真实 HTTP 只读核对 24 张对账单、24 张应收单、9 张应付单及 24 笔收款。26 条已付款应付来源在列表、筛选及详情均为 PAID,并从可选应付费用池排除;剩余 175 条可结算应付合计 CNY 707.00。24 张对账单的 144 条修订金额正确,8 次调账均保留 CNY 0.03 差额;对账单、应收/应付及统计的客户名称与账户主档一致,不再显示内部编号拼接名称。首轮只读核验时 PAYABLE_BILLED、PARTIALLY_PAID 无实存样本,后续真实 HTTP 已补齐这两个中间状态,见下文。
- 既有账单应收 CNY 34,343.92、已收 1,936.24、未收 32,407.68,正式应付 CNY 3,040.03 均已付,金额、版本及状态与修复前快照一致。本次发布后首轮快照为 755 条最新费用,较此前快照多 1 条头程应收 CNY 8,379.37;原有 754 条费用金额、归属和版本均未变化,仅上述 26 条应付读取状态变化。本次未新建、修改或推进任何业务单据,也未执行 SQL、重置数据或改动 Nacos/Gateway 配置。
- Admin 公网首页、运行配置、入口脚本及财务来源页面脚本均 HTTP 200,SHA-256 与运行容器一致,实际产物包含新增付款状态和文案。该核验不替代 1920×1080、100% 缩放人工页面验收。证据保存在本机私有临时目录 `codex-finance-release-20261027`,包括提交及门禁输入摘要、Jenkins 状态与脱敏日志、配置恢复、运行版本、只读数据核验及 `public-assets-final.json`。
### 同日应付来源中间状态补验:四阶段真实 HTTP 已通过
- 用户确认继续 TEST 应付状态衔接验收。沿用本对话原生合成转运单与启用的测试供应商,经海外费用正式入口新增并审核一笔 CNY 0.03 的 ON_ACCOUNT 应付费用,再生成 `AP202610270001`,先登记 0.01 元、再登记 0.02 元,最终 PAID。付款参考、备注及本轮上传凭证均标明合成测试,未发生银行或第三方转账。
- 37 项业务断言、63 次 HTTP 请求检查全部通过,包括预期拒绝;AVAILABLE → PAYABLE_BILLED → PARTIALLY_PAID → PAID 四阶段的来源列表、详情、状态筛选、待选池资格及账户成本汇总一致,应付单列表与详情、付款流水一致。创建/付款重放保持同一记录;重复占用费用、超额付款、旧版本付款、同键改金额及结清后继续付款均被拒绝,最终只有两条付款流水。
- 原有 24 张应收单、9 张应付单金额、状态和版本不变,原有 175 条待结算应付仍为 CNY 707.00。测试客户总成本、已付成本仅各增加 0.03 元,实际余额、冻结及可用金额不变。仅新增上述测试费用、应付单、两笔付款记录和合成凭证,未改源码、部署、执行 SQL 或清理数据;本轮会话已退出,样本保留。证据为本机私有临时目录 `codex-finance-ap-progress-20261027/progress.json`;四阶段 API 核验不替代人工页面验收。
### 2026-10-27 费用调整、作废与重开续检:Finance 已发布,AP/AR 本轮场景通过
- 用户明确授权部署 TEST Finance 并继续检查。后端 `test` 提交 `fe89b8a2b875d6634b0d7f2b28793b73c02bb4b6` 经 `baiyue-firstleg-finance #141` 发布成功,耗时 65.420 秒;重开重新锁定原费用/对账单,校验当前状态、客户、币种、金额及唯一占用,应付另校验供应商,应收逐行核对账单金额。新建与重开共用当前占用读取,避免等待来源锁后使用旧快照。修复前已复现重复占用缺口,修复后 52 项定向测试及 429 个 Mapper 注册合同通过。
- AP 真实 HTTP 验证:独立 ON_ACCOUNT 测试费用从 0.03 调整至 0.04、再调整至 0.05 元,审核前旧版本保持有效,审核后旧版本 SUPERSEDED,仅最新版本计成本。`AP202610270002` 合法作废/重开及幂等重放成功;费用被 `AP202610270003` 占用或被新版替代后,旧单重开均返回 FIN_409,金额、版本和修订未被错误推进。两张 AP 及最终费用均已作废,保留历史;业务端作废与 Finance ACK 已核对。首轮 70 项业务断言通过,最后的汇总断言误用了账户接口不存在的字段;随后仅只读补验 9 项通过,原失败报告保留,未重复造数或写入。
- AR 补验发现两处问题:作废应收仍被数据库全历史唯一键占用,重新建单返回 S0500;对账单动作即时响应在审计写入前取快照,少返回本次修订,重新查询时记录存在。修复提交 `ed6a173b8678a43d260b89b8d10a4d2e0e0f99af` 已推送并通过 Finance `#142` 发布,耗时 63.875 秒,最终镜像 `ed6a173b8678` running/healthy。新增修复通过 29 项定向检查(对账单行为 21、结算表基线 3、SQL 注释合同 5);基线测试实际执行模块与统一初始化中的表定义,覆盖作废历史、重建、有效应收唯一、重开冲突、客户隔离及应付不受影响。两次流水线复用相应本地测试,仍完成生产/测试源码编译、打包与健康检查。
- 用户单独确认执行 `deploy/sql/finance-receivable-active-uniqueness-repair.sql`。已在 TEST MySQL 8.0.45 的 `baiyue_finance.fin_settlement` 执行一次原子 ALTER,以虚拟生成列及有效应收唯一键替换全历史唯一键;执行前后 37 条记录及金额、版本汇总完全一致,未更新、删除或回填业务记录。首次连接在只读前置检查阶段因主机别名无法解析停止,尚未发出 ALTER;改用 Finance 容器实际解析结果后执行成功。执行文件 SHA-256 与已提交脚本一致;旧索引移除、新索引及生成列已回查确认。初始化模式仍为 `never`,未重放空库基线。
- 修复后 AR 完整真实 HTTP 验证 31 项业务断言、49 次请求检查全部通过:`REC202610270002` 生成 `AR202610270003`,合法作废/重开成功,作废后能生成 `AR202610270004`;新单占用、对账单调价及作废后,旧应收重开均被拒绝。提交、审核、出账、调账、作废的即时响应均包含本次修订,调账保留来源 0.03 元与账单 0.04 元差异。前一轮 `REC202610270001` / `AR202610270001` 的剩余场景也已补验并作废;没有重放失败写入,失败建单未留下新应收。
- 本轮新增 2 张 AP、3 张 AR、2 张对账单及对应测试费用最终均已作废,修订和来源版本保留;未新增收付款或转账。原有单据金额、状态、版本不变,原有 175 条应付待选费用仍为 CNY 707.00;应收 34,343.92、已收 1,936.24、未收 32,407.68,总成本 3,885.57、已付成本 3,178.57 及钱包余额均恢复检查前值。所有本轮认证会话已退出。
- 发布前后仅 Finance 镜像变化,Admin、Client、Lastleg 等服务版本及历史退役事件桥保持原状。证据分别在本机私有临时目录 `codex-finance-reopen-fix-20261027`(`lifecycle-final.json`、`ar-final.json` 等)和 `codex-finance-revision-release-20261027`(`sql-execute2.json`、`ar-lifecycle-final.json`、Jenkins 及运行版本证据)。本结论限于上述接口场景,不代表全部财务场景或 1920×1080、100% 缩放人工页面验收完成。
## 2026-10-26 海外费用与仓租 TEST 补齐:收费、仓租及应付链路已验,直付明细已修复并复验
- 本轮仅继续 TEST。先按已审阅的 `overseas-fees-storage-rent-structure-add.sql`、`overseas-storage-rent-zero-fee-repair.sql` 补齐 `ll_storage_rent_inbound`、费用审核人名称及自动免费仓租的金额/汇率约束,两文件执行成功。执行前后原有费用均为 143 条,资金编排及计租批次均为 0;未重放初始化、未回填或删除业务数据,未调整汇率。
- 首批配套后端固定源码 `f37d52aeadaab9a757a0caf7a6b2efac1bb1b3fe`:Firstleg `#521`、Warehouse `#138`、Finance `#138` 均 SUCCESS,当时实际容器镜像标签 `f37d52aeadaa` 且 healthy;Finance 后续单服务修复版本见本节下文。内部服务身份调用费用目录、指定验收客户仓租价格和钱包读取均为 HTTP 200 / 业务码 200;目录 16 项,客户仓租为 USD、9 个阶梯。Finance 两项事件摘要字段已为 `varchar(71)`,无需追加结构修复。
- Lastleg 固定到不可变标签 `test-overseas-finance-20261026-r2` / `c6bc3ac85b823d19af56826a17e448f08a214fb7`,`#432` SUCCESS,实际容器标签 `c6bc3ac85b82`、running/healthy。原 `#431` 完成 Lastleg 3,591 项测试,5 项失败、11 项跳过;失败来自初始化末尾建表统计未同步(238→239)、合托拣货测试夹具漏注入仓租服务、单表分页测试漏指定已开船条件三处。仅修正统计和测试,生产 Java 与服务资源保持 `f37d52aeadaa` 冻结源;相关 56 项定向复验通过。`#432` 复用已通过项和定向复验,显式跳过重复测试执行,保留编译、打包和健康检查;不能将原 `#431` 或未执行的集成测试记为通过。
- Admin `b5d8ccdffe9c56094f2d0c975c090e0957a49fc9` 已由 `#714` 发布,实际标签 `b5d8ccdffe9c`、running/healthy。`#713` 因 Jenkins 轻量检出把提交哈希当作分支而失败,未进入构建;改用完整检出后成功,临时 SCM 配置已逐字核对并恢复。海外 PDA `2ff0ae7975bfb3fe04a036dcea17845460196181` 的 51 项定向测试、H5 构建及产物核验通过;已备份并上传实际 TEST 宿主机静态站点,线上 83 个文件 SHA-256 与构建产物逐项一致,`/gateway-api/` 登录及退出成功。该代理连通性检查不代表 PDA 绑定仓库后的扫码作业通过。
- 配套发布后,统一 Gateway 的费用分页、费用目录、仓租列表、仓库选项及业务单选项均 HTTP 200 / 业务码 200;客户账号访问平台费用、仓租接口均 HTTP 403 / A0403。真实平台角色细分权限与跨客户伪造归属场景尚未在本批完整执行。
- 人工应收保留当前明确选择 BILL / WALLET 的实现,并分别用三笔新小额费用验收。USD 0.01 按现行月汇率 8 固定为 CNY 0.08,登记冻结、审核仅实扣一次;原创建及审核请求重放不重复创建或消费,同幂等键修改金额被拒绝。另一笔 CNY 0.02 驳回后释放、不实扣;BILL CNY 0.03 审核后形成唯一 AVAILABLE 费用,Lastleg Outbox 为 PUBLISHED、Finance Inbox 为 PROCESSED,无钱包引用或额外扣款。验收账户余额由 2.34 变为 2.26,冻结余额为 0,未充值或调整授信。
- 资金样本最终 22 项检查通过。首轮脚本误用 `sourceFeeId` 匹配 Finance 费用池,按实际 DTO 的 `sourceId` 修正后仅复核原样本,未重新造费;首轮失败记录、修正后 HTTP 结果及只读数据库投递证据均保留。没有据此认定正式账单生成、核销或付款流程通过。
- 后续真实 TEST HTTP 验收使用新原生样本,不回填历史库存、不修改入库时间。转运单 `ZY202610260001` 经平台审核、绑定仓 PDA 两托两箱清点及打托、客户测量确认,自动登记两个计租批次;实收与扫码原请求重放均不重复登记或扣减。两箱免费期出库均通过仓租预校验,未预校验的拣货被拒绝;出库后两个批次剩余数量均为 0、状态 CLEARED,自动生成两笔待审零元仓租且汇率为空。该结果来自正式 HTTP 作业,照片和测量均为合成验收数据,不代表实物扫码或页面验收。
- 免费仓租一笔按零元审核完成,无扣款流水;另一笔由零元补价至 USD 0.02,按月汇率 8 冻结 CNY 0.16,再降至 USD 0.01 审核,仅实扣 CNY 0.08,多余冻结释放。空调价原因及旧版本审核被拒绝,保留原计算零元依据;审核重放沿用同一仓租消费流水。转运原生实收续跑 8 项、免费出库及调价 26 项检查通过,账户余额从 2.26 降至 2.18、冻结为 0。
- 退货单 `TH202610260001` 原生签收批次 `RB202610260001` 为一托两箱、100 件,经正式清点为 2 件和 98 件两箱。出库 2 件的完整实物箱,按原托 1 天和 2/100 份额计算 USD 0.03,固定月汇率 8 折合 CNY 0.24;预校验冻结成功前不拣货,扫码仅扣减 2 件计租份额,审核后只实扣一次。签收、预校验、扫码、完成及审核重放均保留原记录,未重复计租或扣款;另一箱 98 件保持 AVAILABLE,原入库时间与一托计费基数未重置。原生退货入库续跑 8 项、非零出库结算 18 项检查通过,账户余额从 2.18 降至 1.94、冻结为 0;本批仓租均未进入账单池重复收费。
- 验收脚本首轮缺少转运清点必填箱数,及退货断言未按实际 DTO 处理字符串数量和 `RETURN_V1` 规则码,分别保留失败记录后修正脚本,仅续跑原业务样本;未为这些脚本问题修改生产代码、重建原单或重复收费。临时海外 PDA 仅绑定本批测试仓,完成后已停用,独立验收会话已退出;既有国内 PDA 账号未改为海外角色。本段后续 HTTP 验收未追加 SQL、部署、充值或授信修改。
- 供应商应付后续 TEST HTTP 共 31 项检查通过:在本批转运单上关联独立测试供应商,分别登记 CNY 0.03 的 ON_ACCOUNT 与 DIRECT_PAID 费用。账期审核后唯一入池;直付审核后生成唯一 CONFIRMED 成本,保留付款参考及凭证,且不进入账期待选池,强制创建 AP 被 FIN_409 拒绝。创建与审核重放均未新增费用或成本。
- 账期来源生成 `AP202610260001`,先登记 0.01 元、再登记 0.02 元付款,最终 PAID、未付 0、付款流水恰为两条;已占用费用不得重复生成结算单。超额付款、缺凭证、旧版本、同键修改金额及结清后继续付款均被拒绝,原付款请求重放保持原流水。本批应付及已付成本各增加 0.06 元,客户实际/可用余额保持 1.94 元、冻结 0;凭证及付款参考明确标记为合成验收材料,仅验证付款登记,不代表银行或第三方实际转账。样本保留,验收会话已退出,未执行 SQL 或重新部署。
- 本次同时发现并修复直付成本明细回显缺陷:成本汇总已正确计入已付,但 `/cost-entries` 及详情把已确认直付返回为“已付 0、未付 0.03”。仅修正 `FinanceQueryService.payableSettlements` 的金额映射:已确认 SOURCE_DIRECT_PAID 全额已付、未付为 0;作废直付保留原金额,已付与未付均为 0;人工成本口径保持原状。新增隔离用例先复现 3 项失败,修复后成本读取、客户过滤及汇总 14 项定向测试全部通过。接口路径、DTO、数据库结构及资金写入均未改变。
- 经单独确认,Finance 修复已按固定提交 `5b53be23e86362d849b15deee0989ed3be3914c5`、不可变标签 `test-finance-direct-paid-20261026` 发布 TEST。Finance `#139` SUCCESS,耗时 127.4 秒;复用上述 14 项定向测试,显式跳过重复测试执行,保留生产/测试源码编译、打包、镜像及部署健康检查。实际 `firstleg-test-finance` 镜像标签 `5b53be23e863`、running/healthy;前后逐项比对仅 Finance 容器发生变化。原直付样本的列表及详情均已返回“金额 0.03、已付 0.03、未付 0”;6 次发布后 HTTP 请求全部成功,成本身份及唯一性、`AP202610260001` 的两条付款流水与版本、成本汇总、客户实际/可用余额 1.94 和冻结 0 均保持不变。独立会话已退出,本次未重新造费、执行 SQL、改 Nacos 或发布其他服务,灰度部署阶段按条件跳过。
- 尚未关闭:头程来源同单同仓补入库不重置库龄、采购专用资金链、双设备竞争及页面人工截图。当前新增的两个转运计租批次已清空、一个退货计租批次保留 98 件合成库存;原请求重放及退货分箱出库不替代头程补入库验收。本批不涉及灰度、APK/WGT 或旧容器清理。
- 本批未纳入远端并行新增的采购提交;后端本地 `test` 与远端 `test` 的并行变更保持原状,发布使用上述不可变标签。其他对话未提交的入仓/排车修改均保留。执行结果保存在本机私有临时目录 `codex-overseas-finance-release-20261026/`、`codex-overseas-rent-acceptance-20261026/`、`codex-overseas-payable-acceptance-20261026/`,报告不保存密码或 Token;实际部署和验收状态只维护在本节。
## 2026-10-23 晚间 TEST 批次:已发布并完成部署烟测
- 用户授权提交当前工作区全部代码并部署 TEST;冻结版本为 Backend `a8192f51fefdc031a5b03136d4d6fb7caab26c64`、Admin `047cfb3d0b657b3ccac93486419bd3a0e45d95c5`、Client `2c98d121ca1d62f4b755deb5d9df790d09e4c19d`、国内 PDA `f39303ea24fa75b7cbd0c0de664ee37f8ef6e644`、海外 PDA `f5dc84b3c24d61019cadee7de6fe5a5da11d1c68`,均已推送 TEST 对应分支。后端仅 Lastleg 生产代码变化,出库任务编号改用统一日流水;前端包含智能装柜、订舱/出库展示、客户报关资料关闭按钮及 PDA 作业展示、失效托盘状态修正。
- `backend-java #719`、`baiyue-firstleg-lastleg-service #430`、`admin-web-test #710`、`client-web-test #443` 均 SUCCESS。Lastleg AUTO 根据可用基线转为完整模块门禁:3406 项测试、11 跳过,另 51 项集成测试,均零失败、零错误;本地 Admin 102 项、国内 PDA 12 项、海外 PDA 28 项定向测试通过。两端 Web 生产构建及两端 PDA H5 构建、产物核验通过。临时固定 SCM 均已恢复原分支配置。
- 发布后直接读取运行容器,Lastleg `a8192f51fefd`、Admin `047cfb3d0b65`、Client `2c98d121ca1d` 均 running/healthy。两 PDA 直接上传各自宿主机站点根目录,先资源后首页;备份原配置与被覆盖文件,补齐首页 no-store、独立 API 优先匹配及上传限制,`nginx -t` 和重载成功。临时工具容器只执行宿主机文件与配置操作,不是 PDA 服务发布;既有旧 PDA 容器未更新、未删除。
- 两 PDA 公网全部 149 个产物文件 SHA-256 与本地构建逐项一致;两 Web 首页与健康接口均 HTTP 200。后端上线后复验 Admin、Client、两 PDA 代理入口的登录/退出,以及 Admin 出库单查询,9 次 HTTP 与业务码均成功;独立烟测会话已退出。PDA 登录检查不代表绑定仓库后的出库/扫码作业链通过。
- Admin 出库列表、新建出库弹窗已在实际 TEST 页面打开并核对,未提交业务单据。其余完整页面视觉、真实出库写流程及 Android 扫描硬件未在本批新增验证;仅更新 H5,不发布 APK/WGT。不执行 SQL、Nacos 或业务数据清理。冻结后其他对话新增的 Admin 申报编辑器与密度样式修改保留在工作区,不计入本批发布。
- 脱敏 TEST 证据位于本机私有产物目录 `test-release-20261023-evening/`,包含版本清单、Jenkins 状态/日志、运行镜像、静态文件摘要、HTTP 烟测与局部页面截图;环境配置和凭据不入库。本批后续灰度晋级结果见下节。
### 本批灰度晋级:已发布并完成发布后 F40 验收
- 用户明确授权本批灰度发布;仅更新 Lastleg、Admin、Client,H5 仍由用户自行发布。后端 PR #32、Admin PR #23、Client PR #16 已合并,文件树分别与上述 a8192f51fefd、047cfb3d0b65、2c98d121ca1d 冻结源一致。`baiyue-firstleg-prod-lastleg-service #19`、`admin-web-prod #31`、`client-web-prod #20` 均 SUCCESS;实际运行 tag 分别为 a8192f51fefd、c853b919c039、2b5525ce499b,后两者为对应源的 main 合并提交。临时前端 SCM pin 已恢复;Firstleg 及其余后端未重复发布。
- Lastleg 灰度构建复用相同冻结源的 TEST #719/#430 测试门禁,显式跳过重复测试执行,保留生产及测试源码编译、打包和容器健康检查。无 SQL、Nacos 配置变更或数据清理。发布前 12 条排车的身份、状态及发布事实在最终回查中保持一致;采集任务、运行记录、4 个范围的配置摘要与事实/发布修订不变,自营两仓四页 8 个接口正常,BUSINESS 模式和列表总数保持一致。
- 发布后首轮完整 F40 为 1462 项、1458 通过、4 失败,报告与样本保留。两个根因断言来自船节点分页仍按旧 ISO 格式/校验位拒绝合法柜号,另两项为汇总失败;只读真实返回确认两条柜号非空且已规范化,替换该字段后旧结构校验通过,生产规则已允许非 ISO 柜号。仅修正 `phase4-carrier-nodes.mjs` 与对应合同测试,新增用例先复现 2 失败,修复后船节点及 F40 直接合同共 61 项通过;不修改灰度业务代码、不移除其他身份、归属及状态断言。脚本修正目前留在当前工作区,未并入本批已发布镜像。
- 使用新隔离批次重新执行完整 GRAY F40(BUY_DECLARATION),最终 **1467/1467 项断言、779 次唯一 HTTP 请求、0 失败、退出码 0**;覆盖下单、测量、分柜、装柜、海外收货、排车、出库、签收回传、重放和车/人资源释放。临时 PDA 按脚本 finally 停用,合成业务及审计证据留存。4 项非阻断缺口为外部第三方;不扩称默认 TEST 全模块、灰度页面视觉或硬件验收。
- 最终只读核验 28 项通过:仅上述三个容器镜像变化,15 个容器均 healthy,验收前后目标镜像 ID 一致;14 项 Nacos 摘要保持不变。Admin/Client 公网首页与各自容器一致,分别 61/93 个引用资源正常。证据保存在私有 `artifacts/chongchong-global/gray-release-20261023-evening/`,最终报告为 `production-f40-postrelease-r2-http.json`、`final-verification.json`;首轮报告、脚本修正摘要及构建日志均单独保留。
## 灰度发布后验收要求
- 用户于 2026-10-23 明确:每次灰度发布完成后,必须在实际部署的新版本上重新执行灰度验收脚本,不能复用上一版本真实 HTTP 结果代替发布后验收。发布前单测、构建与健康检查,以及局部接口烟测不能替代该步骤。
+101
View File
@@ -0,0 +1,101 @@
# 海外 PDA 界面样式规范
## 适用范围与维护职责
- 本文是 `apps/pda-overseas-uniapp/` 首页、作业入口和卡片列表外观的唯一维护正文,后续同类页面按本文调整。Admin、Client、国内 PDA 各自遵循所属规范,不自动互相套用。
- 当前样板为“拆柜收货”的候选柜列表、“仓储转运测量”的待测列表,以及首页的入口卡片与分项待办。规则统一不代表其他页面已改造或通过真机验收;详情、扫码、拍照和测量表单不因列表调整自动改版。
- 本文维护信息层级、尺寸、颜色、去重和反馈方式;业务字段、状态、权限、统计资格及提交行为仍按业务契约和实际接口维护。后续样式规则只更新本文,不另建页面样式总结副本。
按任务阅读:列表读“卡片列表”“信息去重”“状态与反馈”;首页读“首页入口与待办”;局部文案只核对对应条款。
| 当前实现入口 | 用途 |
|---|---|
| [公共样式](../apps/pda-overseas-uniapp/src/styles/pda.scss)、[列表样式](../apps/pda-overseas-uniapp/src/styles/task-list.scss)、[PortalHeader](../apps/pda-overseas-uniapp/src/components/PortalHeader.vue) | 页面外壳、导航、首页网格与基础样式;其他接入列表使用 `pda-task-list` 范围内的列表类,不覆盖未接入分支 |
| [拆柜收货](../apps/pda-overseas-uniapp/src/pages/operation/operation.vue) | `phase === 'candidates'` 列表分支;`.container-card-compact` |
| [仓储转运测量](../apps/pda-overseas-uniapp/src/pages/warehouse-transfer/warehouse-transfer.vue) | `entryMode === 'list'` 分支;`.transfer-card` |
| [首页](../apps/pda-overseas-uniapp/src/pages/home/home.vue)、[入口配置](../apps/pda-overseas-uniapp/src/data/overseas-workbench.js)、[待办读取](../apps/pda-overseas-uniapp/src/api/workbench.js) | 入口名称、卡片密度、待办展示与数据来源 |
## 卡片列表
### 页面与工具栏
- 顶部沿用 `PortalHeader`,保留返回和个人中心。页面标题只在导航栏出现一次,正文不再重复放置同名大标题。当前入口与页标题使用“仓储转运测量”。
- 工具栏左侧显示当前列表名称与数量,右侧放刷新,例如“共 38 柜”“待测转运单 · 6 单”。数量带业务单位,不用功能入口数量代替待办数量。
- 采用 CSS 逻辑像素,不把设计图或截图的物理像素直接当作控件尺寸;宽度随 PDA 可用视口适配。
| 元素 | 当前基准 |
|---|---|
| 列表背景 | `#f1f5fd` |
| 内容边距 | 左右 `14px`,列表顶部 `14px`;底部预留安全区 |
| 工具栏 | 最小高度 `36px`,与卡片间距 `11px` |
| 工具栏文字 | `14px`,行高 `20px`,字重 `700`,颜色 `#526174` |
| 刷新按钮 | 白底,`36px` 高,最小宽度 `72px`,左右内边距 `14px`,圆角 `20px`,边框 `1px solid #b8d1f5` |
| 刷新按钮内容 | 蓝色 `#135ee8`,图标 `18px`,文字 `13–14px`,图文间距 `5px`;请求中禁用并显示“刷新中…” |
### 卡片信息层级
卡片按以下顺序组织,不把所有信息挤进标题行:
1. **编号与状态**:左侧为柜号、转运单号等主要业务编号,右侧为状态标签。计划到仓等辅助时间放在编号下方。
2. **关键指标**:上方显示数值、下方显示名称,指标之间用细竖线分隔,整组上下用细横线界定。按业务选择必要指标,不为凑满列数补字段。
3. **补充信息**:展示接柜点、目的仓等未在上方表达的必要事实;缺码等额外问题单独提示。
4. **操作入口**:放在卡片底部右侧,使用“详情”“继续”“只读”“测量”“继续测量”等短文案与右箭头。左侧可放必要且不重复的补充业务码。
| 元素 | 当前基准 |
|---|---|
| 卡片容器 | 白底,内边距 `14px`,边框 `1px solid #dce5f0`,圆角 `13px`,无阴影,卡片间距 `11px` |
| 编号 | `18–20px`,字重 `750`,行高 `26px`,颜色 `#1f2937`;拆柜柜号当前 `20px`,转运单号当前 `18px` |
| 标题行 | 编号区域 `flex: 1; min-width: 0`,与状态间距 `10px`;状态不被挤压 |
| 状态标签 | `13px`,行高 `16px`,内边距 `6px 10px`,圆角 `9px`;保持完整状态文案 |
| 指标布局 | 四项等宽;转运三项当前为 `1 : 1.3 : 1`,中间目的仓适当加宽;分隔线 `#e1e7f0` |
| 指标区域 | 与标题间距 `12px`,上下内边距 `7–9px` |
| 指标值 | `22px`,行高 `26px`,字重 `750`,颜色 `#1f2937` |
| 指标名称 | `12px`,行高 `18px`,颜色 `#6f8194`,与值间距 `2–3px` |
| 辅助时间 | `12px`,行高 `18px`,颜色 `#718095` |
| 补充信息 | `12px`,行高 `20px`,行间距 `5px`;接柜点等关键归属信息可加粗 |
| 底部操作 | 蓝色 `#135ee8`,文字 `13px`、字重 `700`、行高 `22px`,右箭头 `14px`;底行最小高度 `28–32px` |
- 长编号、多目的仓和较大数值允许自然换行,不以省略号隐藏作业所需信息,也不把状态或操作挤出卡片。
- 隐藏底部补充信息后,操作仍靠右;不要因左侧无内容而把唯一操作移到左侧。
- 保留整卡已有的点击目标与操作资格;不要为了增大可点区域新增嵌套按钮或重复触发事件。
- 列表样式限定在列表分支;首页或列表的密度调整不覆盖详情、测量表单、照片区和底部提交栏。修改公共默认值前核对直接消费者。
## 信息去重
- 同一卡片内同一事实只展示一次。指标栏已展示计划数量和未操作数量时,不再追加“已生成 X 个入库计划,Y 个未操作”的重复汇总句。
- 仓储转运卡片以转运单号为主编号:入仓码为空,或去掉首尾空格后与转运单号相同,隐藏底部入仓码;不同时保留该入仓码。比较不改变业务码内容或大小写。
- 缺入仓码等上方未表达的异常信息继续单独展示,例如“2 单缺入仓码”;不要为去重隐藏问题提示。
- 不同含义的字段即使值相同也应保留,例如“总订单 1”和“入仓码 1”。不同记录共享接柜点或目的仓也不构成应删除的重复记录。
- 只展示服务端业务标识;必要关系缺失时使用“—”或明确的未关联提示,不以内部数据库 ID 回退。次要信息没有内容且无需提示时,不保留空白占位行。
## 状态与反馈
- 状态使用短文案配浅底标签。本轮样板中,待签收为橙色、待测量为蓝色、测量中为绿色、待齐全为灰色;颜色不代替文字,映射沿用对应业务状态。
- 待齐全或不可操作的柜保持灰色卡片与“只读”入口,仍能查看已有摘要;不能因为样式变灰而隐藏候选或放开写操作。
- 首次加载显示加载态;刷新保留已有列表并显示请求状态,避免连点。空态说明当前没有哪类任务,并提供适用的刷新入口。
- 加载失败与成功无记录是不同结果;错误不能变成“0”或成功提示。业务错误码、`requestId`、`traceId` 只用于故障诊断,不作业务编号。
## 首页入口与待办
### 紧凑入口卡片
- 保持三列网格,列间距 `8px`。入口保留图标、名称和一条待办或用途提示,不重复增加说明段落。
- 卡片使用 `height: auto; min-height: 104px; padding: 10px 6px`;长名称或较长待办文案可自然撑高,同一网格行保持对齐,不裁切内容。
- 图标区域当前 `40px × 40px`,图标 `28px`。名称当前 `12px`、行高 `17px`、顶部间距 `5px`,`.home-operation-name` 最小高度为 `17px`,最多两行;单行名称不强制预留两行的 `34px` 高度。
- 待办标签当前 `10px`、行高 `16px`,宽度不超过卡片;允许换行,避免长待办挤出卡片。
### 分项待办
- 待办数量放在各自入口,按对应业务单位展示,例如“38 柜”“6 单”“2 托”。首页不再以“16 项可处理”或分组下的功能个数冒充工作量,也不把不同单位和重叠阶段的任务简单相加。
- 任务列表与当前作业分开表达,例如仓储转运待测列表显示待测数量,转运测量入口显示本设备当前单的进行中状态;具体统计范围和资格维护在实际数据来源中。
- 分页接口使用明确的总数,不能将当前页记录数当全部待办;相同业务记录不重复计数。出库和废弃等不同工作来源需要分别标明。
- 正数用浅橙提示(文字 `#9a5300`、底色 `#fff0d6`);零、加载中和扫码提示用中性色(文字 `#6f8194`、底色 `#e7edf4`);获取失败用浅红提示(文字 `#b42318`、底色 `#fff1f0`)。
- 成功无任务可显示 `0`;尚未开始的当前作业可显示“未开始”。无独立待办队列的入口使用“扫码签收”“扫码作业”“扫码查询”等用途提示,不编造数量。
- 返回首页自动刷新,并提供手动刷新入口。局部获取失败只影响对应入口,保留其他成功数量;账号、仓库变化或旧页面请求返回时,不回显过期统计。
## 修改与验收
- 后续页面先确定主要业务编号、必要指标、补充信息和主操作,再按本规范组织卡片,不机械复制样板字段与状态。
- 人工检查重点为:长编号、多目的仓、指标较大值、入仓码相同与不同、缺码提示、零待办、加载失败、只读候选,以及首页长名称与标签换行。
- 视觉以用户提供的当前页面截图和人工验收为准;模板、样式编译及定向自动检查单独报告,不将编译成功记为真机扫码、照片上传、打印或整页视觉验收通过。
- 验证范围按[工程执行约束](AI工程执行与协作约束.md#验证范围选择)选择;纯文档维护不运行应用全量测试或构建。
@@ -12,7 +12,7 @@
列表、详情、审核、PDA与车辆维护共用按目的仓汇总的预约投影,BOL沿同一目的仓使用客服保存的编号,各票客户归属及箱数不改变;预约号筛选包含目的仓登记值,不再命中该仓已被人工改选覆盖的旧编号。已确认时间仍取匹配编号的当前有效正式确认,保留当地时区和原时段校验;仅填写编号不伪造正式确认时间,显示已登记,不能用计划发车或预计到达代替。货件号沿本车真实客户、计划逐票分配及直接订单关联读取,不依赖是否存在正式FBA预约批次;手填目的仓预约号时也须带出实际货件,同仓合并去重,不把其他客户货物并入本票。排车列表司机与联系电话保持两列,仅消费真实字段,缺失显示“—”。所有阶段、装车前审核分区和排车类型均展示主单created_at的真实创建时间,不以计划发车或更新时间替代,不逐行请求详情。
2026-10-22 车辆与图片门禁:车辆候选按海外在役状态及真实车次占用在服务端分页前筛选,排除其他车次占用并保留本车资源;当前选择失效可清除或改选,提交仍复验。草稿允许分步保存,提交审核及审核通过必须分别具备至少一张有效车辆图片、司机照片、驾驶证照片;选图未上传、上传失败、作废文件、PDF均不计为图片。每次放行复核文件有效性及分类归属;主档驾驶证按冻结来源读取,本趟补传图片按排车归属保留,不因主档解析丢失。主档换证后再次保存,服务端按原冻结来源标记剔除旧主档引用,再由车队解析当前主档;保留本趟补传图片及原历史,不把旧主档证照改按排车附件校验。
2026-10-22 车辆与图片门禁:车辆候选按海外在役状态及真实车次占用在服务端分页前筛选,排除其他车次占用并保留本车资源;当前选择失效可清除或改选,提交仍复验。草稿允许分步保存,提交审核及审核通过必须分别具备至少一张有效车辆图片、司机照片、驾驶证照片;选图未上传、上传失败、作废文件不计为有效资料;驾驶证接受PDF/JPG/PNG原件。每次放行复核文件有效性及分类归属;主档驾驶证按冻结来源读取,本趟补传图片按排车归属保留,不因主档解析丢失。主档换证后再次保存,服务端按原冻结来源标记剔除旧主档引用,再由车队解析当前主档;保留本趟补传图片及原历史,不把旧主档证照改按排车附件校验。
2026-10-21 新增内部散板需求发布选项,2026-10-22 简化智能排车入口;当前发布选项、时间来源及派送排车的候选、满载退出和未知容量口径统一见[内部散板需求池当前范围](内部拼车需求池首版开发契约.md#当前页面范围2026-10-21)。选项仅随新建命令按车同事务持久化,编辑不修改发布选择,不改变排车审核、实际拣货、装车照片或发车流程。
@@ -24,10 +24,12 @@
维护资料通过 `DispatchCommands.Update.maintenance` 保存到现有 `resourcesJson.maintenance`,详情对称返回 `vehicleInfo.maintenance`,唯一类型为 `DispatchContracts.Maintenance`。整体及八字段均可空,空白文本规范为 null,允许空草稿保存:`plannedDeliveryDate` 为 ISO 日期 `YYYY-MM-DD`;`deliveryMethod` 为 FBA自提/客户自提/卡派打托/卡派地板/快递/外配;`pickupMethod` 为一提一卸/一提多卸;`loadType` 为托盘/地板/混装;`fleetEmail` 最多254字符;`vehicleType` 为厢式货车/平板车/集装箱卡车;`appointmentAccount` 最多128字符;`destinationAppointments` 按本车目的仓去重,每项为目的仓业务键和最多128字符的预约号,空白可暂存但提交审核必须齐全。不新增审核级别或权限,正式确认时间、实际发车及派送费用口径保留。MASTER/EXTERNAL 车辆的本趟 `evidenceFileIds` 均保留到资源快照,不能被主档解析清空;保存及审核对非空照片逐项核验本排车及 VEHICLE 类别、有效性,调度审核读取同一已保存证据,不写入车辆主档。
2026-10-21 用户确认:在装车前清除“有效排车”筛选后,仍保留车辆信息、调度审核、理货员审核三个页签及当前选中项;查询沿用空值默认有效排车的规则,切换页签继续按当前审核分区查询。
4. 2026-10-21 用户确认:装车完成确认真实实载,Admin与PDA成功结果在资料未齐时为AFTER_LOADING、资料已齐时为DELIVERING。装车中及装车后均提供“装车照片1至5”五个固定框,两端均可拍照/选择图片、上传、预览及替换,按整张排车单共用当前照片与附加资料版本,不依赖派送单或按客户重复上传。五框全部绑定保存且已确认装车完成后自动进入派送中;不以选图、文件上传回执或重复槽位充数。保留真实拣货核平、实载校验、版本及防重复约束。
5. 装车已完成时,第五张装车照片绑定与按客户和目的地生成出库/派送单、记录实际发车并进入派送中在同一事务完成;照片先齐时,这些动作随装车确认在同一事务完成,仍无人工安排派送及确认发车入口。上传和绑定各保留稳定原请求键;第五张绑定或派送失败时保留装车后、前四张及原上传文件,原请求可恢复,不能留下半车或重复派送。PDA每次按Token绑定仓校验,Admin沿排车list只读、edit上传保存。照片使用原整车附加记录及文件归属,不新增存储表;五个既有技术槽位仅映射装车照片1至5,不表示司机审核或真实签收。真实外接报价沿原费用路径发布,未知派送补充资料与费用保持未确认,不猜测金额或原费用覆盖、不填写零费;后续由既有后台资料/费用管理维护。装车中上传齐资料不会提前发车;照片先齐时派送失败回滚本次装车确认、保留已保存照片,原请求可重试。装车完成原键恢复本次事务原最终阶段(AFTER_LOADING或DELIVERING),资料保存原键恢复原保存结果,当前阶段须另读;不重复扣库存。
4. 2026-10-21 用户确认:装车完成确认真实实载,Admin与PDA成功结果在资料未齐时为AFTER_LOADING、资料已齐时为DELIVERING。装车中及装车后均提供司机驾驶证、车牌照片、装车完成、封车照片、BOL司机签字五类资料(每类1至5份),两端均可拍照/选择图片、上传、预览及替换,按整张排车单共用当前照片与附加资料版本,不依赖派送单或按客户重复上传。五框全部绑定保存且已确认装车完成后自动进入派送中;不以选图、文件上传回执或重复槽位充数。保留真实拣货核平、实载校验、版本及防重复约束。
自动带入规则:理货审核通过、进入装车阶段时,服务端将本趟已核验驾驶证和车辆照片分别复制为“司机驾驶证”“车牌照片”类别的独立装车附件,PC与PDA共用同一份照片记录及版本。每类最多带入5份,仅填充空类别,来源未变化时保留已有现场照片及替换结果,重复审核不重复复制;退回后保存车辆身份、司机身份或对应证照附件变更时,对应类别的旧资料(含手工上传)与资源修改同事务失效,保留文件和历史,车辆身份变化还须失效装车完成和封车照片,司机身份变化还须失效BOL司机签字;同一身份仅补换证照图片时保留其他现场凭证。再次理货通过后仅按新来源带入驾驶证及车牌资料,失效的现场凭证须重新上传。上传携带选择照片时的审核轮次reviewRound,服务端保存到原上传账本;绑定携uploadKey,核对文件、类别、操作者及当前审核轮次,旧轮次上传即使采用最新资料版本也不得绑定。后续主档换图不改本趟附件。司机人像不放入驾驶证类别,其余三类由现场上传。驾驶证支持PDF原件(计一份)并可在两端查看;其他类别只接受JPG/PNG。复制失败时本次审核与资料绑定同事务回滚;GET保持只读,不执行测试存量补写。
5. 装车已完成时,第五张装车照片绑定与按客户和目的地生成出库/派送单、记录实际发车并进入派送中在同一事务完成;照片先齐时,这些动作随装车确认在同一事务完成,仍无人工安排派送及确认发车入口。上传和绑定各保留稳定原请求键;第五张绑定或派送失败时保留装车后、前四张及原上传文件,原请求可恢复,不能留下半车或重复派送。PDA每次按Token绑定仓校验,Admin沿排车list只读、edit上传保存。照片使用原整车附加记录及文件归属,不新增存储表;五个既有技术槽位按顺序映射上述五类资料,不替代司机审核或真实签收。真实外接报价沿原费用路径发布,未知派送补充资料与费用保持未确认,不猜测金额或原费用覆盖、不填写零费;后续由既有后台资料/费用管理维护。装车中上传齐资料不会提前发车;照片先齐时派送失败回滚本次装车确认、保留已保存照片,原请求可重试。装车完成原键恢复本次事务原最终阶段(AFTER_LOADING或DELIVERING),资料保存原键恢复原保存结果,当前阶段须另读;不重复扣库存。
6. 实际发车后为派送中;全部正常签收完成后自动进入配送完成。派送中可以“标记异常”:类型必填(拒收、部分签收、车辆异常),退货去向选填(退回海外仓、其他),说明和图片选填。登记沿排车维护权限,按本车版本及原请求键防重,异常记录和图片保存在主单并于现有“排车信息”详情回看;阶段仍为派送中,不自动创建退货、恢复库存或确认签收。异常后续处置由人工处理,本轮不新增线上异常闭环。
2026-10-21 资料入口确认:装车中、装车后从“管理资料”打开整车五张照片;有效排车在派送中、配送完成统一从“管理资料”居中弹框进入,签收文件、装车资料两个页签;2026-10-22 暂隐藏油耗图片上传和展示入口,原图片、版本及历史保留;按本车真实关联派送单及客户范围切换。签收文件与 BOL 复用派送单原附件记录;排车装车资料只维护整车共用的五张照片,不再同时显示另一套派送单装车照片上传框。派送单既有附件仍可从派送单资料入口查看,当前页签的上传类别统计只包含该页签内容。签收文件保存即沿现行逻辑完成对应派送单,全车全部正常签收才汇总配送完成;其他资料后补,不作为完成门禁。车辆与司机审核附件只读回看,油耗图片按车复用车队附加照片、版本及历史;保留原油耗接口的dispatch:list读取、dispatch:edit上传权限,当前排车页面不挂载油耗框,不改变车队原独立权限。外配任务原入口仍只输出五个装车框,但共享记录允许排车入口补充油耗图片;不复制派送签收文件为车队照片,不新增状态或数据库表。
资料入口(2026-10-28 最新确认):装车中、装车后从“管理资料”打开整车五类资料;有效排车在派送中从“管理资料”居中弹框进入,签收文件、装车资料两个页签,配送完成列表不再提供“管理资料”入口;2026-10-22 暂隐藏油耗图片上传和展示入口,原图片、版本及历史保留;按本车真实关联派送单及客户范围切换。签收文件与 BOL 复用派送单原附件记录;排车装车资料只维护整车共用的五类资料,不再同时显示另一套派送单装车照片上传框。派送单既有附件仍可从派送单资料入口查看,当前页签的上传类别统计只包含该页签内容。签收文件保存即沿现行逻辑完成对应派送单,全车全部正常签收才汇总配送完成;其他资料后补,不作为完成门禁。车辆与司机审核附件只读回看,油耗图片按车复用车队附加照片、版本及历史;保留原油耗接口的dispatch:list读取、dispatch:edit上传权限,当前排车页面不挂载油耗框,不改变车队原独立权限。外配任务原入口仍只输出五个装车框,但共享记录允许排车入口补充油耗图片;不复制派送签收文件为车队照片,不新增状态或数据库表。
2026-10-21 本轮登记契约:`POST /api/platform/v1/last-leg/dispatches/{dispatchNo}/exceptions`,动作`MARK_EXCEPTION`,`recordVersion/idempotencyKey/exceptionType`必填;`returnDirection/description/imageFileIds`选填。说明最多1000字、图片最多20张;异常图片类型`OVERSEAS_DISPATCH_EXCEPTION_EVIDENCE`,平台0、本车ID归属,非空JPG/PNG、单文件10MiB。主表新增可空`exceptions_json`,与原版本、历史、命令账本同事务保存;代码及基线已准备,未执行SQL或部署。
@@ -36,7 +38,7 @@
2026-10-21 区域入口确认:智能排车新建选货删除查询区的海外仓选择,仅保留“全部/洛杉矶/纽约”。候选接口 `warehouseId` 可选,不传时按区域做数据库分页、计数;指定仓的已有排车和预约消费者保持单仓查询。首个选中来源决定草稿真实起运仓,草稿建立后按该仓读取并禁止切换至其他区域混仓;全部表示该草稿仓的全部候选。未确定起运仓且区域匹配多个仓时不能提前创建服务器车辆容器,先选货再确定仓。空单没有来源可推断仓,其起运仓放入排车设置内选择。创建、锁货和转换的同仓约束保持不变。
9. 车辆和司机既可从已有档案选择,也允许临时填写外配车辆和司机;临时填写不伪造车辆或司机档案关联,不自行创建主档。
10. 后台确认装车完成必须以PDA真实拣货核平为前提。后台不提供替代PDA的拣货数量补录来绕过此条件;PDA和后台均可确认装车完成;两端可在装车中同步上传五张装车照片,由服务端在装车与资料均完成时自动发车。
10. 后台确认装车完成必须以PDA真实拣货核平为前提。后台不提供替代PDA的拣货数量补录来绕过此条件;PDA和后台均可确认装车完成;两端可在装车中同步上传五类装车资料,由服务端在装车与资料均完成时自动发车。
11. 用户随后澄清本次“新增预约”是预约日历的功能需求,先与本批排车改造分开整理。本批不新增日历预约创建或独立约车流程;排车保留已有FBA预约关联;用户随后对车辆预约权威来源问题答复“那就不要”,因此排车取消车辆预约字段、关联操作及公开协议,不再等待或新建该权威提供者。此前确认的先保存后关联意见保留为日历需求输入,不作为本批扩大实现范围的授权。
12. 用户进一步明确“本批支持整托同车”:两张换标单已合到同一实托时,整托进入同一排车主单,物理托盘及容量只计一次,各换标单的箱数、客户及扫码归属分别保留。不得只装第一来源、借第一客户承载其他来源,或把同一实托拆成两张排车绕过排他占用;此确认取代该场景的待决定状态及仅作前置拦截的候选方案。
13. 用户进一步确认:换标已由客户确认完成、关联出库单尚未扫码时,只取消本次出库安排,保留已完成的换标成果,退回待安排。不得将已确认换标申请一并作废;取消须清除本次有效出库关联,保持真实客户、原换标成果及重新安排资格。此规则不放开已扫码取消或新增回库流程,整车取消仍遵循既有阶段、版本和零扫码门禁。2026-10-21 用户确认排车安排与货物事实分离:整车取消只撤销本车运输安排、预约分配及逻辑/物理占用,恢复本车换标预占,不改变货物实收、库存或已完成换标成果;未实收计划无需实托,已有实托也不重新按当前库存数量、来源组成或装车资格校验取消。取消仍先锁本车原换标申请及原实托串行点,并保留版本、装车前、零真实扫码、无有效出库及车队未执行门禁;扫码、装车和发运继续使用原严格货源校验。
@@ -10,7 +10,7 @@
- 排车仅指海外仓送往 FBA/客户仓的真实整车排车主单,一张主单中的多客户只展示一次;已发车按实际起运仓当地日期,未发车按计划日期,取消主单不列入活动安排。日历返回真实排车单号并进入排车详情;独立旧车次不作为日历来源,也不得将内部车次号当排车号拼接路径。读取沿用排车列表权限;从详情可返回原日历日期与月/周视图。港口提柜送海外仓不作为排车类型。
- 还柜未完成按原业务截止日期提醒,完成后按实际还柜日期展示;日历不独立计算或改写还柜状态,登记进入原货柜业务。
- 用户随后明确恢复日历顶部“新增预约”:本次先支持FBA,普通客户仓不在本次范围。居中弹框选择已有货物,核对真实来源后复用原预约表单与保存接口;同起运仓、同目的FBA仓可跨客户合约,保留原写权限、版本/幂等、未知结果重试及未保存保护。货物查询栏支持可搜索、可清空的目的FBA仓下拉框;选项来自同权限范围的权威美国FBA目录,不从当前分页推算。提交查询后回到第一页,翻页沿用目的仓条件,重置恢复全部目的仓;跨页已选货物仍保留并执行同起运仓、同目的仓校验。保存成功显示真实预约编号及内容,不自动创建车次,不增加第五类日历或手工编造到港/还柜等事实。
- 平台新建及重新登记 FBA 送仓预约时均填写已取得的外部约号、确认开始时间和可选结束时间,直接保存正式确认,不再提供“先保存安排,等待对方确认”选项;已有取消、替代和只读记录仍展示真实历史状态。客户、来源版本、目的仓、货物完整性与外部约号唯一性校验继续执行。
- 平台新建及重新登记 FBA 送仓预约时填写已取得的外部约号,直接保存正式确认,不再提供“先保存安排,等待对方确认”选项。确认开始、结束时间改为可选;预约列表的新增窗口不再显示这两个输入及其夏令时时差输入,未提供的确认时间保持为空,不从计划日期推造。其他原业务入口补充真实确认时段时仍执行地区时区、夏令时和起止顺序校验;已有取消、替代和只读记录仍展示真实历史状态。货物核对自动展示并带入有效货件号或追踪号:已补录的非空核实值优先,未补录货件时采用同客户原订单资料,只补过箱数的记录不得遮蔽原有编号;原资料确实缺失时仍须补齐。客户、来源版本、目的仓、货物完整性与外部约号唯一性校验继续执行。
- 入口移除全局工作待办、流程筛选、负责人分派、跟进、复核、责任交接,以及货物核实/分批/共约/共车编排入口;这些原业务在相应模块继续处理。仍由其他业务页面实际使用的精确来源或事项深链可以打开原业务表单,不恢复旧全局待办及筛选协议。
- 排车日历同时返回各排车单货物快照中的关联集装箱号,以及货物通过同客户真实尾程订单关联的原装柜事件中的柜次短号(如 D1821),分别按单去空、去重;同车多个完整柜号、柜次短号均可在当前日历范围搜索,支持忽略大小写的包含匹配,仍只展示一条排车安排。没有装柜来源时不推测短号,也不依赖当月到港记录拼接短号。柜号只作检索和展示,不改变客户归属、货物数量或排车状态。详情明确展示起运仓时区及当地计划出发时间;北京时间与美国当地日期可能跨日,不把浏览器日期用作日历归属。
- 缺权限、来源失败或缺时区明确提示数据范围不完整,不能显示为全部完成或完整空日历。未能定位日期的排车提示具体排车单号和原因,避免误认为当前搜索的单据缺资料。未知日期保留未定,不用浏览器当前日期、内部 ID 或假数据补齐。
@@ -257,7 +257,7 @@ paths:
schema: {$ref: '#/components/schemas/FeeDirection'}
- name: status
in: query
schema: {type: string, enum: [AVAILABLE, LOCKED, BILLED, VOIDED, SUPERSEDED]}
schema: {type: string, enum: [AVAILABLE, LOCKED, BILLED, SETTLED, PAYABLE_BILLED, PARTIALLY_PAID, PAID, VOIDED, SUPERSEDED]}
- name: reviewStatus
in: query
schema: {$ref: '#/components/schemas/ReviewStatus'}
@@ -1024,8 +1024,11 @@ components:
amount: {$ref: '#/components/schemas/Money'}
currency: {type: string, enum: [CNY]}
reviewStatus: {$ref: '#/components/schemas/ReviewStatus'}
sourceStatus: {type: string, enum: [AVAILABLE, LOCKED, BILLED, VOIDED, SUPERSEDED]}
statementGenerated: {type: boolean}
sourceStatus:
type: string
enum: [AVAILABLE, LOCKED, BILLED, SETTLED, PAYABLE_BILLED, PARTIALLY_PAID, PAID, VOIDED, SUPERSEDED]
description: 当前来源展示状态。应付按同客户有效结算单显示 PAYABLE_BILLED(已生成应付单)、PARTIALLY_PAID(部分付款)、PAID(已付款);直接已付也显示 PAID,作废单不占用来源。
statementGenerated: {type: boolean, description: 是否关联同客户的有效客户对账单;应付来源不使用该字段判断付款进度}
FeeSourceDetail:
allOf:
- $ref: '#/components/schemas/FeeSource'