feat(platform): I1 bootstrap, I2 M1 APIs, OpenAPI SSOT, and CI guards

Deliver dual Spring Boot services (platform API + webhook ingress), JWT
auth, Flyway with isolated history tables, customer/project/dictionary
endpoints, OpenAPI snapshot under contracts/, RUNBOOK, and CI that runs
on services/web/contracts paths plus enforcer + dependency tree ban on
craftlabs-auth-bitanswer.

Made-with: Cursor
This commit is contained in:
2026-04-06 21:04:56 +08:00
parent 76ff98db87
commit 3f577b34d5
57 changed files with 3170 additions and 0 deletions
+100
View File
@@ -0,0 +1,100 @@
<?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">
<modelVersion>4.0.0</modelVersion>
<groupId>cn.craftlabs.platform</groupId>
<artifactId>craftlabs-platform-services-parent</artifactId>
<version>0.1.0-SNAPSHOT</version>
<packaging>pom</packaging>
<name>CraftLabs platform services (I1 scaffold)</name>
<description>与 craftlabs-auth-* SDK 分构建线;各子模块单独产出可执行 Fat JAR(迭代 I1~I5 扩展)。</description>
<modules>
<module>license-webhook-ingress</module>
<module>delivery-platform-api</module>
</modules>
<properties>
<java.version>17</java.version>
<spring-boot.version>3.4.5</spring-boot.version>
<!-- 平台数据访问:PostgreSQL 15 + MyBatis-PlusSpring Boot 3 用 boot3-starter -->
<mybatis-plus.version>3.5.15</mybatis-plus.version>
</properties>
<!--
说明:选用 Spring Boot 3.4.x LTS 以保证多数环境可解析;
产品文档目标 4.0.* 可在父 POM 升级 spring-boot.version 并全量回归。
-->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>${spring-boot.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-spring-boot3-starter</artifactId>
<version>${mybatis-plus.version}</version>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>${spring-boot.version}</version>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.13.0</version>
<configuration>
<release>${java.version}</release>
</configuration>
</plugin>
<!-- 子模块显式引用后,在 validate 阶段禁止引入客户端 JNI SDK -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-enforcer-plugin</artifactId>
<version>3.5.0</version>
<executions>
<execution>
<id>ban-craftlabs-auth-bitanswer</id>
<goals>
<goal>enforce</goal>
</goals>
<phase>validate</phase>
<configuration>
<fail>true</fail>
<rules>
<bannedDependencies>
<searchTransitive>true</searchTransitive>
<excludes>
<exclude>cn.craftlabs:craftlabs-auth-bitanswer</exclude>
</excludes>
<message>平台服务禁止依赖 craftlabs-auth-bitanswerJNI 客户端 SDK)。</message>
</bannedDependencies>
</rules>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</pluginManagement>
</build>
</project>