From 24da4eae6fbe16cc9e30d4d5f91a62eb33d9f623 Mon Sep 17 00:00:00 2001 From: Ubuntu Date: Wed, 17 Jun 2026 23:27:34 +0800 Subject: [PATCH] save code --- docs/gpu-worker改动说明.md | 96 +++++++++++++++++++++++++++++++++++++ static/test_interface2.html | 5 ++ static/test_interface3.html | 5 ++ 3 files changed, 106 insertions(+) create mode 100644 docs/gpu-worker改动说明.md diff --git a/docs/gpu-worker改动说明.md b/docs/gpu-worker改动说明.md new file mode 100644 index 0000000..cd78466 --- /dev/null +++ b/docs/gpu-worker改动说明.md @@ -0,0 +1,96 @@ +# GPU Worker 改动说明 + +测试页面已新增字段,worker 侧需对应接收并使用。 + +## 涉及接口 + +| 接口 | 路径 | 新增字段 | +|------|------|----------| +| 接口 2(C端生发) | `POST /api/v1/hair/grow` | `prompt` | +| 接口 3(B端生发) | `POST /api/v1/hair/grow-b` | `prompt` | + +## 1. 新增 `prompt` 参数 + +### 接口 2(`/api/v1/hair/grow`) + +Handler 签名新增: + +```python +prompt: str = Form(default="补充遮罩区域的头发", description="ComfyUI 提示词,会替换工作流节点60的文本"), +``` + +透传链路: + +``` +handler → generate_grow_results(image, gender, use_mask, prompt) + → comfyui.run(buf, prompt=prompt) +``` + +### 接口 3(`/api/v1/hair/grow-b`) + +Handler 签名新增: + +```python +prompt: str = Form(default="补充遮罩区域的头发", description="ComfyUI 提示词,会替换工作流节点60的文本"), +``` + +透传链路: + +``` +handler → generate_grow_b(marked, use_mask, prompt) + → comfyui.run(buf, prompt=prompt) +``` + +### `hairline/comfyui.py` 改动 + +1. 新增节点常量: + +```python +_PROMPT_NODE = "60" # JjkText:提示词 +``` + +2. `run()` 函数签名改为: + +```python +def run(rgba_png_bytes: bytes, timeout: float = COMFY_TIMEOUT, prompt: str = None) -> bytes: +``` + +3. 在 `run()` 内部,注入图片和 seed 之后(约第81行后)加入: + +```python +if prompt is not None: + wf[_PROMPT_NODE]["inputs"]["text"] = prompt +``` + +### `hairline/service.py` 改动 + +两个服务函数各加一个 `prompt` 参数,透传给 `comfyui.run()`: + +- `generate_grow_results(image_bgr, gender, use_mask=True, prompt=None)` — 两处 `comfyui.run(buf.getvalue())` 都改为 `comfyui.run(buf.getvalue(), prompt=prompt)` +- `generate_grow_b(marked_bgr, use_mask=True, prompt=None)` — `comfyui.run(buf.getvalue())` 改为 `comfyui.run(buf.getvalue(), prompt=prompt)` + +## 2. 已有字段回顾 + +`use_mask` 和 `prompt` 测试页面均已就绪,表单字段一览: + +| 接口 | 字段 | 类型 | 默认值 | 说明 | +|------|------|------|--------|------| +| 2 | `image_file` | file | — | 用户照片(三选一) | +| 2 | `image_url` | string | — | 同上 | +| 2 | `image_base64` | string | — | 同上 | +| 2 | `gender` | string | `female` | `male` / `female` | +| 2 | `use_mask` | bool | `true` | inpaint 遮罩开关 | +| 2 | `prompt` | string | `补充遮罩区域的头发` | ComfyUI 提示词 | +| 3 | `marked_image_file` | file | — | 划线图(三选一) | +| 3 | `marked_image_url` | string | — | 同上 | +| 3 | `marked_image_base64` | string | — | 同上 | +| 3 | `use_mask` | bool | `true` | 画发际线开关 | +| 3 | `prompt` | string | `补充遮罩区域的头发` | ComfyUI 提示词 | + +## 3. 当前工作流提示词节点 + +`add_hair.json` 中节点 **60**(`JjkText`)为提示词节点,当前硬编码文本: + +> 补充遮罩区补充遮罩区域内的头发,头发填满遮罩区域。发际线往下挡住额头 + +`comfyui.run()` 收到 `prompt` 参数后将替换此文本。 diff --git a/static/test_interface2.html b/static/test_interface2.html index 5c5134d..814baad 100644 --- a/static/test_interface2.html +++ b/static/test_interface2.html @@ -84,6 +84,10 @@
JPG/PNG ≤1MB  |  生发图生成较慢(数十秒~数分钟),请耐心等待
+
+ + +
@@ -126,6 +130,7 @@ async function submitTest() { const fd = new FormData(); fd.append('image_file', f); fd.append('gender', $('gender').value); fd.append('use_mask', $('useMask').value); + fd.append('prompt', $('promptInput').value); try { const r = await fetch(API_BASE + '/api/v1/hair/grow', { method:'POST', body:fd }); const json = await r.json(); diff --git a/static/test_interface3.html b/static/test_interface3.html index 443c124..82c0541 100644 --- a/static/test_interface3.html +++ b/static/test_interface3.html @@ -91,6 +91,10 @@
false 时跳过划线检测、直接送划线图,用于对比测试
+
+
💬 提示词(prompt)
+ +
@@ -153,6 +157,7 @@ async function submitTest() { const fd = new FormData(); fd.append('marked_image_file', mf); fd.append('use_mask', $('useMask').value); + fd.append('prompt', $('promptInput').value); try { const r = await fetch(API_BASE + '/api/v1/hair/grow-b', { method:'POST', body:fd });