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