chore(ai): remove empty contract server module

This commit is contained in:
lili 2026-06-19 04:30:01 -07:00
parent 134d7646c3
commit bb59f98c16
5 changed files with 15 additions and 34 deletions

View File

@ -22,7 +22,7 @@
**market 写路径整改(2026-06-14,ultracode)**:member 暴露写端口 `MuseAccountRecordProjectionApi` + DTO(member-server 实现读写自有 DAL、tenantId 由实现侧从上下文注入防伪造、事务沿用调用方),market 5 类改消费端口、移除 member.dal 依赖 → `KNOWN_VIOLATION_EXEMPTIONS` 清空、BC 门全绿。**附带修复**:round-2 重构 `ContentKnowledgeWorkOwnerFacade` 时遗留的旧测试 `KnowledgeWorkOwnerFacadeTest`(仍断言旧 WorkMapper 行为)已删除,其装配守卫/兜底两用例并入 `ContentKnowledgeWorkOwnerFacadeTest`(5/0F)——此为 round-2 一处假绿(当时构建在平台时区用例处中止、未真正跑到 knowledge),现已补正。
**后续基建 TODO**:openapi-diff 远端 CI 首跑验证(🔧 检测逻辑+循环聚合已本地实证 2026-06-17:oasdiff v1.19.1 对 7 域真实契约 5/5 拦真破坏/放行安全演化,镜像钉版本+复现脚本已落地;2026-06-19 已把 workflow 从 `muse-cloud/.github/workflows/` 移到仓库根 `.github/workflows/`,修正自建 Gitea Actions 只扫描根 workflow 的接线问题;**仅余远端真实 PR 首跑确认**:`pull_request` paths 触发、`base.sha` worktree、docker 镜像拉取、Gitea Actions 是否已启。**`mvn -B package`[CI 确切命令]已本地实证全绿(2026-06-17,全 reactor 单测 + 打包步骤),接线后即应绿**——属远端基建首跑,留人类)。✅ 已完成项:`dev-baseline` 收敛进 rules(2026-06-19:新增 `engineering-conventions` + `security-and-reliability`,旧 `docs/dev-baseline/**` 降级历史归档并由 `AgentsInfraIntegrityTest` 索引门兜底)、`completed=测试证据`兜底(2026-06-19:coverage JSON 增 `testFiles`;生成器 `--check` + `P1rApiCoverageReportTest` 校验 completed 必须引用真实 `src/test/java` 证据文件且不得引用 coverage/gate 自身)、跨域 `.application` 边界门(2026-06-17:BcBoundaryArchTest 0 违例 + 反向证 238 例非空转)、market-server→member-server pom 坐标收口(2026-06-17:market-server 收窄至 member-api + tenant starter 直接声明)、ai/平台预存红测试整改(2026-06-15~17:三项全清)。
**后续基建 TODO**:openapi-diff 远端 CI 首跑验证(🔧 检测逻辑+循环聚合已本地实证 2026-06-17:oasdiff v1.19.1 对 7 域真实契约 5/5 拦真破坏/放行安全演化,镜像钉版本+复现脚本已落地;2026-06-19 已把 workflow 从 `muse-cloud/.github/workflows/` 移到仓库根 `.github/workflows/`,修正自建 Gitea Actions 只扫描根 workflow 的接线问题;**仅余远端真实 PR 首跑确认**:`pull_request` paths 触发、`base.sha` worktree、docker 镜像拉取、Gitea Actions 是否已启。**`mvn -B package`[CI 确切命令]已本地实证全绿(2026-06-17,全 reactor 单测 + 打包步骤),接线后即应绿**——属远端基建首跑,留人类)。✅ 已完成项:`muse-module-ai-contract-server` 空壳孤儿清理(2026-06-19:从 AI reactor 移除、删除唯一 pom、`P1rAiRouteOwnershipTest` 加回潮门禁)、`dev-baseline` 收敛进 rules(2026-06-19:新增 `engineering-conventions` + `security-and-reliability`,旧 `docs/dev-baseline/**` 降级历史归档并由 `AgentsInfraIntegrityTest` 索引门兜底)、`completed=测试证据`兜底(2026-06-19:coverage JSON 增 `testFiles`;生成器 `--check` + `P1rApiCoverageReportTest` 校验 completed 必须引用真实 `src/test/java` 证据文件且不得引用 coverage/gate 自身)、跨域 `.application` 边界门(2026-06-17:BcBoundaryArchTest 0 违例 + 反向证 238 例非空转)、market-server→member-server pom 坐标收口(2026-06-17:market-server 收窄至 member-api + tenant starter 直接声明)、ai/平台预存红测试整改(2026-06-15~17:三项全清)。
**🎯 全 reactor `mvn test` 史上首次全绿(2026-06-17)**:本特性分支 30+ commit 从未 push、maven.yml 只在 push/PR-to-main 触发故 **CI 从未在本分支真跑过**,积累若干潜伏红。以 `mvn -pl muse-server -am test -fae` 全 reactor 排查,逐模块解锁(上游失败 fail-fast 会 SKIP 下游),共清 **6 处**:① market `AppMuseMarketPublishControllerTest` 9 参 `PublishRecordItem` 构造(record 自 a00c758 加 marketAssetId/appealStatus 变 10 参)② coverage 台账 33 op serviceFiles 陈旧引用(本会话 facade 移 member-api 所致)③④ knowledge/ai 的 `Content*WorkOwnerFacadeTest` 仍断言 `@ConditionalOnBean`(2026-06-14 单体修复已去除、改 @Primary)⑤ ai `MuseAiEventPublishOutboxMapperTest` 真 PG 用例无 PG 时硬 fail→改 `assumeTrue` skip(与 P1r external-acceptance env 缺失即 skip 约定一致、honest 非假绿)⑥ muse-server `P1rKnowledgeMigrationSqlTest` 元测试钉死 `TARGET_VERSION="14"`(IT 已按 4d46d7a 动态自适应)→版本无关化。**全 reactor BUILD SUCCESS、0 失败**(真 PG 类无 PG 时 skip)。教训:跨模块重构后须跑 `-fae` 全量,勿只跑改动模块。**前端 muse-studio 同步复验绿(2026-06-17:`tsc -b` 0 错误 + `vitest run` 12 文件/47 用例全过;本分支前端改动 35 文件全在 studio、admin 未动)**——故**整分支(后端 `mvn -B package` + 前端 `tsc`/`vitest`)deterministic CI 检查全绿,均本会话实证**(e2e/playwright 需活体后端+浏览器,未在本轮跑;真 PG IT 多数 2026-06-17 已人工批准且本会话变更为 import-only+单测已覆盖,未重跑)。

View File

@ -6,4 +6,4 @@
- **边界(不可违反)**:**只产 Shadow,绝不直写 Canonical**;只消费服务端签发的 Runtime Permission Envelope,不能自授权;grant 与 runtime **包级隔离**;守 BC 边界不碰他域 `.dal`([bc-boundaries](../../.agents/rules/bc-boundaries.md);历史违例 `ContentMuseWorkOwnerFacade` **已整改消除**——改消费 content `MuseContentWorkOwnerApi`,门禁已收紧、无豁免)。
- **out-of-scope**:Accept Suggestion(归 content BC)、正文写入。
- **现状**:只读评估 72%;后端真实较高质量(无 stub),`RealNewApiMuseAiRuntimeClient` 真打 New-API,SSE 已脱占位。
- **关键风险 / TODO**:前端全 MSW;SSE 疑漂移;真实 New-API 未端到端验收;`muse-module-ai-contract-server` 空壳孤儿 submodule(待清理/合并)。
- **关键风险 / TODO**:前端全 MSW;SSE 疑漂移;真实 New-API 未端到端验收。`muse-module-ai-contract-server` 空壳孤儿 submodule 已清理(2026-06-19:从 AI reactor 移除并删除唯一 pom,`P1rAiRouteOwnershipTest` 加回潮门禁)。

View File

@ -1,31 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<groupId>cn.iocoder.cloud</groupId>
<artifactId>muse-module-ai</artifactId>
<version>${revision}</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>muse-module-ai-contract-server</artifactId>
<packaging>jar</packaging>
<name>${project.artifactId}</name>
<description>AI 模块 P1 Muse API 合同入口,避免聚合服务强依赖完整 AI Runtime。</description>
<dependencies>
<dependency>
<groupId>cn.iocoder.cloud</groupId>
<artifactId>muse-module-ai-api</artifactId>
<version>${revision}</version>
</dependency>
<dependency>
<groupId>cn.iocoder.cloud</groupId>
<artifactId>muse-spring-boot-starter-security</artifactId>
</dependency>
<dependency>
<groupId>cn.iocoder.cloud</groupId>
<artifactId>muse-spring-boot-starter-mybatis</artifactId>
</dependency>
</dependencies>
</project>

View File

@ -10,7 +10,6 @@
<modelVersion>4.0.0</modelVersion>
<modules>
<module>muse-module-ai-api</module>
<module>muse-module-ai-contract-server</module>
<module>muse-module-ai-server</module>
</modules>
<packaging>pom</packaging>

View File

@ -66,6 +66,8 @@ class P1rAiRouteOwnershipTest {
private static final String MUSE_SERVER_POM = "muse-cloud/muse-server/pom.xml";
private static final String AI_MODULE_POM = "muse-cloud/muse-module-ai/pom.xml";
private static final Map<String, String> AI_ROUTES = Map.ofEntries(
entry("GET /admin-api/muse/ai/prompts", "adminListPrompts"),
entry("POST /admin-api/muse/ai/prompts/{promptKey}/versions", "adminCreatePromptVersion"),
@ -195,6 +197,17 @@ class P1rAiRouteOwnershipTest {
"P1R-4 Task 10 后 muse-server 不能继续装配 AI 合同兜底模块");
}
@Test
void should_retire_ai_contract_server_from_ai_reactor() throws IOException {
Path repositoryRoot = findRepositoryRoot();
String aiModulePom = Files.readString(repositoryRoot.resolve(AI_MODULE_POM));
assertFalse(aiModulePom.contains("<module>muse-module-ai-contract-server</module>"),
"AI 聚合模块不得继续声明空壳合同兜底子模块");
assertFalse(Files.exists(repositoryRoot.resolve("muse-cloud/muse-module-ai/muse-module-ai-contract-server/pom.xml")),
"muse-module-ai-contract-server 只剩空壳 pom 时必须彻底删除,避免 reactor 继续构建无用 jar");
}
@Test
void should_remove_task7_stream_placeholder_from_contract_server() throws IOException {
Path appContractController = findRepositoryRoot().resolve(APP_CONTRACT_CONTROLLER);