- 将默认LLM模型从gemini-2.0-flash升级为gemini-3-flash-preview - 将博主人设从"性感福利主播"更改为"二次元coser" - 优化LLM生成SD提示词的指南,新增中国审美人物描述规则 - 为各SD模型添加颜值核心词、示范prompt和禁止使用的关键词 - 新增三维人物描述法(眼睛/肤色/气质)和专属光线词指导 📦 build(openspec): 归档旧规范并创建新规范 - 将improve-maintainability规范归档至2026-02-25目录 - 新增2026-02-26-improve-ui-layout规范,包含UI布局优化设计 - 新增2026-02-26-optimize-image-generation规范,包含图片生成优化设计 - 在根目录openspec/specs下新增图片质量、后处理、中国审美和LLM提示词规范 ♻️ refactor(sd_service): 优化SD模型配置和图片后处理 - 为各SD模型添加中国审美特征词和欧美面孔排除词 - 新增高画质预设档,SDXL模型启用Hires Fix参数 - 将后处理拆分为beauty_enhance和anti_detect_postprocess两个独立函数 - 新增美化增强功能,支持通过enhance_level参数控制强度 ♻️ refactor(services): 更新内容生成服务以支持美化增强 - 在generate_images函数中新增enhance_level参数 - 将美化强度参数传递至SDService.txt2img调用 ♻️ refactor(ui): 优化UI布局和添加美化强度控件 - 注入自定义CSS主题层,优化字体、按钮和卡片样式 - 将全局设置迁移至独立的"⚙️ 配置"Tab,优化Tab顺序 - 在内容创作Tab的高级设置中添加美化强度滑块控件 - 优化自动运营Tab布局,改为2列卡片网格展示
3.2 KiB
3.2 KiB
ADDED Requirements
Requirement: 内容创作 Tab 的 UI 代码迁移至独立模块
ui/tab_create.py SHALL 包含「内容创作 Tab」的全部 Gradio 组件定义和事件绑定,并导出 build_tab(...) -> dict 函数,返回跨 Tab 共享组件的字典(key 集合不得变更)。
内容创作 Tab 内部 SHALL 采用三栏布局:
- 左栏(scale=3):人设选择、话题/风格、文案生成参数(高级设置 Accordion)
- 中栏(scale=4):文案输出区(标题、正文、标签、提示词)+ 文案操作按钮组
- 右栏(scale=3):图片预览 Gallery + 图片操作按钮组(含美化强度滑块)
三栏通过 gr.Row() 包裹三个 gr.Column(scale=...) 实现,所有高频操作 SHALL 在无需垂直滚动的情况下可见(≥1280px 宽度分辨率)。
Scenario: main.py/app.py 正常启动并显示内容创作 Tab
- WHEN 运行应用启动 Gradio
- THEN 内容创作 Tab 正常显示三栏布局,所有组件与迁移前功能一致
Scenario: tab_create 模块可独立导入
- WHEN 在 Python 中执行
from ui.tab_create import build_tab - THEN 不抛出任何导入错误,
build_tab为可调用对象
Scenario: 三栏布局在宽屏下无需滚动
- WHEN 用户在 ≥1280px 宽度的浏览器中打开内容创作 Tab
- THEN 左栏参数、中栏文案输出、右栏图片预览 SHALL 同时可见,无需垂直滚动
Scenario: build_tab 返回字典 key 保持不变
- WHEN
build_tab(...)被调用并返回字典 - THEN 返回字典 SHALL 至少包含
res_title、res_content、res_prompt、res_tags、quality_mode、steps、cfg_scale、neg_prompt等原有 key
Requirement: ui/ 目录结构规范
ui/ 目录 SHALL 包含 __init__.py,每个 Tab 模块文件命名约定为 tab_<name>.py,不在 Tab 模块中直接调用全局服务初始化代码。
Scenario: 新增 Tab 模块的标准结构
- WHEN 开发者创建新的
ui/tab_*.py文件 - THEN 该文件导出
build_tab(...)函数,且顶层不包含副作用代码
Requirement: 自动运营 Tab 采用卡片式两列网格布局
「🤖 自动运营」Tab 内的各自动化任务 SHALL 以 2 列 × N 行 的卡片网格展示,每个任务使用 gr.Group() 包裹,卡片内 SHALL 包含:任务名称标题、启用开关(gr.Checkbox)、执行间隔(gr.Number 或 gr.Slider)、上次执行时间(gr.Markdown)。
Scenario: 自动运营任务以两列网格显示
- WHEN 用户切换到「🤖 自动运营」Tab
- THEN 各自动化任务(自动评论、自动点赞、自动收藏、自动发布、自动回复等)SHALL 以两列卡片网格排列,每列宽度相等
Scenario: 每张卡片包含完整任务控制
- WHEN 用户查看某个任务卡片
- THEN 卡片内 SHALL 显示任务开关、执行间隔设置项,功能与原单列布局完全一致
Scenario: 自定义 CSS 增强视觉效果
- WHEN 应用加载完成
- THEN
gr.Blocks(css=...)SHALL 注入自定义样式,包含:字体层级优化、按钮圆角(≥6px)、gr.Group卡片轻微阴影(box-shadow),不破坏 Gradio 内部组件样式