下面全部使用 GitHub 绝对链接。从任何 Titanium 仓库进入,都可以直接跳转到目标服务。
共享组件、前端与工程仓库
| 类型 | 仓库 | 用途 |
|---|---|---|
| 运营管理前端 | titanium-admin-web |
Vue 3 管理工作台 |
| 共享基础库 | titanium-common |
多租户、通用响应、异常与基础能力 |
| 业务元数据 | titanium-metadata |
跨域枚举、值语义与元数据契约 |
| 依赖基线 | titanium-parent |
Maven BOM、插件与版本治理 |
| 构建规则 | titanium-build-tools |
架构和代码质量检查 |
| 系统测试 | titanium-test |
跨服务集成与端到端验收 |
Titanium 是保险核心业务平台,围绕保险产品从定义、投保、核保、签发、收费,到保全、理赔、再保和监管的完整生命周期建设。系统以限界上下文拆分业务能力,让每个服务拥有自己的领域模型、数据和发布节奏,并通过稳定 API 与领域事件协作。
- 全险种:支持车险、寿险、健康险、宠物险,以及投连险、万能险等账户型产品。
- 全生命周期:覆盖产品、销售、承保、收费、保全、理赔、投资、再保和监管链路。
- 多租户:请求、命令、事件、读模型和持久化数据均携带租户上下文。
- 可演进:服务内部坚持 DDD 分层,服务之间通过契约和事件解耦。
- 可审计:关键业务决定保存版本、输入摘要、业务证据与操作轨迹。
| 领域 | 技术 | 用途 |
|---|---|---|
| 语言与构建 | Java 21、Maven | Record、虚拟线程、统一依赖与构建生命周期 |
| 应用框架 | Spring Boot 4.0.1、Spring Cloud OpenFeign | Web 应用、依赖注入、服务间同步契约 |
| 领域与消息 | Axon Framework 4.10、Apache Kafka 4.0 | CQRS、领域事件、异步跨域协作 |
| 数据与缓存 | MySQL 8、Redis 7.2 | 事务数据、读模型、缓存与幂等辅助 |
| 数据迁移 | Liquibase 4.26 | 数据库结构版本化 |
| 工程效率 | Lombok、MapStruct | 构造注入、日志、跨层对象映射 |
| 交付运行 | Docker、Docker Compose | 本地依赖、集成环境和容器化运行 |
各服务按自身边界选择依赖;例如后台 CRUD 服务不强制使用 Axon,纯共享组件也不会引入 Web 运行时。
flowchart TB
WEB[Web<br/>REST / Validation] --> APP[Application<br/>Use Case Orchestration]
API[API<br/>Feign Contract / DTO] --> APP
APP --> DOMAIN[Domain<br/>Aggregate / Value Object / Event]
APP --> PORT[Domain Port]
INFRA[Infrastructure Adapter] -. implements .-> PORT
INFRA --> DB[(MySQL / Redis)]
INFRA --> MQ[(Kafka / External Service)]
EVENT[Domain Event] --> QUERY[Query Projection]
QUERY --> READ[(Read Model)]
- Web 只处理协议、鉴权、校验和响应;Application 只编排用例。
- 业务不变量进入聚合根或纯领域服务,Domain 不依赖 Spring 基础设施。
- 远程调用和消息发送由 Domain 定义 Port,Infrastructure 提供 Adapter。
- 写侧发布事实,Query 维护读模型;跨域不共享数据库表和内部实体。
flowchart LR
Customer -->|CustomerCreated| Policy
Product -->|ProductPublished| Policy
Policy -->|ProposalSubmitted| Underwriting
Underwriting -->|DecisionMade| Policy
Policy -->|PolicyUnderwritten| Billing
Billing -->|BillGenerated| Payment
Payment -->|PaymentSucceeded| Policy
Policy -->|PolicyActivated| Maintenance
Policy -->|ClaimRequested| Claim
Claim -->|CompensationApproved| Payment
Policy --> Reinsurance
Claim --> Regulatory
- 聚合只能在所属服务内修改;其他服务通过 API 查询或以命令/事件发起协作。
- 事件描述已经发生的业务事实,必须带有
tenantId、业务标识和必要快照,避免消费者反查写库。 - 同步调用用于必须即时获得的判定;跨生命周期状态推进优先使用事件并保证幂等。
titanium-metadata只承载稳定的跨域语义;服务专属枚举和值对象留在本域。- 仓储和远程 Port 由 Domain 定义,Adapter 位于 Infrastructure;Domain Service 不依赖任何 Port。
保单域:作为保险合同核心,管理投保、承保、签发、生效、失效和终止等全生命周期。
| 属性 | 内容 |
|---|---|
| 限界上下文 | 保单域(核心域) |
| 核心模型 | Proposal、Insurance、Policy |
| 主要上游 | Customer、Product、Clause、Underwriting |
| 主要下游 | Billing、Payment、Maintenance、Claim |
| 默认地址 | http://localhost:8080 |
| GitHub | titanium |
| 本服务负责 | 本服务不负责 |
|---|---|
| 投保资料和合同快照 承保、签发及生效状态机 保单版本和批单引用 合同参与人、保障和期限事实 |
产品定义与定价 客户主数据 核保决策过程 收付款执行 |
- 投保资料和合同快照
- 承保、签发及生效状态机
- 保单版本和批单引用
- 合同参与人、保障和期限事实
以下截图来自 Titanium 管理后台,仅展示保单域对应的业务页面。截图包含可核验的示例数据,并按页面上下排列,GitHub 页面可直接加载。
保单查询 · 投保人、产品、保费及保单状态
保单详情 · 合同参与人、保障责任及版本信息
flowchart LR
UP[Customer、Product、Clause、Underwriting] -->|API / Event| CURRENT[保单域]
CURRENT -->|API / Event| DOWN[Billing、Payment、Maintenance、Claim]
跨域调用必须透传 X-Tenant-Id;命令、事件和持久化模型必须保留 tenantId。服务间只依赖 api 契约或公开事件,不依赖对方的 Domain、Infrastructure 或数据库。
| 模块 | 职责 |
|---|---|
titanium-policy-common |
通用层:模块内枚举、异常和常量 |
titanium-policy-api |
API 层:服务间契约、Feign 接口和 DTO |
titanium-policy-domain |
领域层:聚合、值对象、领域事件及 Port |
titanium-policy-application |
应用层:用例编排、命令与查询协调 |
titanium-policy-infrastructure |
基础设施层:Repository、远程 Adapter、消息与持久化 |
titanium-policy-query |
查询层:CQRS 读模型与查询处理器 |
titanium-policy-web |
Web 层:REST 入口、请求校验和响应装配 |
titanium-policy-bootstrap |
启动层:Spring Boot 入口、配置和 Liquibase |
- JDK 21
- Maven 3.9+
- MySQL 8.0+
- Redis 7.2+、Kafka 4.0(按本服务配置启用)
git clone https://github.com/chisss/titanium.git
cd titanium
mvn clean verifymvn -pl titanium-policy-bootstrap -am spring-boot:run默认访问地址为 http://localhost:8080。数据库、Redis、Kafka、下游服务地址及环境变量以 titanium-policy-bootstrap/src/main/resources/application.yml 为准。
- 面向前端的接口放在
web,服务间接口和 DTO 放在api。 - Controller 使用
@Validated与 JSR-303;Application 采用构造器注入。 - 跨层转换使用 MapStruct,不直接暴露持久化对象。
- 日志使用 SLF4J 占位符,不记录身份证件、Token 等敏感数据。
- 新增业务行为时优先补充聚合测试;跨域流程补充集成或契约测试。

