# G02 领域概念关系 2026-10-13 · 业务基线 0.15 · 图集版本 0.18。概念图不等于数据库 ER 图或部署架构。投影用 SVG 尚未按本次文字重绘。 **项目代表业务目标。应用指功能,例如邮箱应用。初级版本不选择组件。域名是需要购买的资源。** ![领域概念关系](G02-领域概念关系.svg) ```mermaid flowchart TB account["客户账户"] grouping["项目组:可选、单层 一个项目最多属于一个组"] project["项目:一个业务目标 稳定 ID;不依赖人工编号"] app["应用:一项功能 例如邮箱应用"] preset["应用预设 初级版本不让客户改选组件"] component["运行组件:Web / API / worker 初级按预设固定;高级版本以后再选"] resource["数据库、持久化存储等资源 明确归属与使用引用"] service["域名资源 需要购买,不包含在应用里"] account -->|"拥有多个"| project project -->|"可归入一个组;不产生互通授权"| grouping project -->|"包含"| app preset -->|"实例化并约束配置"| app app -->|"由组件运行"| component component -->|"显式引用,可共享"| resource project -->|"购买"| service ``` 主图中的关系有五个边界: - 应用指功能。邮箱应用是一种应用,不再把仅邮箱理解成零应用。初级版本不提供组件选择,Web、API、worker 按预设固定带上。高级版本以后用界面选择这个项目要不要组件。 - 域名是需要购买的资源,不包含在应用里。 - 同集群、同环境的同项目 APP 默认使用同一个 namespace;namespace 不等于数据库,也不自动授予共享权限。项目可有零到多个数据库。 - 数据库、卷、供应商实例和购买项是不同对象。数据库共享需明确引用和权限;PVC 直接引用受 namespace 约束,外部数据库用连接授权。仓库、项目、数据库与 namespace 不要求同名。 - 项目组只是客户整理工具,与后台用于定价的“价格客户组”不同。跨项目 API 协作需另外授权。 - 零引用资源进入待释放处理:移除最后一个引用时提示用户,释放前复核引用和任务;恢复引用应取消释放。三天延迟只是候选参数。独立服务不随 APP 删除自动取消。 ## 工单、发布与购买项 ![工单与购买项](G02-工单与购买项.svg) ```mermaid flowchart TB scope["项目:工单的业务范围"] workOrder["工单属于一个项目 可修改该项目多个 APP"] version["项目发布组合 关联涉及 APP 的代码、产物、配置版本"] software["APP:完整软件实例"] runtime["运行组件与配置档位"] resources["明确归属的数据库 / 存储 可被多个组件显式引用"] items["购买项:独立计费对象 组件资源分别计费;共享资源只计一份"] scope --> workOrder --> version version -->|"记录版本"| software software -->|"由组件运行"| runtime runtime -->|"显式引用"| resources runtime -->|"配置费用"| items resources -->|"对应购买项"| items ``` 发布组合表达一组实际版本,不要求多个仓库拥有同一个提交号;业务范围、技术组件和购买项不应合并成一个对象。 ## 三个具体例子 ![项目组成例子](G02-项目组成例子.svg) ```mermaid flowchart TB subgraph financial["例 1:金融官网"] financeApp["金融官网 APP"] financeWeb["Web 与后台组件"] financeDb["必需:数据库"] financePvc["必需:PVC 文件存储"] financeApp --> financeWeb financeWeb --> financeDb financeWeb --> financePvc end subgraph collecting["例 2:Web 与采集"] collectApp["一个 APP 也可同时包含"] collectWeb["Web 组件"] collectWorker["worker 组件"] sharedDb["同一数据库:显式授权共用"] collectApp --> collectWeb collectApp --> collectWorker collectWeb --> sharedDb collectWorker --> sharedDb end subgraph cooperation["例 3:跨项目 API"] review["项目 A:评价网 独立 APP 和数据库"] content["项目 B:内容中心 独立 APP 和数据库"] content -->|"通过 API 提供数据"| review end financial ~~~ collecting ~~~ cooperation ``` worker 是否单独成为 APP,取决于它是否是独立软件实例,不能仅因它需要独立 Deployment 就按一个 APP 处理。纯前端应用可以不需要数据库/PVC,必需资源由具体应用预设决定。 平台自有新闻 API 是平台部署的公共应用,客户购买 API 使用权益;不为每个客户复制整套公共应用。外部 RDS、云存储及公共 API 接入的供应商和实施版本仍待讨论。 依据:[03 领域模型](../03-系统架构与领域模型.md)、[05 费用组成](../05-商业模式与成本指标.md)。[返回图集](README.md)。