feat(ui): 要件定义书直传(点按钮开系统文件框/仅.xlsx/选定即上传)+移除 rag-bar(影响调查改由聊天驱动)+空输入禁用发送键
This commit is contained in:
@@ -0,0 +1,78 @@
|
||||
# 要件定义书直传入口 + 移除 rag-bar(含输入区上移根治)— 实施计划
|
||||
|
||||
目标文件:`src/genesis/server/static/chat.html`、`frontend/src/main.ts`、`frontend/src/chat.css`
|
||||
后端零改动(沿用 `POST /api/sessions/{sid}/files`,`file_type=requirements`)。
|
||||
|
||||
## 背景 / 问题
|
||||
- 点「上传资料」展开 `#upload-panel` → `#composer`(底部锚定)变高 → 顶部输入框/按钮被顶上去。
|
||||
- 需求:按钮改名「要件定义书」;**只允许上传要件定义书**;点击后**直接打开系统文件选择框**;选定即上传;其他资料改由项目配置提供。
|
||||
- 另有同类“上移”来源:`#rag-bar` 初始 `hidden`,**建会话后被显示** → 工具栏高度变化 → 输入区再跳一次。
|
||||
|
||||
## 已确认决策
|
||||
- D1 选定文件后**自动上传**(选定即 POST,无二次确认)。
|
||||
- D2 未创建会话时点按钮 → 提示「请先发送一条消息以创建会话」。
|
||||
- D3 会话内**只传要件定义书**(`.xlsx`);模板/规则/做成说明书由项目配置提供;`.xls` 不支持(后端 `EXPECTED_SUFFIX` 与 `excel_reader` 仅 `.xlsx`)。
|
||||
- D4 **移除 `#rag-bar`**(DOM + 相关前端 JS)。理由:影响调查已由聊天驱动(`chat/agent.py` 意图 `impact`,`tests/test_chat_intent.py` 覆盖),按钮冗余;RAG 现不可用(0 片段/禁用)。“启用 RAG/影响调查”待下一轮 RAG 落地再以合适方式加回。
|
||||
|
||||
## 变更清单
|
||||
|
||||
### chat.html
|
||||
- `#tb-upload`:`📎 上传资料` → `📄 要件定义书`;`title="上传要件定义书"`;补 `aria-label`。
|
||||
- 删除 `#upload-panel` 整块(`#file-type`、`.file-pick`、`#upload-btn`、`#proj-hint`)。
|
||||
- `#composer-toolbar` 内保留 `<input type="file" id="file-input" accept=".xlsx" style="display:none">` 与 `<span id="upload-status"></span>`。
|
||||
- **删除 `#rag-bar`**(`#rag-enabled` / `#rag-stats` / `#impact-btn`)。
|
||||
|
||||
### frontend/src/main.ts
|
||||
- 删除常量 `fileTypeSel` / `projHintEl` / `uploadPanelEl`;保留 `fileInputEl` / `uploadStatusEl`。
|
||||
- 删除 `updateUploadBar()` 及**全部调用点**。
|
||||
- 删除 `UPLOAD_EXT_RULES` / `projectHasPrefixedType`;保留 `pickExt`。
|
||||
- 新增 `uploadRequirements()`:无 `sid` 提示 → 取文件 → 校验 `.xlsx` → `FormData(file_type=requirements)` POST → 刷新标题/侧边栏 → 聊天区提示;失败提示;**各路径均清空 `file-input.value`**。
|
||||
- 绑定:`#tb-upload` click → `fileInputEl.click()`;`fileInputEl` change → `uploadRequirements()`;删除 `#upload-btn` 绑定与面板切换。
|
||||
- **删除 RAG 相关前端代码**:常量 `ragEnabledEl` / `ragStatsEl` / `ragBarEl` / `impactBtnEl`;`RAG_LS_KEY` / `readRagFlag` / `writeRagFlag` / `refreshRagStats()` / `updateImpactButton()`;`ragEnabledEl` change 监听、`impactBtnEl` click 监听;以及 `refreshRagStats()` 的全部调用点。
|
||||
- `state.ts` 的 `resolveUploadType` / `shouldHideUploadSelect` 保留(node 测试覆盖),仅不再调用。
|
||||
|
||||
### frontend/src/chat.css
|
||||
- 删除死样式:`#upload-bar`、`#upload-bar-inner`、`#upload-bar select(:focus)`、`.file-pick(:hover)`、`#upload-btn(:hover)`、`#proj-hint`、`#upload-panel`、`label.vh`。
|
||||
- **删除 RAG 样式**:`#rag-bar`、`#rag-bar label.rag-switch`、`#rag-bar input[type=checkbox]`(及 `:disabled`)、`#rag-bar .rag-stats(.ready/.zero)`、`#rag-bar button`(`:disabled`/`:hover:not(:disabled)`)。
|
||||
- 保留 `#upload-status`。
|
||||
|
||||
## 验证
|
||||
- `cd frontend && npm run verify`(typecheck + node --test + build)。
|
||||
- `python -m pytest`(覆盖率 ≥99%)。
|
||||
- 手动:
|
||||
- 点「要件定义书」→ 弹系统文件框(过滤 .xlsx)→ 选文件**自动上传** → 聊天区显示「上传完成」;
|
||||
- **输入区/按钮不再上移**(上传面板已删、rag-bar 已移除、工具栏高度恒定)且仍钉底;
|
||||
- 无会话时提示先发消息;聊天框输入「做影响调查」仍可触发后端影响调查意图。
|
||||
|
||||
## 风险
|
||||
- 会话内不再能补传模板/规则/做成说明书 → 完全依赖项目配置;未配置则生成阶段报错(符合 D3)。
|
||||
- 移除 rag-bar 后,UI 不再有“启用 RAG / 影响调查”按钮;RAG 开关语义暂不可用(当前本就无效),下一轮 RAG 落地时重新引入。
|
||||
- 自动上传无二次确认(符合 D1)。
|
||||
|
||||
---
|
||||
|
||||
## 评审结论与计划调整(plan-eng-review)
|
||||
|
||||
### 事实核对(Step 0)
|
||||
- 后端 `/files`:`file_type: str = Form(...)` + `file: UploadFile = File(...)`;`requirements` 允许,白名单 `(".xlsx",)`。✅
|
||||
- `updateUploadBar()` 定义 1 处 + 调用 5 处 + 上传分支内 1 处,删函数须清干净(漏调用 tsc 会报错)。✅
|
||||
- `.vh` 仅用于将被删的「上传类型」label。✅
|
||||
- 无测试引用将删的 id。✅
|
||||
|
||||
### 采纳
|
||||
- **F1(同类“上移”来源)**:`#rag-bar` 建会话后出现会使工具栏变高 → 一并处理:**移除 rag-bar**(DOM+JS)。影响调查改由聊天驱动(已有意图解析)。
|
||||
- **F2**:仅 `.xlsx`(与后端/解析一致);`accept` 仅过滤,`change` 再校验后缀。
|
||||
- **F3**:所有路径清空 `fileInputEl.value`(同文件再次可选)。
|
||||
- **F4**:清理上传相关死样式与 `.vh`。
|
||||
- **F7**:按钮补 `aria-label`。
|
||||
|
||||
### 接受
|
||||
- **F5**:会话内不再补传模板/规则 → 依赖项目配置(D3 结果)。
|
||||
- **F6**:新上传流为 DOM 行为,无自动化测试;靠 tsc + 手动。
|
||||
|
||||
## GSTACK REVIEW REPORT
|
||||
- STATUS: DONE
|
||||
- REVIEWED: docs/superpowers/plans/2026-09-12-requirements-upload.md
|
||||
- FINDINGS: F1 同类上移(已采纳:移除 rag-bar) / F2 扩展名(仅 .xlsx) / F3 重复选择(已纳入) / F4 死样式清理 / F7 aria;F5/F6 接受
|
||||
- KEY DECISION: 移除 rag-bar(影响调查由聊天驱动);会话内仅传 .xlsx 要件定义书,选定即上传
|
||||
- NEXT: 待执行
|
||||
Reference in New Issue
Block a user