Files

155 lines
33 KiB
Markdown
Raw Permalink Normal View History

2026-09-01 14:27:19 +08:00
# 开发环境独立任务协作登记
> 仅适用于保存项目“开发环境”(projectId `6f874ec3-d3b2-49bd-8625-327f4d685f98`)和工作目录 `C:\Users\BY-OY\Desktop\code\chongchong-global-dev`。测试环境任务不得复用本表任务,本表任务也不得访问测试目录。
## 环境隔离门禁
2026-09-04 16:44:08 +08:00
- 开发总控只向本表 task_id 下发当前系统全流程开发工作;不得向 `C:\Users\BY-OY\Desktop\code\chongchong-global` 的测试环境任务下发,即使提示中另写开发目录也不例外。
2026-09-01 14:27:19 +08:00
- 每个任务必须同时满足 projectId、cwd 和登记环境一致;任一项不一致立即停止,不读取、不修改、不运行命令,也不得自行切换目录补救。
- 开发专项日常只执行源码实现、定向测试、类型检查和构建;开发数据库与开发部署只能由开发总控在代码门禁通过后按精确服务、数据库和变更清单单独下发。测试环境、测试数据库、生产环境和 Jenkins 仍禁止。
- 开发与测试目录之间不得复制未提交文件、生成补丁、自动合并或 cherry-pick;需要移交时由用户明确授权具体方向、提交和范围。
- 同一批次每个应用或服务只允许一个生产代码写入者;共享路由、导航、权限初始化、OpenAPI 和 SQL 的写入权由开发总控在下发时明确。
2026-09-01 14:46:40 +08:00
- 每次提交前必须先在目标仓库执行 `git fetch origin test dev`,保持当前分支为 `dev`,把最新 `origin/test` 合并到 `dev` 后再提交本轮改动;不得通过切换分支、rebase、force push 或跳过冲突来规避同步。发生冲突时由该仓库当前唯一 Git 集成者处理,必须同时保留 test 最新有效改动与开发总控已冻结的 dev 契约,并在提交前重跑直接受影响门禁。
2026-09-01 14:27:19 +08:00
## 开发环境操作授权
- 用户已在当前持续目标中授权本总控部署开发环境、操作开发数据库、使用 Jenkins 部署开发环境,并对开发环境执行真实 HTTP 调用。授权不扩展到测试或生产环境。
2026-09-01 14:27:19 +08:00
- 数据库操作前必须确认开发库、精确表、业务主键或 SQL 文件和预计影响行;优先使用事务并保留执行结果。仓库已审核的开发增量 SQL、测试造数和职责范围内的数据修正可执行。
- `DROP`、`TRUNCATE`、整库重置、清空表、无明确主键范围的批量删除及其他不可恢复操作不在授权内,仍需用户当轮单独确认。
- 开发部署必须在受影响测试、类型检查或构建通过后进行,并记录精确部署单元、使用的提交或工作区状态、配置来源和部署结果。若唯一部署方式依赖 Jenkins,执行前重新取得用户对 Jenkins 的明确授权。
2026-09-04 16:44:08 +08:00
- 开发环境真实 HTTP 在部署和数据库变更完成后执行,可包含当前全流程职责范围内的读写验收;只使用开发身份和开发数据,记录接口路径、HTTP 状态、业务码、`requestId`/`traceId` 与结果,不输出或持久化 Token、密码和敏感载荷。破坏性批量请求仍需单独确认。
2026-09-01 14:27:19 +08:00
## 登记表
总控:
| task_id | project_id | 展示名称 | 长期职责 |
|---|---|---|---|
| `01a06c0b-0515-7c60-b329-77342b54e666` | `6f874ec3-d3b2-49bd-8625-327f4d685f98` | 【开发总控】全流程开发 | 接收当前系统端到端全流程开发任务,冻结跨端契约和串行批次,协调本表专项完成实现、定向测试和构建;代码门禁通过后按本表授权操作开发数据库、通过 Jenkins 部署开发环境并执行真实 HTTP 验收;不操作测试或生产环境。 |
2026-09-01 14:27:19 +08:00
长期专项:
| task_id | parent_task_id | project_id | 展示名称 | 唯一长期职责 |
|---|---|---|---|---|
| `01a05b23-bfc6-7121-a6f2-7fc14ee456a3` | `01a06c0b-0515-7c60-b329-77342b54e666` | `6f874ec3-d3b2-49bd-8625-327f4d685f98` | 【开发全流程前端】Admin | `apps/admin-web/` 全部平台管理页面、路由、API、权限消费、测试与构建;不修改 Client、PDA、后端或 SQL。 |
| `01a05b23-c20f-7f52-8a26-543f1563f0f8` | `01a06c0b-0515-7c60-b329-77342b54e666` | `6f874ec3-d3b2-49bd-8625-327f4d685f98` | 【开发全流程前端】Client | `apps/client-web/` 全部客户工作台页面、路由、API、权限消费、测试与构建;不修改 Admin、PDA、后端或 SQL。 |
| `01a05b78-6e28-7460-babf-3a87331f6dd4` | `01a06c0b-0515-7c60-b329-77342b54e666` | `6f874ec3-d3b2-49bd-8625-327f4d685f98` | 【开发全流程前端】海外PDA | `apps/pda-overseas-uniapp/` 全部海外仓现场作业、真实 API、恢复、扫码、幂等、测试与构建;派送仍由 Admin/Client 承载。 |
| `01a05b23-c5ff-77c3-8f77-ceb4f4c40de2` | `01a06c0b-0515-7c60-b329-77342b54e666` | `6f874ec3-d3b2-49bd-8625-327f4d685f98` | 【开发全流程后端】Lastleg | `baiyue-firstleg/lastleg-service/` 海外尾程、入仓、库存、换标、转运、废弃、排车、出库、派送、一件代发、异常、回访及海外业务的接口、OpenAPI、SQL、权限强制和测试。 |
| `01a05b23-c7f8-72e0-bb3c-afbbf1c7f9e7` | `01a06c0b-0515-7c60-b329-77342b54e666` | `6f874ec3-d3b2-49bd-8625-327f4d685f98` | 【开发全流程后端】IAM权限 | `baiyue-firstleg/iam/` 及必要 common-security 的平台/客户全流程权限资源、角色初始化、授权快照、OpenAPI、SQL 和测试;不修改 Lastleg 业务或前端。 |
2026-09-07 10:35:33 +08:00
| `01a079b6-b279-7aa3-ba2f-6556dbb44790` | `01a06c0b-0515-7c60-b329-77342b54e666` | `6f874ec3-d3b2-49bd-8625-327f4d685f98` | 【开发全流程后端】Firstleg头程履约 | `baiyue-firstleg/firstleg/` 国内头程入库、测量、计费、分柜、装柜、PDA 服务端门禁、出仓等 Firstleg 履约接口、DTO、Service、Mapper、模块 OpenAPI、模块 SQL 与测试;不修改 Order、IAM、前端或统一增量 SQL。 |
| `01a079b6-b5fa-7fe3-82b5-59c4712a6d4c` | `01a06c0b-0515-7c60-b329-77342b54e666` | `6f874ec3-d3b2-49bd-8625-327f4d685f98` | 【开发全流程后端】Order订单域 | `baiyue-firstleg/order/` 头程订单主数据、统一订单查询聚合、订单状态与动作、内部 Firstleg 客户端 DTO、Order OpenAPI、模块 SQL 与测试;不修改 Firstleg、IAM、前端或统一增量 SQL。 |
2026-09-01 14:27:19 +08:00
验收与部署任务不常驻登记。只有用户明确要求开始验收、准备部署或执行验收时,才另行决定是否创建;开发任务不得代行。
2026-09-04 16:44:08 +08:00
## 当前节点:一件代发客户资金账户(充值先行)
本节点先跑通客户充值申请、平台审核、平台手工充值/扣款、余额与流水;微信/支付宝商户支付回调、订单消费、冻结/解冻及自动扣费后续另批处理。付款渠道仅展示已配置的静态收款二维码,客户提交金额、付款方式和付款截图后进入待审核。
2026-09-05 12:23:22 +08:00
资金口径固定为 CNY:`可用授信 = 授信额度 - 已用授信 - 冻结授信`,`总可用余额 = 实际余额 + 授信额度 - 已用授信 - 冻结金额`。冻结金额包含实际资金冻结与授信冻结;扣款先使用未冻结实际资金,再使用授信,充值先归还已用授信,再增加实际余额。初始授信由 Finance 环境配置统一设置,平台可按客户调整。每次成功变动必须生成唯一业务单号和不可变流水;同一幂等键同载荷重试返回原结果,不同载荷冲突,重复审核不得重复入账。
| 工作包 | 执行任务 | 写入范围 | 交付目标 | 依赖与集成边界 |
|---|---|---|---|---|
| `WALLET-BE-FINANCE` | 【开发总控】全流程开发 | `baiyue-firstleg/finance/`、Finance OpenAPI、模块 SQL 与统一增量 SQL、必要 Finance/File 内部客户端 | 新增客户资金账户、充值申请、授信额度、资金冻结和流水主账;提供客户账户/流水/充值申请接口及平台账户列表/详情、待审充值、审核、手工充值/扣款/授信接口,并提供业务模块使用的冻结、结算和释放内部接口;实现客户隔离、金额校验、权限、服务令牌、幂等、乐观并发与测试 | Finance 拥有余额、授信、冻结和流水;扣款先使用实际资金再使用授信,充值先归还已用授信;付款截图经 Finance 调用 File 内部 `FINANCE_VOUCHER` 保存;不接第三方支付回调,具体一件代发业务调用后续接线 |
| `WALLET-FE-CLIENT` | 【开发全流程前端】Client | `apps/client-web/src/modules/finance/` 及该模块路由、导航和测试 | 新增客户资金账户页,显示实际/冻结/可用余额和流水;按原型完成金额选择、微信/支付宝静态二维码、付款截图上传、提交待审核及状态反馈 | 客户范围只取登录态;只调用 `/api/client/finance/v1/**`,无二维码配置时明确不可提交,不模拟支付成功 |
| `WALLET-FE-ADMIN` | 【开发全流程前端】Admin | `apps/admin-web/src/modules/finance/` 及对应测试 | 将客户账户页收敛为三余额账户;详情中待审核客户充值置顶并提供审核,保留流水;列表/详情提供手工充值和手工扣款,操作列固定首列 | 只消费 Finance 正式 API;审核、充值、扣款分别受写权限控制;不在前端计算或兜底余额 |
| `WALLET-BE-IAM` | 【开发全流程后端】IAM权限 | `baiyue-firstleg/iam/` 及必要权限初始化 SQL、OpenAPI 和测试 | 新增并初始化客户账户查看/充值申请和平台充值审核/账户调账权限,保持列表只读与写操作分离 | 企业负责人默认获得客户账户查看和充值申请权限;平台财务角色按现有初始化规则获得审核与调账权限,不修改 Finance 业务 |
完成门禁:Finance、IAM 定向测试通过,Admin/Client 定向测试、类型检查和生产构建通过,跨端 DTO 与权限码一致;专项不提交、不推送、不部署、不操作数据库或真实 HTTP,由开发总控统一集成后再进入开发环境部署与验收。
### 资金账户节点结果(2026-09-05)
- Backend 已在 `dev` 完成 Finance 主账、充值申请、不可变流水、File 凭证代理、客户隔离、幂等、乐观并发及 IAM 四项独立权限,最终提交为 `37183ac2`;Finance 全量 162 项、最终运行时兜底行为 4 项及 IAM 定向 18 项测试通过。开发统一增量 SQL 执行结果为 `PASS`,确认 3 张资金表、45 个字段、4 项权限资源和 4 项默认授权,未重建或删除数据库。
- Client 提交 `e814902`、`719a642`,完成三余额、流水、充值申请和金额/渠道/截图提交弹窗;全量 267 项测试及生产构建通过。Admin 提交 `68fca1b`、`fb4cab6`,完成客户账户列表/详情、待审置顶、凭证预览、审核与手工充值/扣款,并消除详情初始化重复请求;全量 1691 项测试、最终页面定向 17 项及生产构建通过。
- 开发部署最终结果:Backend Jenkins `#171`(下游 Finance `#26`)、Admin `#45`、Client `#45` 均为 `SUCCESS`;Admin、Client 与国内 API 健康检查均返回 HTTP 200。开发环境以 `DEPLOY_ENV=development` 启用明确标注“开发示例、不可付款”的静态二维码,其他部署环境保持默认关闭。
- 真实 HTTP 验收使用客户登录态提交 PNG 付款截图:创建返回 `PENDING`,相同幂等键重放返回原申请,不同载荷返回 `FIN-IDEMPOTENCY-CONFLICT`;凭证下载为 HTTP 200 `image/png`;审核后余额从 ¥15 增至 ¥115,重复审核返回 `FIN-WALLET-409`;另一申请驳回后余额不变。手工充值 ¥25、扣款 ¥10 成功并生成流水,超额扣款返回 `FIN-WALLET-INSUFFICIENT`;最终 `实际余额 ¥115 = 冻结金额 ¥0 + 可用余额 ¥115`。
- 已按 `1920×1080`、浏览器缩放 `100%` 验收 Client 资金账户、流水、充值记录与充值弹窗,以及 Admin 客户筛选、账户详情、充值记录、凭证和手工充值/扣款表单。Client 资金页的账户、流水、申请、渠道接口各请求 1 次;Admin 去重修复后详情流水与充值申请接口各请求 1 次,未发现遮挡或横向溢出。
2026-09-05 12:23:22 +08:00
- 授信与冻结结算扩展已完成:Backend 提交 `ba4407eb`、权限断言修复 `ede63fac`,Admin 提交 `92b24cc`,Client 提交 `46a91fb`,财务契约提交 `08a80e7`。Finance 提供服务令牌保护的账户查询、冻结、结算和释放内部接口;初始化授信配置为 `FINANCE_WALLET_DEFAULT_CREDIT_LIMIT`,默认 `0.00`。
- 最新开发部署为 Backend Jenkins `#173`(下游 Finance `#29`)、Admin `#46`、Client `#47`,均为 `SUCCESS`。国内统一增量从首行完整执行并取得 `migration_status=PASS`;真实 HTTP 授信回归 `13/13` 通过,验证授信调整、现金优先扣款、额度下限门禁、充值优先归还授信及最终余额恢复。验收后账户为实际余额 `¥115.00`、冻结金额 `¥0.00`、授信额度/已用授信/冻结授信均为 `¥0.00`、总可用余额 `¥115.00`。Client 提交 `85871d5` 将账户接口返回前的六项金额从误导性的 `¥0.00` 收敛为 `¥—`;专项测试、类型检查和生产构建通过。重新按 `1920×1080` 验收后六张余额卡均在视口内,账户、流水、充值申请、充值渠道接口各请求 1 次,Admin/Client 控制台无错误。
2026-09-05 16:47:36 +08:00
- 资金账户扩展测试提交 `8400636d`、`f62283fb`:补充被冻结现金不可扣用、充值不释放冻结授信、授信占用与冻结金额非法状态、默认授信配置失败关闭,以及内部服务令牌拒绝和冻结/结算/释放请求转发共 9 项场景;Finance 全量测试更新为 `174/174` 通过。本批仅新增测试,不修改运行时代码、数据库或部署产物。
2026-09-04 16:44:08 +08:00
## 当前 P0 全流程补齐批次
本批只处理原型盘点确认的 P0,不混入 Admin 经营分析、销售管理、官网、小程序、独立 APP 或全量视觉验收。现有文档业务域改名属于总控在途改动,各专项必须保留,不得暂存、提交、覆盖或回滚。
| 工作包 | 执行任务 | 写入范围 | 交付目标 | 依赖与集成边界 |
|---|---|---|---|---|
| `P0-BE-LASTLEG` | 【开发全流程后端】Lastleg | `baiyue-firstleg/lastleg-service/` | 补齐客户海外采购、本土卡、本土散板、海外入库订单所需客户 API;核对并补齐 PDA 盘点、移库、换标、库存/库位/托盘查询专用 API、OpenAPI 与测试 | 先冻结 DTO、权限码和状态机并通知 Client、海外 PDA、IAM;不修改 `iam/`、统一 SQL或前端 |
| `P0-BE-IAM` | 【开发全流程后端】IAM权限 | `baiyue-firstleg/iam/` 及必要 `common-security/` | 补齐并核对客户海外业务、海外入库查询和海外 PDA 现场作业的权限资源、角色初始化、OpenAPI 与模块 SQL | 消费 Lastleg 冻结的权限码;不修改 Lastleg、统一 SQL或前端 |
| `P0-FE-CLIENT` | 【开发全流程前端】Client | `apps/client-web/` | 将海外采购、美国本土卡、美本土散板和海外入库订单从占位收敛为真实页面;修正首页快捷入口;覆盖权限、加载、空态、错误态、幂等与测试 | 只消费客户正式 API,不调用平台/内部接口,不模拟成功;“我的订单”统一查询不在本批 |
| `P0-FE-OVERSEAS-PDA` | 【开发全流程前端】海外PDA | `apps/pda-overseas-uniapp/` | 接通库存盘点、商品移库、换标收货/执行/复核、库存/库位/托盘查询共 8 项现场能力,完成扫码、恢复、并发冲突、幂等、错误态和构建测试 | 只调用 `/api/pda/**` 正式接口;不得通过 `available: true` 掩盖未接通能力,不改后端或其他前端 |
完成门禁:四包定向测试与构建通过,跨端契约一致,所有 P0 页面或 PDA 入口均不再是 `prototype`、`available: false` 或模拟成功。专项本批不提交、不推送、不部署、不执行数据库和真实 HTTP;总控汇总差异并处理现有文档改动后,再按各仓库最新测试分支同步门禁统一集成。
### P0 批次结果(2026-09-04)
| 工作包 | 状态 | 结果与门禁 |
|---|---|---|
| `P0-BE-LASTLEG` | 已完成 | 客户海外采购、本土卡、本土散板、海外入库列表/详情接口及 PDA 作业 OpenAPI 已补齐;Lastleg 548 项测试通过,2 项跳过 |
| `P0-BE-IAM` | 已完成 | 4 项客户权限已冻结并只授予企业负责人,PDA 继续使用统一 `lastleg:pda:operate`;IAM 全量 284 项测试通过 |
| `P0-FE-CLIENT` | 已完成(总控接管) | 原 Client 任务连续两次网络流中断;总控在同一工作区完成三类跨境订单列表/详情/新增、海外入库列表/详情和首页正确路由;Client 263 项测试、类型检查、生产构建通过 |
| `P0-FE-OVERSEAS-PDA` | 已完成 | 盘点、移库、换标收货/执行/复核、库存/库位/托盘查询 8 项入口已接真实 `/api/pda/**`;64 项测试及 H5/App 资源构建通过 |
| 总控集成 | 已完成 | IAM 模块 SQL 与统一增量 SQL 内容一致;开发/测试登记隔离、页面索引、权限、Gateway、PDA 能力等 832 项索引合同通过;各 Git 仓库 `git diff --check` 通过 |
总控已在每次提交前重新获取并合并对应测试分支,完成开发分支提交与推送:Backend `54cb9cea`、Auth 修复 `81470359`,Client `6998f81`,Admin `7d29f3d`,国内 PDA `881c273`,海外 PDA `f960b9f`。五个工作区提交后均保持在 `dev` 分支且无未提交业务改动。
开发部署已完成:Admin Jenkins `#41`、Client `#42`、IAM `#33`、Lastleg `#65`、Auth `#24` 均成功,其中后端任务显式使用 `ENVIRONMENT=development` 与 `DEPLOY=true`;未触发测试或生产任务。开发数据库只在 `8.163.49.32:3306` 执行统一增量,环境标记为 `dev`,迁移合同结果为 `PASS`,4 项权限及负责人授权、唯一索引和重复绑定清理结果均已核对;未重建或删除数据库。
开发环境真实 HTTP 已通过:登录后签发国内及海外 Token,IAM 返回 4 项目标权限;海外采购、本土卡、本土散板和海外入仓计划 4 个客户接口均返回 HTTP 200、业务码 200。Client 已按 `1920×1080`、浏览器缩放 `100%` 验收业务总览、三个出海下单列表、散板新增表单和海外入仓列表,未发现遮挡、溢出、错误日志或“暂无权限”;海外 PDA H5/App 构建已通过,真机广播扫码、拍照等硬件能力仍需设备证据。
### 全流程收口检查点(2026-09-04)
- Backend 已在提交前重新获取并合并 `origin/test`,开发分支提交为 `e477f739`、`b8a649e7`;开发 Jenkins Backend `#165` 及下游 Firstleg `#72` 成功。
- 最新开发环境真实 HTTP 全流程报告 `baiyue-firstleg/reports/admin-test-env-acceptance-20260904080448.json` 结果为 `PASS`:`8166/8166` 断言通过、`112` 次模块运行、`92` 个唯一模块、`4981` 个唯一请求,`failed=0`、`skippedModules=0`、`deploymentBlockers=0`。17 项覆盖说明均为非阻断项,包含设备能力、外部船司依赖和无公开接口可稳定构造的中间状态。
- Admin 已合并最新 `origin/release/test`,冲突按当前全流程契约收敛;补齐智能装柜箱数输入提示,`233/233` 个测试文件、`1670/1670` 条测试及生产构建通过,本地提交 `871d0a5`、`bc6629d`。Client 已合并最新 `origin/release/test`,全量测试及生产构建通过,本地提交 `dbd3c61`。国内 PDA `118/118` 条测试通过。海外 PDA `65/65` 条测试及 H5 构建通过,本地提交 `4f314fa`。
- 海外 PDA 已按 `390×844` 通过 H5 登录、工作台、拆柜收货、托盘、盘点、移库、换标、库存/库位/托盘查询、排车、出库、历史和个人中心的页面路由与横向溢出检查;托盘管理页不再显示“PDA 广播扫码与 H5 人工输入均可使用”。Android 广播扫码、相机与弱网恢复仍只计入设备验收,不以 H5 结果替代。
- Git 域名入口的写入凭据失效后,使用本机已登记的同一 Git 服务入口 `8.163.30.128:10082` 完成推送,未修改仓库远程配置:Admin `bc6629d`、Client `dbd3c61`、海外 PDA `4f314fa` 已进入远端 `dev`。本检查点无代码、部署或验收阻断。
- 最新前端提交已部署到开发环境:Admin Jenkins `#42`、Client Jenkins `#43` 均为 `SUCCESS`,`http://dev-admin.buggoglobal.com/healthz` 与 `http://dev-app.buggoglobal.com/healthz` 均返回 HTTP 200。Backend、Admin、Client、国内 PDA、海外 PDA 五个仓库的本地 `HEAD` 与远端 `origin/dev` 一致且工作区干净;AGENTS 索引合同 `872/872` 通过。
2026-09-04 16:50:07 +08:00
- 收口前再次同步 Backend `origin/test`,保留新财务链、隔离手机号可用性检查和 Firstleg 船期调度更新,并修正跨区财务合同的客户范围断言;提交 `07bcf316`、`61b7b3fb` 已推送。Node 合同 `14/14`、Firstleg 调度测试 `7/7`、AGENTS 索引合同 `873/873` 通过;开发 Backend Jenkins `#166` 与下游 Firstleg `#73` 均为 `SUCCESS`,国内及海外 Gateway `/actuator/health` 均为 HTTP 200、`UP`。
- 文档仓库已合并最新 `origin/test`,测试登记保持清空,开发登记保持独立有效;79 个文件按“订单与客户、入库测量与计费、国内货柜履约、海外仓业务、财务管理”业务域重组,非原型 Markdown/YAML/JSON 中历史期数称谓检索为 0,提交 `703f869`、`40492cd` 已推送。
- Backend 再次于提交前获取 `origin/test`(无新增提交),修复二进制只读下载瞬时失败重试、Finance 结算与直接已付执行顺序、合并后丢失的一件代发整托分配/整托拣货验收,以及当前 SQL、编号生成器、OpenAPI 与同步依赖基线;提交 `991bab9c` 已推送到远端 `dev`。根级 Node 合同 `122/122`、模块合同 `484/484`、Mapper 合同 `261/261`、AGENTS 索引合同 `873/873` 均通过。
- 最新开发环境真实 HTTP 全流程报告 `baiyue-firstleg/reports/admin-test-env-acceptance-20260904091729.json` 结果为 `PASS`:`8082/8082` 断言通过、`112` 次模块运行、`92` 个唯一模块、`4937` 个唯一请求,`failed=0`、`skippedModules=0`、`deploymentBlockers=0`。17 项覆盖说明均为非阻断项:设备能力 1 项、非版本化文档契约 1 项、外部第三方 9 项、无法通过公开接口稳定构造的 fixture 6 项。
2026-09-04 17:52:41 +08:00
- 内置浏览器复验覆盖 Client 海外贴标、仓储转运、货物废弃、退货换标的列表、详情或新建表单,以及 Admin 海外尾程、入库、排车、出库、派送、换标、托盘、库存、进销存、异常和客户回访列表;页面真实 API 加载成功且无控制台错误。复验发现并修复进销存页面暴露内部 DTO 说明、英文库存变动代码和操作人内部占位的问题,Admin 提交 `39ade43` 已在提交前合并最新 `origin/release/test` 并推送;`233/233` 个测试文件、`1685/1685` 条测试、类型检查和生产构建通过,开发 Jenkins `admin-web-dev #43` 为 `SUCCESS`,`/healthz` 返回 HTTP 200,部署后页面显示中文业务类型且内部文案不再出现。
- 海外 PDA H5 再次使用开发网关验证登录、工作台、拆柜收货、托盘、盘点、移库、换标、库存/库位/托盘查询、排车、出库、历史、个人中心及“退出确认→退出→重新登录”;全部正式入口可加载,无权限或请求错误,托盘管理页未回归“PDA 广播扫码与 H5 人工输入均可使用”。本次浏览器工具固定视口不替代已登记的 `390×844` 截图证据;Android 广播扫码、相机与弱网恢复仍保留为设备验收项。
## 当前节点:海外业务资金与托盘费用闭环(2026-09-05)
本节点按当前对话冻结以下口径:海外采购订单号为客户名称拼音首字母(最多8位大写)+北京时间日期YYYYMMDD+客户当日4位序号;采购签收文件与费用凭证归属采购订单,费用逐条冻结,整单实收入库完成后逐条结算。换标创建时按CNY费用冻结,资金冻结成功后才允许开始作业,完成结算,驳回或取消释放。跨区域资金操作只经 WalletCommandRequestedV1 / WalletCommandCompletedV1 的双向 Outbox/Inbox 事件,不由海外服务直连国内 Finance。
国内托盘统计以活动库位预占或占用事实判定“占用”,其余有效托盘为“闲置”;海外托盘使用 IDLE/OCCUPIED/SCRAPPED 权威状态。拆柜打托成本按最终实物托盘单价合计,以同一来源柜各客户实际收货体积分摊,四舍五入到分,最后一条吸收尾差并保证总额守恒。
| 工作包 | 写入范围 | 交付目标 |
|---|---|---|
| `OVERSEAS-WALLET-EVENTS` | common-event-contract、event-bridge-service、finance、lastleg-service及两区SQL | 双向资金指令、结果事件与幂等可靠投递 |
| `PROCUREMENT-RELABEL-FUNDING` | Lastleg/File/Admin及必要Client | 采购编号、签收文件、费用凭证及逐条资金状态;换标费用冻结/结算/释放 |
| `PALLET-SUMMARY` | 国内Warehouse、海外Warehouse、Admin | 总数、闲置、占用统计及筛选一致性 |
| `DESTUFF-PALLET-COST` | Lastleg、Finance事件、Admin/PDA必要展示 | 按实托数计成本并按客户实收体积分摊,金额守恒 |
完成门禁:受影响后端测试、Mapper和SQL合同、Admin/Client测试及构建通过;随后执行开发数据库增量、Jenkins开发部署、真实HTTP,以及Admin/Client 1920×1080和涉及PDA 390×848验收并核对请求次数。
### 海外业务资金与托盘费用节点结果(2026-09-05)
- Backend 已完成并推送 `5fbd2bbd`、`718a54ec`、`3c535731`、`af785241`、`81917423`、`64bf5aa0`:落地双向钱包事件、Finance 指令消费与结果定时投递、海外采购编号/文件/费用冻结结算、换标费用冻结结算释放、国内外托盘统计及拆柜打托成本分摊。修复了跨区消费地址未绑定、两端事件哈希字段长度不足和 Finance 结果 Outbox 未启用调度三个真实联调问题。Finance 177 项、Lastleg 559 项(2 项跳过)、海外 Warehouse 55 项、Event Bridge 47 项及受影响合同测试通过;Mapper 263 项、AGENTS 876 项与国内/海外统一增量 SQL 合同通过。4 项既有 OpenAPI 合同失败与本节点无关,未作为本节点通过项记录。
- Admin 已完成并推送 `ccf16b8`、`fedfdd2`、`d310f37`,补齐采购详情文件/费用、托盘汇总和换标资金状态,并修复海外托盘首屏不加载汇总及采购操作记录暴露内部操作人 ID。Client 已完成并推送 `b13295f`,提交采购客户身份与换标费用。Admin 全量 1692 项、Client 全量 267 项测试及两端类型检查、生产构建通过。
- 开发数据库国内与海外统一增量均从首行执行并返回 `PASS`;`fin_wallet_command_inbox.payload_hash` 与 `ll_wallet_event_inbox.payload_hash` 均确认为 `varchar(71)`。未重建、清空或删除数据库。
- 开发部署完成:Backend 父任务 `#176`、Event Bridge `#34`、Finance `#35`、Lastleg `#68`、Admin `#49`、Client `#48` 及本批其他受影响服务均成功,Finance 与 Lastleg 容器使用对应最终提交并保持健康。两次父任务因外部镜像仓库登录失败显示 `UNSTABLE`,随后改用已配置的内部镜像仓库直接部署受影响服务并取得 `SUCCESS`,未修改密钥或环境配置。
- 真实 HTTP 与数据库闭环通过:采购单 `ICS202609050001` 按客户拼音首字母规则生成,签收文件、付款凭证与费用 `PF2096250732063727618` 已关联;费用 `¥0.01` 从冻结进入结算。换标单 `RL-ONT-20260905-860034` 创建后冻结 `¥0.01`,完成作业后结算。Finance 四条钱包指令均为 `SUCCEEDED`,四条结果事件均为 `PUBLISHED`,两笔 Hold 均为 `SETTLED`;账户最终实际余额 `¥114.98`、冻结金额 `¥0.00`、总可用余额 `¥114.98`,流水 `AC-260905-0030` 至 `AC-260905-0033` 完整记录两组冻结与消费。
- 国内托盘真实汇总为总数 `510`、闲置 `44`、占用 `466`;海外托盘为总数 `250`、闲置 `100`、占用 `98`、报废 `52`。Admin、Client、国内 API、海外 API 健康检查均为 HTTP 200。
- 已按 `1920×1080`、浏览器缩放 `100%` 验收 Admin 采购列表/详情、国内与海外托盘、换标列表,以及 Client 采购、贴标申请和资金账户;采购和托盘页面的业务请求按一次列表、一次汇总及必要字典/权限请求发出,未发现重复业务请求。Client 最终显示 `¥114.98 / ¥0.00 / ¥114.98`,换标单置于首行并显示“已完成”。本批未修改或部署国内、海外 PDA 前端,因此不触发 `390×848` 页面门禁;拆柜完成后的费用触发点由 Lastleg 服务测试与开发部署覆盖。
2026-09-07 10:02:48 +08:00
- 2026-09-06 已把本节点纳入默认全量真实 HTTP 脚本:自动创建并登录本轮客户,初始化授信、人工充值,完成采购审核、签收/凭证上传、费用冻结结算,两笔收费换标的结算与释放,核对 Client 账户/账本、国内外托盘汇总、拆柜打托分摊和跨区 Finance 金额守恒。最终报告 `admin-test-env-acceptance-20260906031556.json` 为 `3229/3229` 条断言通过、48 个唯一模块、2001 个唯一真实请求、0 跳过、0 失败;脚本全量离线合同 `621/621` 通过。仅 Android 广播扫码、相机、弱网恢复及第三方验证码页面保留人工/设备验收。
- 自动化回归发现并修复拆柜打托费用任务只扫描最旧 50 个已完成柜、被历史零价托盘长期阻塞的问题,现按最新完成时间优先处理;Lastleg 560 项测试通过(2 项跳过),开发 Jenkins `backend-java-dev #179` 与 `baiyue-firstleg-dev-lastleg-service #69` 均为 `SUCCESS`。Backend 最终提交为 `20b3074c`、`0fbab098`、`54af43a9`,均已推送 `dev`。
2026-09-07 10:35:33 +08:00
## 当前节点:头程订单扣货闭环(2026-09-07)
2026-09-07 12:23:02 +08:00
本节点按当前对话冻结以下口径:扣货对象为 Firstleg 入库单,不改变 Order 主状态;平台人员可在尚未发生实物拣货前扣货或解除扣货,两个动作均要求原因、幂等键和期望版本,并在同一事务写当前快照与不可变历史。动作可选上传一份关联凭证,文件必须按当前客户、入库单和 `INBOUND_HOLD_EVIDENCE` 精确归属,只有已经进入不可变历史的凭证允许下载。扣货后必须阻断智能排柜候选与人工分配、预装确认、PDA 任务创建或启动、PDA 拣货、装柜模型桥接、PDA 资源结算、异步完成收口和国内出仓;尚未生成入库单、已发生实物拣货、已装柜或已派送的订单不得手工扣货。统一订单字段直接收敛为 `holdFlag/currentHoldReason`,不保留 `holdCargo/holdReason` 别名。
2026-09-07 10:35:33 +08:00
| 工作包 | 执行任务 | 写入范围 | 交付目标 | 依赖与集成边界 |
|---|---|---|---|---|
| `HOLD-BE-FIRSTLEG` | 【开发全流程后端】Firstleg头程履约 | `baiyue-firstleg/firstleg/` 的扣货命令、历史查询、履约门禁、模块 OpenAPI、模块 SQL 与测试 | 提供扣货/解除扣货接口,落实客户归属、独立权限、幂等、乐观并发、不可变历史和实物作业前置门禁;所有下游履约写入口按服务端权威扣货状态失败关闭 | 先冻结平台接口及内部统一订单 DTO 字段并通知 Order、Admin;不修改 Order、IAM、前端或统一增量 SQL |
| `HOLD-BE-ORDER` | 【开发全流程后端】Order订单域 | `baiyue-firstleg/order/` 的 Firstleg 内部客户端 DTO、统一订单响应、Order OpenAPI 与测试 | 将 Firstleg `holdFlag/currentHoldReason` 透传到统一订单列表/详情,删除未落地的旧字段语义,不复制扣货状态机 | 只消费 Firstleg 冻结 DTO;不提供扣货写接口,不修改 Firstleg、IAM、前端或统一增量 SQL |
| `HOLD-FE-ADMIN` | 【开发全流程前端】Admin | `apps/admin-web/src/modules/unified-orders/`、必要 `modules/inbounds/` API 暴露与对应测试 | 在订单详情“其他”页签增加独立扣货控制、状态标识、原因/凭证弹窗和历史展示;尚未生成入库单或无权限时只读;成功后刷新详情与列表 | 快递信息、内部备注、箱子计费不并入扣货统一提交;只消费正式 Firstleg/Order API,不在前端推导可扣货状态 |
| `HOLD-BE-IAM` | 【开发全流程后端】IAM权限 | `baiyue-firstleg/iam/` 的权限资源、默认角色授权、模块 OpenAPI、模块 SQL 与测试 | 新增 `platform:firstleg:inbound:hold` 独立写权限并按现有平台管理员规则初始化;保持查看权限与扣货写权限分离 | 不修改 Firstleg、Order、统一增量 SQL或前端;权限码冻结后通知 Firstleg、Admin |
2026-09-07 12:23:02 +08:00
| `HOLD-BE-FILE` | 【开发总控】全流程开发 | `baiyue-firstleg/file/` 的通用业务文件类别与测试、Firstleg 专用文件客户端和归属校验 | 提供客户作用域的扣货凭证上传、精确引用校验和已关联凭证下载,拒绝跨客户、跨入库单及未进入历史的文件 | File 只保存文件与精确归属,不读取 Firstleg 业务表;凭证可见性和不可变历史仍由 Firstleg 决定 |
2026-09-07 10:35:33 +08:00
完成门禁:Firstleg、Order、IAM 定向测试通过,Mapper 与模块 SQL/OpenAPI 合同通过,Admin 定向测试、类型检查和生产构建通过;开发总控统一维护业务契约与统一增量 SQL、执行跨端 DTO/权限核对和 Git 集成。当前各仓库在本批下发前由开发总控恢复到 `dev`,按登记门禁获取并合并最新测试分支;专项不自行切换分支,不提交、不推送、不部署、不操作数据库或真实 HTTP。本批代码门禁完成后再单独决定开发数据库、Jenkins 开发部署与真实 HTTP/1920×1080 人工验收。