diff --git a/suite-developer/knowledge/data-execution-model.md b/suite-developer/knowledge/data-execution-model.md new file mode 100644 index 0000000..5224dfc --- /dev/null +++ b/suite-developer/knowledge/data-execution-model.md @@ -0,0 +1,65 @@ +# 数据执行模型 + +> **核心原则:数据永不离开本地。** +> gis-actions 运行在用户自己的机器上。所有数据处理都在用户本地完成,文件不上传到云端。 + +--- + +## 执行架构 + +``` +用户本地机器 +┌─────────────────────────────────────────────────────┐ +│ │ +│ gis-actions(本地执行器) │ +│ ┌─────────────────────────────────────────┐ │ +│ │ │ │ +│ │ docker run --rm gis-base + 套件脚本 │ │ +│ │ ┌────────────────────────────────┐ │ │ +│ │ │ /data/input.shp(只读挂载) │ │ │ +│ │ │ /tmp/output/(写入挂载) │ │ │ +│ │ │ /tmp/scripts/(脚本包,只读) │ │ │ +│ │ └────────────────────────────────┘ │ │ +│ └─────────────────────────────────────────┘ │ +│ │ +│ 用户数据文件(原始) → ??不动 → 结果文件 │ +│ /home/user/data.shp /tmp/output/ │ +│ ↓ │ +│ 拿走使用 │ +└─────────────────────────────────────────────────────┘ + + ↑ 只拉脚本包,不拉数据 + │ + suites.mercator.cn(套件市场) +``` + +## 什么被上传,什么不 + +| 类别 | 是否上传 | 说明 | +|------|---------|------| +| 用户数据文件(SHP/GeoJSON/TIFF...) | ❌ **不上传** | 始终在用户本地 | +| 执行结果 | ❌ **不上传** | 留在用户的输出目录 | +| 套件脚本包 | ✅ 下载到本地 | 从市场拉取执行脚本 | +| 基础镜像 | ✅ 拉取一次 | gis-base 镜像缓存在本地 Docker | +| 任务参数(文件路径、数值) | ✅ 上传 | 仅元数据,不是文件内容 | + +## 为什么这样设计 + +- **数据安全**:敏感 GIS 数据不离开组织网络 +- **合规**:涉密、保密数据无需担心云端存储合规问题 +- **性能**:大数据集(GB 级影像/点云)不通过网络传输 +- **知识产权**:套件脚本包用完即销毁,用户拿到的是结果不是源码 + +## 对终端用户的影响 + +- **需要安装 Docker**(一次性) +- **需要安装 gis-actions**(一次性) +- **需要能访问 `suites.mercator.cn` 和 `registry.mercator.cn`**(网络条件) +- **提供本地文件路径**,不是上传文件 + +## 对套件开发者的影响 + +- **脚本通过参数接收文件路径**,不是文件内容 +- **本地测试路径 ≠ 用户路径**,脚本要用参数化路径而非硬编码 +- **输出必须写入 `output_path`**,由 gis-actions 决定输出目录位置 +- **不要假设文件系统结构**,用户文件和容器文件系统是隔离的