Files
slide/decks/gen2D/pages/harness.md
T

71 lines
2.1 KiB
Markdown
Raw Normal View History

# 一致性保障 — 风格与管线
多层一致性确保输出可控
<div class="grid grid-cols-2 gap-4 mt-2">
<div>
```go
func mergeStyle(projectStyle, taskStyle map[string]string) map[string]string {
result := make(map[string]string)
for k, v := range projectStyle { result[k] = v }
for k, v := range taskStyle { result[k] = v } // 覆盖
return result
}
```
</div>
<div class="flex flex-col justify-center">
<v-clicks>
<Item title="风格一致性 — 合并策略">
Project Style(基底)+ Task Override(覆盖)→ `mergeStyle()` 逐键合并。工程风格定义全局基调,任务风格按需微调,互不干扰。
</Item>
<Item title="管线一致性 — Eino Graph 保证">
Graph 强制拓扑顺序执行,State 每次调用独立生成。节点无状态,数据经 State 中转,避免并发污染。
</Item>
<Item title="质量一致性 — 质检 + 重试 + 降级">
QualitySupervisor 自动质检,不合格重试(最多 3 次),超限降级输出。确保最终产物始终可用。
</Item>
</v-clicks>
</div>
</div>
---
# 一致性保障 — 数据与部署
从存储到部署的全链路一致性
<v-clicks>
<Item title="数据一致性 — ACID 事务">
SQLite 单文件 ACID + GORM 事务包裹关键操作。CASCADE 删除保证级联清理,外键约束维护引用完整性。
</Item>
<Item title="ID 一致性 — 前缀 + 随机">
格式:`prefix_base62`(如 `task_9bN4vR`)。`crypto/rand` 生成 base62 编码,全局唯一且可读。前缀标识实体类型,便于调试。
</Item>
<Item title="部署一致性 — 容器化 + 确定性构建">
Docker Compose 双容器(nginx + app),确定性构建保证环境一致。CI/CD 推送 master 自动触发部署。
</Item>
<Item title="配置一致性 — Viper 多层覆盖">
配置优先级:配置文件 → 环境变量 → 默认值。`Viper` 统一管理,开发/测试/生产环境无缝切换。
</Item>
</v-clicks>
<div class="flex justify-center mt-2">
<img src="../public/harness.svg" class="w-full max-h-[160px] object-contain" />
</div>