Files
ai-web-delivery-doc/diagrams/G02-领域概念关系.md
T
mdszxy 638d3541bf 建立可移交的 AI 软件交付规划文档仓库。
纳入截至 2026-10-13 会议回写后的产品基线与会议图源。
2026-10-13 22:27:58 +08:00

111 lines
4.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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)。