- 将默认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列卡片网格展示
50 lines
3.2 KiB
Markdown
50 lines
3.2 KiB
Markdown
## 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 内部组件样式
|