fix: split overflowing slides to fit frankfurt theme header/footer bars
Deploy Slides / build-and-deploy (push) Successful in 1m39s

- eino-deep-dive.md: split slide 2 into code-only + explanation+SVG slides
- async-deep-dive.md: split slide 2 into code-only + progress+SVG slides
- harness.md: split slide 2 (4 Items + SVG) into two slides (2 Items each)
- request-journey.md: split into middleware/handler + pipeline/finalization slides

The frankfurt theme header (~40px) overlaps ~7px into the content zone,
leaving ~467px effective height. Dense slides with code+Items+images
exceeded this budget and were hidden behind the bars.
This commit is contained in:
2026-05-31 00:01:33 +08:00
parent 5f99d2481a
commit f3abc5fdc6
4 changed files with 25 additions and 37 deletions
+4 -12
View File
@@ -48,10 +48,6 @@ func (q *TaskQueue) Enqueue(job *TaskJob) {
Context 注入 + 多通道推送
<div class="grid grid-cols-2 gap-4 mt-2">
<div>
```go {1-3|5-8|all}
func WithProgressReporter(ctx context.Context, r ProgressReporter) context.Context {
return context.WithValue(ctx, progressCtxKey, r)
@@ -62,13 +58,9 @@ reporter := GetProgressReporter(ctx)
reporter.Report(Progress{Stage: "prompt", Percent: 25})
```
<div class="flex justify-center mt-2">
<img src="../public/async-task.svg" class="w-full max-h-[160px] object-contain" />
</div>
---
</div>
<div class="flex flex-col justify-center">
# 进度推送 — 阶段与通道
<v-clicks>
@@ -82,6 +74,6 @@ reporter.Report(Progress{Stage: "prompt", Percent: 25})
</v-clicks>
</div>
<div class="flex justify-center mt-2">
<img src="../public/async-task.svg" class="w-full max-h-[200px] object-contain" />
</div>
+3 -11
View File
@@ -45,10 +45,6 @@ PreHandler 从全局 State 提取当前节点所需字段;PostHandler 将节
QualitySupervisor 驱动的条件分支
<div class="grid grid-cols-2 gap-4 mt-2">
<div>
```go {1-10|all}
g.AddBranch(nodeQualitySupervisor, compose.NewGraphBranch(
func(ctx context.Context, _ PipelineInput) (string, error) {
@@ -67,9 +63,9 @@ g.AddBranch(nodeQualitySupervisor, compose.NewGraphBranch(
))
```
</div>
---
<div class="flex flex-col justify-center">
# 分支路由 — 逻辑与全貌
<v-clicks>
@@ -84,9 +80,5 @@ g.AddBranch(nodeQualitySupervisor, compose.NewGraphBranch(
</v-clicks>
<div class="flex justify-center mt-2">
<img src="../public/pipeline-detail.svg" class="w-full max-h-[160px] object-contain" />
</div>
</div>
<img src="../public/pipeline-detail.svg" class="w-full max-h-[200px] object-contain" />
</div>
+13 -3
View File
@@ -41,9 +41,9 @@ QualitySupervisor 自动质检,不合格重试(最多 3 次),超限降
---
# 一致性保障 — 数据与部署
# 一致性保障 — 数据与 ID
从存储到部署的全链路一致性
存储层的一致性设计
<v-clicks>
@@ -55,6 +55,16 @@ SQLite 单文件 ACID + GORM 事务包裹关键操作。CASCADE 删除保证级
格式:`prefix_base62`(如 `task_9bN4vR`)。`crypto/rand` 生成 base62 编码,全局唯一且可读。前缀标识实体类型,便于调试。
</Item>
</v-clicks>
---
# 一致性保障 — 部署与配置
从容器到配置的全链路一致性
<v-clicks>
<Item title="部署一致性 — 容器化 + 确定性构建">
Docker Compose 双容器(nginx + app),确定性构建保证环境一致。CI/CD 推送 master 自动触发部署。
</Item>
@@ -66,5 +76,5 @@ Docker Compose 双容器(nginx + app),确定性构建保证环境一致。
</v-clicks>
<div class="flex justify-center mt-2">
<img src="../public/harness.svg" class="w-full max-h-[160px] object-contain" />
<img src="../public/harness.svg" class="w-full max-h-[200px] object-contain" />
</div>
+5 -11
View File
@@ -10,10 +10,6 @@ POST /api/v1/generate {prompt: "像素风骑士", assetType: "sprite", style: {
</div>
<div class="grid grid-cols-2 gap-4 mt-2">
<div>
<v-clicks>
<Item title="① Middleware 层(~1ms)">
@@ -26,9 +22,11 @@ JWT 认证 → 解析 userID → 用户级限流(Redis Lua)→ 全局限流
</v-clicks>
</div>
---
<div>
# 请求旅程 — 管线执行与收尾
耗时集中在管线阶段(~30s 占 95%)
<v-clicks>
@@ -42,11 +40,7 @@ goroutine 取任务 → PromptOptimizer → AssetGenerator → QualitySupervisor
</v-clicks>
</div>
</div>
<div v-click class="mt-2 text-center text-gray-400 text-sm">
<div v-click class="mt-4 text-center text-gray-400 text-sm">
全程异步:前端拿到 taskId 后通过 WebSocket 实时监听进度变化
</div>