Release/test 合并上生产 #2

Merged
admin merged 736 commits from release/test into main 2026-09-17 11:50:56 +08:00
3 changed files with 9 additions and 4 deletions
Showing only changes of commit d1de19dc82 - Show all commits
+3 -3
View File
@@ -55,10 +55,10 @@
| 平台仓库与仓储资源 | `modules/warehouses/`、`modules/warehouse-resources/` | `warehouse/` |
| 订单列表、详情与入库费用 | `modules/unified-orders/`、`modules/first-leg-orders/`;费用入口 `modules/unified-orders/components/InboundFeeDetailManager.vue`、`modules/unified-orders/api/inboundFeeDetails.ts` | `order/`、`firstleg/`;费用来源审核发布联查 `firstleg/AGENTS.md` |
| 入库、箱唛、手工/设备测量和计费工作流 | `modules/inbounds/pages/InboundOrdersView.vue`;测量接口与页面从 `modules/inbounds/measurement/` 进入;审核、称重和费用继续按 `modules/inbounds/` 相邻子域定位;计价主数据在 `modules/fba-pricing/`、`modules/dimension-config/`、`modules/fee-items/` | `firstleg/`、`order/`、`file/`、`integration-service/`;箱码生成、打印与测量绑定先读 `firstleg/AGENTS.md` |
| 财务账户、账单、收款与成本 | `modules/finance/` | `finance/`;费用来源与柜次成本快照联查 `firstleg/`,凭证联查 `file/` |
| 财务账户、费用来源、应收统计、对账单、收付款与成本 | `modules/finance/`;应收统计从 `pages/FinanceReceivableStatisticsView.vue`、`api/finance.ts` 进入 | `finance/`;应收统计只汇总指定生成月份的 CNY 正式应收结算单,导出使用 `FINANCE_RECEIVABLE_STATISTICS` 进入 File 下载中心;费用来源与柜次成本快照联查 `firstleg/`,凭证联查 `file/` |
| 货柜与智能排柜 | `modules/container-loading/` | `firstleg/loading/`、`firstleg/split/` |
| 预装详情、装柜清单与柜次费用 | `modules/loading-lists/pages/PreloadPlanDetailView.vue`、`modules/loading-lists/components/LoadingListDetailDrawer.vue`、`modules/loading-lists/components/ContainerFeesPanel.vue`、`modules/loading-lists/api/containerFees.ts` | `firstleg/loading/`、`firstleg` 柜次费用、`finance/` 成本分摊、`file/`、`warehouse/` |
| 海运订舱与船期 | `modules/ocean-bookings/`、`modules/port-schedules/` | `firstleg/oceanbooking/`、`firstleg/portschedule/`、`integration-service/`;订舱代理联查 `modules/suppliers/` 与 `warehouse/src/main/resources/openapi/supplier-v1.yaml`,服务端契约见 `firstleg/src/main/resources/openapi/ocean-bookings-v1.yaml` |
| 海运订舱与船期 | `modules/ocean-bookings/`、`modules/port-schedules/`;订舱状态、柜型需求和 API 分别从 `status.ts`、`containerRequirements.ts`、`api/platformOceanBookings.ts` 进入 | `firstleg/oceanbooking/`、`firstleg/portschedule/`、`integration-service/`;订舱仅有 `DRAFT`、`RELEASED`,草稿可编辑/删除,放舱后永久只读;创建和放舱只保存订舱聚合与柜型需求,不生成真实柜号或货柜分配。渠道来自起运仓当前 ACTIVE 价格版本;订舱代理联查 `modules/suppliers/` 与 `warehouse/src/main/resources/openapi/supplier-v1.yaml`,服务端契约见 `firstleg/src/main/resources/openapi/ocean-bookings-v1.yaml` |
| 拖车预约 | `modules/trucking/` | `firstleg/outbound/dispatch/`、`firstleg/`;承运商联查 `modules/suppliers/` 与 `warehouse/src/main/resources/openapi/supplier-v1.yaml`,服务端契约见 `firstleg/src/main/resources/openapi/truck-appointments-v1.yaml` |
| 报关协同 | `modules/customs/` | `firstleg/customs/`、`file/`;报关代理联查 `modules/suppliers/` 与 `warehouse/src/main/resources/openapi/supplier-v1.yaml`,服务端契约见 `firstleg/src/main/resources/openapi/customs-v1.yaml` |
| 国内出仓确认 | `modules/outbound-dispatch/` | `firstleg/outbound/dispatch/` |
@@ -92,7 +92,7 @@
- 删除、停用、改权限等高风险操作必须有明确确认、处理中、成功和失败反馈;失败时保留用户上下文,避免误以为已生效。
- 日志、提示和示例数据不得包含真实账号、令牌、客户隐私或生产数据。
- Admin 维护客户专属数据时,必须通过平台客户列表显式选择目标客户,不得从本地存储推断客户。平台仓库等公共主数据不要求先选择客户;切换客户时不得保留上一客户的编辑、详情或导入上下文。
- Finance 五个正式列表页(客户账户、客户应收应付、客户对账单、应收结算单、应付结算单)的客户筛选统一加载全部 `ACTIVE` 客户并使用可筛选下拉框;用户可见选项只显示客户名称 `tenantName`,以 `customerId` 作为接口筛选值。不得恢复自由输入客户关键词,也不得把客户编码、联系人或手机号拼入下拉标签。业务单号、费用项目等非客户关键词仍使用各自独立筛选字段。
- Finance 六个正式列表页(客户账户、客户应收应付、应收款统计表、客户对账单、应收结算单、应付结算单)的客户筛选统一加载全部 `ACTIVE` 客户并使用可筛选下拉框;用户可见选项只显示客户名称 `tenantName`,以 `customerId` 作为接口筛选值。不得恢复自由输入客户关键词,也不得把客户编码、联系人或手机号拼入下拉标签。应收款统计表必须按 `yyyy-MM` 统计月份查询,可按当前页打印,并通过 File 下载中心异步导出;业务单号、费用项目等非客户关键词仍使用各自独立筛选字段。
## UI 与交互
+4 -1
View File
@@ -103,6 +103,7 @@ describe('adminNavigation', () => {
expect(paths).toEqual(expect.arrayContaining([
'/finance/customer-accounts',
'/finance/customer-arap',
'/finance/receivable-statistics',
'/finance/customer-statements',
'/finance/settlement-receivables',
'/finance/settlement-payables',
@@ -116,10 +117,11 @@ describe('adminNavigation', () => {
expect(leaves.every((item) => Boolean(item.icon))).toBe(true)
})
it('shows the five formal finance pages with their real backend permissions', () => {
it('shows the five formal finance pages plus receivable statistics with real backend permissions', () => {
const filtered = filterAdminNavigation(adminNavigation, new Set([
'platform:finance:customer-account:list',
'platform:finance:customer-arap:list',
'platform:finance:receivable-statistics:list',
'platform:finance:customer-statement:list',
'platform:finance:settlement-ar:list',
'platform:finance:settlement-ap:list',
@@ -128,6 +130,7 @@ describe('adminNavigation', () => {
expect(getNavigationLeaves(filtered).map((item) => item.path).filter((path) => path.startsWith('/finance/'))).toEqual([
'/finance/customer-accounts',
'/finance/customer-arap',
'/finance/receivable-statistics',
'/finance/customer-statements',
'/finance/settlement-receivables',
'/finance/settlement-payables',
@@ -19,6 +19,8 @@ describe('finance presentation governance', () => {
it('uses prototype-defined standalone settlement details and modal partial payments', () => {
expect(financeRoutes).toContain("finance/settlement-receivables/:settlementId")
expect(financeRoutes).toContain("finance/settlement-payables/:settlementId")
expect(financeRoutes).toContain("finance/receivable-statistics")
expect(financeRoutes).toContain("platform:finance:receivable-statistics:list")
expect(financeRoutes).toContain('showPageHeading: false')
expect(settlement).toContain('class="settlement-detail-page surface-panel"')
expect(settlement).toContain('返回列表')