Files
2026Technology-Competition/docs/web-ui-design.md
T

424 lines
21 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Web UI 设计文档
> 版本: v1.0 | 日期: 2026-07-21 | 状态: 初版
---
## 1. 概述
概要设计书自动生成 Agent 的 Web UI 是用户与系统交互的唯一界面,承担以下功能:
- 文件上传(要件定义、模板、规则文档、现系统文件)
- 各步骤的确认与修正(解析结果、影响调查结果、生成结果)
- 生成进度实时展示
- 最终设计书的预览与下载
- 规则手册管理(更新、版本查看)
- 多用户支持(数据隔离)
---
## 2. 页面结构
### 2.1 全局布局
```
┌─────────────────────────────────────────────────────────────┐
│ Genesis [上传] [解析] [影响调查] [生成] [结果] [设置] │ ← 顶部导航
├─────────────────────────────────────────────────────────────┤
│ │
│ ┌─ 对话区域 ──────────────────────────────────────────┐ │
│ │ 🤖 你好。请上传要件定义的Excel │ │
│ │ 🧑 [拖放文件] │ │
│ │ 🤖 解析完成!请确认以下Sheet类型 │ │
│ │ ┌────────┬──────────┬───────────┐ │ │
│ │ │ Sheet名 │ 判定结果 │ 修正 │ │ │
│ │ ├────────┼──────────┼───────────┤ │ │
│ │ │ 功能一览 │ ✅ FUNCTION │ │ │ │
│ │ │ 画面一览 │ ❌ 未判定 │ [修正▼] │ │ │
│ │ └────────┴──────────┴───────────┘ │ │
│ │ [确认并继续] │ │
│ └──────────────────────────────────────────────────────┘ │
│ │
│ ┌─ 组件区域 ──────────────────────────────────────────┐ │
│ │ (根据当前步骤切换) │ │
│ └──────────────────────────────────────────────────────┘ │
│ │
│ 状态: [📤已上传] [✅完成] [⏳进行中] [⏸未开始] │ ← 底部状态栏
└─────────────────────────────────────────────────────────────┘
```
### 2.2 导航步骤
```
① 上传 → ② 解析确认 → ③ 影响调查确认 → ④ 生成执行 → ⑤ 结果预览
(文件选择) (Sheet判定等) (关联・不确定处) (进度显示) (设计书浏览/下载)
```
- 每步骤有"确认"按钮,确认后进入下一步
- 可通过左侧导航跳转到任意已完成的步骤(支持回退)
- 当前步骤高亮显示
---
## 3. 各页面详细设计
### 3.1 页面1: 文件上传
```
┌─────────────────────────────────────────────┐
│ 1. 上传文件 │
├─────────────────────────────────────────────┤
│ │
│ 📁 要件定义 (必须) │
│ ┌─────────────────────────────────────┐ │
│ │ .xlsx, .xls, .docx, .pptx 拖放即可 │ │
│ │ 或 [选择文件] │ │
│ └─────────────────────────────────────┘ │
│ ⚠ 要件定义推荐使用Excel │
│ │
│ 📁 设计书模板 (必须) │
│ ┌─────────────────────────────────────┐ │
│ │ .docx (Word) │ │
│ └─────────────────────────────────────┘ │
│ │
│ 📁 记录规则文档 (推荐) │
│ ┌─────────────────────────────────────┐ │
│ │ .docx / .xlsx / .pptx (可多个) │ │
│ └─────────────────────────────────────┘ │
│ │
│ 📁 图表规则 (推荐) │
│ ┌─────────────────────────────────────┐ │
│ │ .docx / .xlsx / .pptx │ │
│ └─────────────────────────────────────┘ │
│ │
│ 📁 现有系统文件 (任意, 追加/改修场景使用) │
│ ┌─────────────────────────────────────┐ │
│ │ .java/.xml/.yml 源代码 或 │ │
│ │ 既有设计书 (.docx/.xlsx) │ │
│ └─────────────────────────────────────┘ │
│ │
│ [更新规则] ← 规则手册再构建按钮 │
│ │
│ [上传完成 → 进入解析] │
└─────────────────────────────────────────────┘
```
**上传规则:**
- 要件定义文件至少一个
- 模板文件必须是一个 .docx
- 规则文档可多个,也可零个(规则手册已存在时)
- 现系统文件仅在追加/改修场景时需要
- 文件大小限制:最大100MB
- 支持拖拽上传、点击上传、取消上传
**斜杠命令:** `/upload` 等同于"上传文件区域获得焦点"
---
### 3.2 页面2: 解析结果确认
```
┌─────────────────────────────────────────────┐
│ 2. 确认解析结果 │
├─────────────────────────────────────────────┤
│ │
│ ▶ Excel要件定义 - Sheet类型判定 │
│ ┌────────┬────────────┬────────┬─────────┐ │
│ │ Sheet名│ 类型判定 │ 修正 │ 行数/列数│ │
│ ├────────┼────────────┼────────┼─────────┤ │
│ │ 功能一览 │ ✅ FUNCTION │ [修正]│ 150x5 │ │
│ │ 画面一览 │ ✅ SCREEN │ [修正]│ 30x4 │ │
│ │ 账票一览 │ ✅ REPORT │ [修正]│ 12x6 │ │
│ │ DB定义 │ ✅ DATABASE │ [修正]│ 20x8 │ │
│ │ 自由记述 │ ⚠ 自由记述型│ [修正]│ 45行 │ │
│ └────────┴────────────┴────────┴─────────┘ │
│ ※ 取消线行将从生成对象中排除 │
│ │
│ ▶ Word模板 - 章节构成 │
│ 检测到的章节: │
│ 1. 目的 │
│ 2. 功能一览 │
│ 3. 画面一览 │
│ 4. DB设计 │
│ 5. IF定义 │
│ 6. 账票一览 │
│ 7. 非功能要件 │
│ [修改章节] │
│ │
│ ▶ 现有系统探索结果 (仅追加/改修场景显示) │
│ 检测: Controller 5件 / Service 12件 / Entity 8件 │
│ API端点: 14件 │
│ DB表: 14件 │
│ [查看详情] [要修正吗?] │
│ │
│ [确认并进入影响调查] │
└─────────────────────────────────────────────┘
```
**交互说明:**
- Sheet类型判定由 AI 自动,但用户可以点击"修正"手动更改
- 章节构成由模板自动解析,但用户可以追加/删除章节
- 现有系统信息仅在追加/改修场景显示
---
### 3.3 页面3: 影响调查确认
```
┌─────────────────────────────────────────────┐
│ 3. 确认影响调查结果 │
├─────────────────────────────────────────────┤
│ │
│ ── 影响调查概要 ── │
│ 要素数: 45件(功能12/画面10/账票8/DB10/IF3/批处理2)│
│ 关联数: 128件(高置信度85/中32/低11 │
│ 不确定处: 2件 │
│ │
│ ── 要素一览(可折叠) ── │
│ ▸ F001 用户注册 (功能) │
│ 关联: SC001(利用/h) SC002(利用/h) TB001(更新/h) │
│ [编辑] [删除] │
│ ▸ F005 月度汇总处理 (功能) │
│ 关联: ... │
│ │
│ ── 未确定项目(2件) ── │
│ ❓ F004 → TB007 的关联不明 │
│ 根据: 仅名称相似 │
│ → [追加] [否决] [修正] │
│ ❓ 批注「另纸参照」的另纸未找到 │
│ → [输入回答] [跳过] │
│ │
│ ── 质量指标 ── │
│ ⚠ 孤立要素: F012 与任何要素均无关联 │
│ ⚠ 风险: 删除 F001 将影响 5 个要素 │
│ │
│ [确认完成 → 进入生成] │
└─────────────────────────────────────────────┘
```
**交互说明:**
- 一栏显示全部关联(无 auto-pass)
- 仅高亮关注未确定项目
- 各关联的追加/删除/种类变更/证据修正是个别交互
- 修正履历显示在画面底部
---
### 3.4 页面4: 生成执行
```
┌─────────────────────────────────────────────┐
│ 4. 概要设计书生成中... │
├─────────────────────────────────────────────┤
│ │
│ 进度: │
│ │
│ ✅ 功能一览 - 完成 (23秒) │
│ ✅ 画面一览 - 完成 (18秒) │
│ ⠋ DB设计 - 生成中... │
│ ⬜ 账票一览 - 等待 │
│ ⬜ IF定义 - 等待 │
│ ⬜ 非功能要件 - 等待 │
│ │
│ 已过时间: 41秒 / 预计时间: ~3分 │
│ │
│ ────────────────────────────────────── │
│ DB设计章 生成中: │
│ 关联要素: F001, F003, TB001, TB002 │
│ 适用规则: 写入规则_v3 │
│ │
│ ────────────────────────────────────── │
│ │
│ [中途中断] [查看日志] │
└─────────────────────────────────────────────┘
```
**交互说明:**
- 用户可保持此画面打开同时进行其他工作
- 生成完成时通过浏览器通知(或 WebSocket 推送)告知
- 选择中断时,已完成的章节保留,其余作为未完成保存
- 中断后恢复时,从已完成的章节继续生成
---
### 3.5 页面5: 结果预览与下载
```
┌─────────────────────────────────────────────┐
│ 5. 生成完成 │
├─────────────────────────────────────────────┤
│ │
│ ┌─ QA报告 ──────────────────────────┐ │
│ │ ✅ 全部10项检查通过 │ │
│ │ 内容准确性: 通过 │ │
│ │ 关联一致性: 通过 │ │
│ │ 规则遵守度: 警告 1件 │ │
│ │ → 「功能概要应包含影响范围」 │ │
│ └────────────────────────────────────────┘ │
│ │
│ ┌─ 预览 ──────────────────────────┐ │
│ │ (docx → HTML → 浏览器内渲染) │ │
│ │ 1. 目的 │ │
│ │ 本系统是... │ │
│ │ │ │
│ │ 2. 功能一览 │ │
│ │ ┌──────┬────────┬───────┐ │ │
│ │ │功能ID │ 功能名 │ 概要 │ │ │
│ │ ├──────┼────────┼───────┤ │ │
│ │ │F001 │用户 │... │ │ │
│ │ └──────┴────────┴───────┘ │ │
│ │ ... │ │
│ └────────────────────────────────────────┘ │
│ │
│ ┌─ 下载区域 ──────────────────────────┐ │
│ │ 📥 下载设计书 (.docx) │ │
│ │ 📥 下载QA报告 (.json) │ │
│ │ 📥 下载影响调查书 (.json) │ │
│ └────────────────────────────────────────┘ │
│ │
│ [修正后重新生成] [进行新生成] │
└─────────────────────────────────────────────┘
```
---
## 4. 技术设计
### 4.1 任务管理
```
Task Queue (Redis)
├── task:generate-chapter-1
│ status: completed
│ result: {chapter: "功能一览", html: "...", time_ms: 23000}
├── task:generate-chapter-2
│ status: running
│ started_at: 2026-07-21T12:01:00Z
└── task:generate-chapter-3
status: pending
```
### 4.2 会话管理(SQLite
**会话表设计:**
```sql
-- 主模型: 每个用户的会话
CREATE TABLE sessions (
id TEXT PRIMARY KEY,
user_id TEXT NOT NULL,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
updated_at DATETIME,
status TEXT, -- "uploading" | "parsing" | "awaiting_parse_confirm" | "impact_running" | "awaiting_impact_confirm" | "writing" | "qa" | "done"
current_step TEXT,
metadata JSON -- 会话的摘要
);
-- 中间成果物的快照
CREATE TABLE session_snapshots (
id INTEGER PRIMARY KEY AUTOINCREMENT,
session_id TEXT NOT NULL REFERENCES sessions(id),
step TEXT NOT NULL, -- "parse" | "impact" | "writer" | "qa"
data BLOB, -- 序列化的中间成果物 (JSON)
version INTEGER DEFAULT 1, -- 修正时的版本管理
created_at DATETIME DEFAULT CURRENT_TIMESTAMP
);
-- 已上传文件的元数据(文件本体保存在文件系统)
CREATE TABLE session_files (
id INTEGER PRIMARY KEY AUTOINCREMENT,
session_id TEXT NOT NULL REFERENCES sessions(id),
file_type TEXT NOT NULL, -- "requirements" | "template" | "rules" | "existing_system"
file_name TEXT NOT NULL,
file_path TEXT NOT NULL, -- 文件系统上的路径
file_size INTEGER,
mime_type TEXT,
uploaded_at DATETIME DEFAULT CURRENT_TIMESTAMP
);
```
**为什么用 SQLite**
- 单一文件,无需额外安装
- 通过 SQL 查询即可轻松搜索会话(如「用户X的未完成会话」)
- ACID 事务保证数据一致性
- 进程重启后数据仍保留
- 迁移到 PostgreSQL 也容易(表定义兼容性高)
### 4.3 多用户
```
工作区:
/data/users/{user_id}/
├── uploads/ # 用户上传的文件
│ ├── session_001/
│ │ ├── requirements.xlsx
│ │ └── template.docx
│ └── session_002/
├── outputs/ # 生成的设计书
│ ├── session_001.docx
│ └── session_002.docx
└── config/
└── .env # 用户个别设置(API Key 等共享)
共享数据(所有用户通用):
/data/shared/
├── rules-handbook/
│ ├── v1/
│ └── v2/ # 规则更新版本
└── templates/
```
---
## 5. 异常处理UX
### 5.1 生成出错时
```
DB设计 生成过程中发生错误
┌─────────────────────────────────────────┐
│ ⚠ DB设计章生成时发生错误 │
│ 错误详情: LLM API调用失败 │
│ 错误码: LLM_TIMEOUT │
│ │
│ [重试] [跳过并继续] [中断] │
└─────────────────────────────────────────┘
```
- **重试**: 重新生成同一章(重试 LLM 调用)
- **跳过**: 跳过此章并进入下一章
- **中断**: 全部中断,保存迄今为止的已完成章节
### 5.2 会话恢复
浏览器关闭后再次打开时:
```
「要恢复上次的会话吗?」
上次的状态: Step 3 (影响调查确认)
・解析结果: ✅ 完成
・影响调查: ✅ 完成(以上述v2确认)
・Writer: 未开始
[恢复并继续] [开始新会话]
```
---
## 6. 斜杠命令一览
```
/upload → 聚焦到文件上传区域
/probe → 跳转到解析结果画面
/impact → 跳转到影响调查画面
/generate → 跳转到生成执行画面
/result → 跳转到结果画面
/settings → 跳转到设置画面
/status → 显示当前生成任务的状态
/cancel → 取消当前生成
/help → 显示帮助
```