diff --git a/image/man2.JPG b/image/man2.JPG new file mode 100644 index 0000000..2f5a5cd Binary files /dev/null and b/image/man2.JPG differ diff --git a/static/test_interface3.html b/static/test_interface3.html index 6a5d30d..0488721 100644 --- a/static/test_interface3.html +++ b/static/test_interface3.html @@ -16,7 +16,6 @@ .card-body { padding: 18px; } .upload-group { margin-bottom: 14px; } - .upload-group:last-child { margin-bottom: 0; } .upload-group .label { font-weight: 700; font-size: 13px; color: #374151; margin-bottom: 6px; } .upload-group .label .tag { font-size: 11px; padding: 2px 8px; border-radius: 10px; margin-left: 6px; } .upload-group .label .tag.required { background: #fee2e2; color: #991b1b; } @@ -42,25 +41,22 @@ .col-main { flex: 1.5; min-width: 0; } .col-side { flex: 1; min-width: 0; } - /* 结果卡片 */ - .outcome { margin-top: 14px; } - .outcome .field { margin-bottom: 10px; } - .outcome .field .name { font-size: 12px; font-weight: 600; color: #6b7280; margin-bottom: 4px; text-transform: uppercase; letter-spacing: .5px; } - .outcome img { max-width: 100%; max-height: 350px; border-radius: 8px; display: block; } - - /* 标记图 + 原图预览 */ .preview-row { display: flex; gap: 16px; } .preview-row > div { flex: 1; text-align: center; } .preview-row .thumb { background: #222; border-radius: 8px; overflow: hidden; display: inline-block; line-height: 0; } - .preview-row .thumb img { max-width: 100%; max-height: 300px; object-fit: contain; } + .preview-row .thumb img { max-width: 100%; max-height: 350px; object-fit: contain; } .preview-row .caption { font-size: 11px; color: #9ca3af; margin-top: 6px; } + .na { color: #d1d5db; font-size: 12px; padding: 40px 20px; background: #f9fafb; border-radius: 6px; } + + .result-field { margin-bottom: 14px; } + .result-field .name { font-size: 12px; font-weight: 600; color: #6b7280; margin-bottom: 4px; text-transform: uppercase; letter-spacing: .5px; } + .badge { display: inline-block; padding: 2px 10px; border-radius: 10px; font-size: 12px; font-weight: 600; background: #dbeafe; color: #1e40af; } .json-panel { max-height: 550px; overflow: auto; } .json-content { padding: 14px 16px; font-family: "SF Mono", "Fira Code", monospace; font-size: 12px; line-height: 1.6; white-space: pre-wrap; word-break: break-all; } .hidden { display: none !important; } - .badge { display: inline-block; padding: 2px 8px; border-radius: 10px; font-size: 11px; font-weight: 600; background: #dbeafe; color: #1e40af; } - .mt-8 { margin-top: 8px; } + .tag-new { background: #059669; color: #fff; font-size: 10px; padding: 1px 6px; border-radius: 8px; margin-left: 4px; } @media (max-width: 800px) { .results-layout, .preview-row { flex-direction: column; } } @@ -68,57 +64,43 @@

🏥 接口3 — B端生发 测试

-

POST /api/v1/hair/grow-b  |  医生划线图 + 原图 → 最佳发际线 + 生发效果

+

POST /api/v1/hair/grow-b  |  上传马克笔划线图 → 生发效果图

-
-
-
✏️ 划线图(marked_image)必填
- -
-
-
📷 原始照片(original_image)必填
- -
+
+
✏️ 划线图(marked_image)必填
+
-
两张图都必填,各 ≤1MB  |  划线图 = 医生在原图上标了目标发际线的图片
+
JPG/PNG ≤1MB  |  用马克笔在用户照片额头画发际线后拍照上传  |  不再需要原始照片