From 06c264db0ac6776ddd7f1bbef5c53e37947a6605 Mon Sep 17 00:00:00 2001 From: ouyangxq <775153912@qq.com> Date: Fri, 14 Aug 2026 13:03:09 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- AGENTS.md | 3 ++- .../firstleg/mapper/ContainerBookingMapper.java | 5 +++++ .../ContainerBookingMapperContractTest.java | 16 ++++++++++++++++ .../LoadingListQueryMapperContractTest.java | 2 ++ .../TruckAppointmentMapperContractTest.java | 2 +- .../firstleg/service/LoadingListServiceTest.java | 6 +++--- .../InternalCustomerExportContractTest.java | 5 +++-- 7 files changed, 32 insertions(+), 7 deletions(-) diff --git a/AGENTS.md b/AGENTS.md index 63a126216..39dcd403f 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -42,12 +42,13 @@ ## 契约、数据库与验证入口 - 跨服务修改先检查调用方 `client/`、被调用方 Controller/DTO、`src/main/resources/openapi/` 和双方契约测试;禁止共享领域 Entity。 +- 修改 Java 方法、构造器、Controller、Client、DTO 或 Mapper 参数签名时,先用 `rg` 定向查找符号及旧参数形态,并同步更新 `src/main/`、`src/test/`、Mock、Fixture、契约测试和脚本中的全部调用点。新增可选参数也必须补齐旧测试调用,不能因生产调用已更新就视为完成。 - 平台后台存在正式列表页时,`*:list` 同时授权列表、详情及只读辅助接口;`create`、`edit`、`delete`、`status`、`approve`、`review`、`export`、`upload`、`complete` 等操作保持独立。当前未上线,不兼容旧独立 `*:view`,Controller 不得使用 `hasAnyAuthority(list, view)`,OpenAPI 和角色初始化只保留 `*:list`。 - 供应商查询接口固定只使用 `platform:supplier:list`;IAM 中 `platform:supplier:list` 是正式菜单资源,`platform:supplier:view` 必须停用/移除,不得重新提升或兼容。 - 权限语义变更必须同步 Controller `@PreAuthorize`、OpenAPI、模块权限 SQL、IAM 菜单资源、统一增量脚本和契约测试。并行模块任务不得覆盖菜单与权限总控已写入共享 SQL 或权限契约的改动。 - 数据库只访问所属服务库。模块迁移位于 `/src/main/resources/db/`;测试/存量环境唯一部署入口是 `deploy/sql/头程数据库统一增量-MySQL8.sql`,说明见 `deploy/sql/README.md`,历史日期脚本仅追溯。 - 通用配置在 `config/nacos/{local,cn}/`;服务日志、上传文件、`target/`、`reports/` 不属于源码。 -- 全量验证:`mvn -DskipTests validate`、`mvn test`;单服务优先 `mvn -pl -am test`。不要在本地启动 Java/Nacos/数据库,除非用户明确要求。 +- Java 签名变更的最低编译门禁是 `mvn -pl -am test-compile`,它必须在部署前完成并覆盖测试源码;有行为变化时继续运行 `mvn -pl -am test`。`-DskipTests` 可跳过测试执行但仍须保留测试编译,`-Dmaven.test.skip=true` 会跳过测试编译,不得作为签名变更的交付验证。全量验证仍使用 `mvn -DskipTests validate`、`mvn test`;不要在本地启动 Java/Nacos/数据库,除非用户明确要求。 ## 全量 HTTP 验收脚本路由 diff --git a/firstleg/src/main/java/com/baiyue/firstleg/mapper/ContainerBookingMapper.java b/firstleg/src/main/java/com/baiyue/firstleg/mapper/ContainerBookingMapper.java index 37b000929..77c8874d6 100644 --- a/firstleg/src/main/java/com/baiyue/firstleg/mapper/ContainerBookingMapper.java +++ b/firstleg/src/main/java/com/baiyue/firstleg/mapper/ContainerBookingMapper.java @@ -25,6 +25,11 @@ public interface ContainerBookingMapper extends BaseMapper(List.of(), 1, 20, 0, 0)); service.confirmedPage(query); verify(repository).confirmedPage(org.mockito.ArgumentMatchers.argThat(value -> - "plan".equals(value.keyword()))); + "plan".equals(value.keyword()) && Long.valueOf(200L).equals(value.customerId()))); } @Test diff --git a/iam/src/test/java/com/baiyue/iam/controller/InternalCustomerExportContractTest.java b/iam/src/test/java/com/baiyue/iam/controller/InternalCustomerExportContractTest.java index ca0d0306c..ca4efc0c5 100644 --- a/iam/src/test/java/com/baiyue/iam/controller/InternalCustomerExportContractTest.java +++ b/iam/src/test/java/com/baiyue/iam/controller/InternalCustomerExportContractTest.java @@ -44,12 +44,13 @@ class InternalCustomerExportContractTest { @Test void exposesFinanceCustomerMasterDataOnlyWithInternalToken() { BizException denied = assertThrows(BizException.class, - () -> controller.financeCustomers(null, 1, 20, "Alice", "ACTIVE")); + () -> controller.financeCustomers(null, 1, 20, "Alice", "ACTIVE", null)); assertEquals(ResultCode.FORBIDDEN, denied.getResultCode()); when(service.pageFinanceCustomers(1, 20, "Alice", "ACTIVE", null)) .thenReturn(new com.baiyue.common.core.api.PageResult<>(List.of(), 1, 20, 0, 0)); - var response = controller.financeCustomers("test-internal-service-token-at-least-32-bytes", 1, 20, "Alice", "ACTIVE"); + var response = controller.financeCustomers("test-internal-service-token-at-least-32-bytes", 1, 20, + "Alice", "ACTIVE", null); assertEquals(ResultCode.SUCCESS.code(), response.code()); verify(service).pageFinanceCustomers(1, 20, "Alice", "ACTIVE", null); }