阅读时间:1 分钟
0 字
项目结构
仓库采用 Monorepo。顶层目录表示不同交付物和所有权;只有 apps/ 与 services/ 下的应用或服务是部署候选,packages/ 是共享代码,contracts/ 是机器可读契约。
text
ontology-platform/
├── apps/
│ ├── ontology-console/ # React + shadcn/ui 管理端(待开发)
│ └── ontology-docs/ # VitePress 文档站(已运行)
├── services/
│ ├── ontology-api/ # REST / OpenAPI 入口
│ ├── ontology-registry/ # 模型草稿、校验和版本发布
│ ├── ontology-runtime/ # 语义查询与跨源读取
│ ├── ontology-integration/ # 连接器、CDC、ETL 和虚拟化
│ ├── ontology-actions/ # 规则、审批、回写和补偿
│ ├── ontology-policy/ # RBAC、ABAC、ReBAC 决策
│ ├── ontology-mcp/ # MCP 与 Tool Registry
│ ├── ontology-control-plane/ # 租户、订阅、配额和计费
│ └── ontology-lineage/ # 血缘、证据和执行事件
├── packages/
│ ├── ontology-core/ # 公共元模型类型与不变量
│ ├── ontology-connector-spi/ # 连接器接口和能力声明
│ ├── ontology-connectors/ # JDBC、HTTP、CDC 适配器
│ ├── ontology-event-model/ # 从事件契约生成的类型
│ ├── ontology-auth-context/ # 租户、主体和委托上下文
│ ├── ontology-evidence-model/ # 证据引用和血缘事件类型
│ └── ontology-observability/ # 追踪、指标和日志适配
├── contracts/
│ ├── openapi/ # REST API 定义
│ ├── events/ # 领域与执行事件
│ ├── schemas/ # 元模型和交换 Schema
│ └── mcp/ # MCP 工具输入输出 Schema
├── infra/
│ ├── local/ # 本地依赖环境
│ ├── deploy/ # 部署清单
│ ├── migrations/ # 迁移组织入口
│ └── observability/ # 采集、面板和告警
├── tests/
│ ├── contract/ # 契约兼容性
│ ├── integration/ # 服务与依赖集成
│ ├── e2e/ # 读取、回写和证据闭环
│ └── fixtures/ # 模拟数据源和数据
├── docs/ # 对外文档唯一正文
└── .agents/ # 项目内 Codex 工作流程为什么共享包不与 Console 同级
apps/ontology-console/ 是可构建和部署的前端应用;packages/ontology-connector-spi/ 是后端服务编译时依赖,不独立运行。它们位于不同顶层目录,目的是区分部署单元与共享库,而不是表示重要性差异。
服务内部结构
Java 服务采用一致结构:应用入口、领域、用例、端口和基础设施适配器分层。具体包名在实现前通过 ADR 固化,避免空目录先绑定错误设计。
text
services/ontology-runtime/
├── pom.xml
└── src/
├── main/
│ ├── java/.../
│ │ ├── application/ # 用例与编排
│ │ ├── domain/ # 领域模型与规则
│ │ ├── ports/ # 入站与出站接口
│ │ └── adapters/ # HTTP、数据库、消息和连接器适配
│ └── resources/
└── test/java/.../依赖规则
- 服务不能直接依赖另一个服务的实现或数据库。
packages/只放稳定的跨服务类型和接口,不承载共享业务状态。- 对外和跨服务类型从
contracts/生成,生成物不得手工修改。 - 迁移脚本由数据所有者服务维护,
infra/migrations/只负责部署顺序和入口。 docs/解释行为和架构;实现 README 说明如何构建和维护对应代码。