新增 29 个模块级 AGENTS.md,补齐入口表指向,使 33 个业务模块均可从入口直达页面与接口。 - 每个模块指引统一为:路径基准 / 页面与入口表 / 关键边界 / 验证入口 - 入口表 35 行改为指向 modules 下的 AGENTS.md,补齐费用项目、审计日志、尺寸配置、装柜照片等缺失词条 - 详细索引最长行从 1315 字符压缩到 699 字符,规则正文移入新增的“货柜工作台规则”小节 - 仅索引文档,未改动业务代码
4.6 KiB
4.6 KiB
Admin 货柜模块指引
路径基准与读取顺序
- 本文件适用于
src/modules/container-loading/,代码路径相对本目录;应用公共规则见../../../AGENTS.md,页面/接口细则见../../../docs/business-index.md。 - 先按下表定位页面,再沿
routes.ts、页面 import 与api/追踪;接口、状态、金额或权限变化时再读详细索引命中行。 - 后端只查直接消费方:
firstleg/(loading/、customs/container/、terminaldrayage/、oceanbooking/)、lastleg-service/(柜级到仓与尾程)、file/、print/。纯页面与文案不读后端。
页面与入口
| 目标 | 页面/路由 | API 与后端 |
|---|---|---|
| 国内装柜列表、模拟柜、订舱关联 | pages/ContainersView.vue、pages/DomesticContainersView.vue;container-loading/domestic |
api/platformContainerLoading.ts;components/ContainerSimulationCreate.vue、components/OceanBookingLinkDialog.vue;firstleg/loading/ |
| 送柜报关详情、装柜清单页签、报关、出仓 | pages/DomesticContainerDetailView.vue、共享 pages/ContainerDetailView.vue;container-loading/domestic/:containerId |
components/ContainerOverviewPanel.vue、components/ContainerCustomsPanel.vue;api/platformContainerCustoms.ts;firstleg/customs/container/、file/ |
| 智能装柜工作台、柜次容量与分配 | pages/SmartLoadingWorkbenchView.vue;container-loading/domestic/:containerId/smart-loading |
api/platformContainerLoading.ts;../unified-orders/workflows/components/SmartLoadingWorkbench.vue;firstleg/service/SmartLoadingService.java |
| 全局智能装柜弹框、入仓码候选与箱数 | pages/GlobalSmartLoadingView.vue(内嵌,无独立路由)、components/SmartLoadingDialog.vue、components/SmartLoadingCandidateInbounds.vue |
smartLoadingChannelGroups.ts、smartLoadingItems.ts、smartLoadingPlanGroups.ts;后端 /inbound-candidates、/containers、/inbound-assignments |
| 海外清关提柜工作台、船节点、清关与 DO/PU | pages/OverseasContainersView.vue;container-loading/overseas |
api/platformContainerLoading.ts;firstleg/ 船节点与 customs/;components/ContainerOverviewPanel.vue |
| 目的港码头拖车、车队与还空 | pages/OverseasContainerDetailView.vue(薄包装)、共享 pages/ContainerDetailView.vue(实际内容);container-loading/overseas/:containerId |
api/terminalDrayages.ts 由共享详情调用;firstleg/terminaldrayage/(TerminalDrayageService.java、DirectDeliveryService.java) |
| 整柜预计/实际到仓 | 列表与详情“到仓”列 | api/containerArrivalTimes.ts;lastleg-service/ 柜级订单 |
| 装柜照片与证据的展示/读取(上传在 PDA 与 Firstleg) | components/ContainerOverviewPanel.vue |
证据读取走 file/;生产与上传见 firstleg/loading/service/CabinetLoadingEvidenceService.java 与国内 PDA |
| 海外柜费用 | components/ContainerLastLegFeesPanel.vue |
api/overseasContainerFees.ts;finance/、firstleg/ 费用来源 |
pages/ContainerWorkbenchView.vue 是工作台外壳,按权限在“国内装柜”“清关提柜”间切换;pages/ContainersView.vue 与 ContainerDetailView.vue 为共享实现,改两份前先确认是否同源。
关键边界
- 列表范围由服务端
scope=ACTIVE/HISTORY分页,写资格只取服务端allowedActions;不用浏览器筛选、本地推导或柜内明细数量代替。 - 创建柜次时自动生成唯一预装计划;订舱关联允许真实集装箱号为空,但确认预装和创建 PDA 任务前必须补齐,历史上已建缺号任务可在预装详情首次补录。
- 还空截止、超时天数只展示服务端按权威卸柜完成时间加 72 小时计算的结果,前端不重算、不用拖车状态当阻断门禁。
- 国内“送柜报关”只消费
/containers/domestic,海外“清关提柜”只消费/containers/overseas;两端统一用containerBookingId,禁止混用两套列表接口。 - 智能装柜候选状态只作筛选展示,按钮资格以服务端
canAssign为准;计划箱数只消费totalPackageCount/remainingPackageCount,不从候选页或本地规格重算。 - 前端不计算托数、不逐票建计划、不预占托盘;柜级转换必须原样回传服务端
snapshotVersion/snapshotHash,冲突后重新预览。
验证
- 定向:
pnpm test src/modules/container-loading/<目标测试>;API 或类型变化同时运行pnpm typecheck。 - 本文件或索引变更后,从后端根运行
./scripts/agents-index-contract.ps1;离线检查不代替真实 HTTP 与人工截图验收。