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
@@ -0,0 +1,32 @@
server:
port: 8081
spring:
application:
name: license-webhook-ingress
datasource:
url: ${SPRING_DATASOURCE_URL:jdbc:postgresql://localhost:5432/craftlabs_platform}
username: ${SPRING_DATASOURCE_USERNAME:craftlabs}
password: ${SPRING_DATASOURCE_PASSWORD:craftlabs}
driver-class-name: org.postgresql.Driver
flyway:
enabled: true
# 与 delivery-platform-api 的 flyway_platform_api 并存于同一 PostgreSQL 时互不覆盖迁移历史
table: flyway_webhook
codec:
max-in-memory-size: 512KB
mybatis-plus:
configuration:
map-underscore-to-camel-case: true
management:
endpoints:
web:
exposure:
include: health,info
# 开发可设环境变量 CRAFTLABS_WEBHOOK_EXPECTED_TOKEN;空则不做 token 校验(仅本地)
craftlabs:
webhook:
expected-token: ${CRAFTLABS_WEBHOOK_EXPECTED_TOKEN:}