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,36 @@
server:
port: 8080
spring:
application:
name: delivery-platform-api
# 架构约定:生产/联调使用 PostgreSQL 15;本地可 docker compose 见 services/docker-compose.yml
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
# 与同库共存的 license-webhook-ingress 默认 flyway_schema_history 隔离
table: flyway_platform_api
mybatis-plus:
configuration:
map-underscore-to-camel-case: true
management:
endpoints:
web:
exposure:
include: health,info
# JWT:生产必须通过环境变量覆盖(至少 32 字符)
platform:
jwt:
secret: ${PLATFORM_JWT_SECRET:dev-only-unsafe-change-in-production-32chars!!}
expiry-seconds: ${PLATFORM_JWT_EXPIRY_SECONDS:43200}
springdoc:
swagger-ui:
path: /swagger-ui.html