fix(chat): 前端审计修复——预览契约改HTML/状态机统一/进度错误持久化/chat_state.js抽取
- app.py: /result/preview 返回渲染 HTML(HTMLResponse) 而非 {html} JSON;新增 /chat_state.js 静态路由;预览缺失返回 404(RESULT_NOT_FOUND)
- chat.html: currentProject 统一为 draftProject;新会话继承已选项目(§4.2);上传区显隐/类型映射/抽屉脏检测改用 GenesisState;loadSession 按 role 渲染 progress/error;加 h1 标题
- chat_state.js(新): 抽取 autoBindProject/shouldHideUploadSelect/resolveUploadType/computeDrawerSnapshot/isDrawerDirty/buildWelcome 纯函数(U+1 分隔符)
- agent.py: 新增 _persist_progress/_store_error,进度与错误以 role 入库(重载可见)
- 测试: test_chat_state.js(11 passed) + test_frontend_audit_fixes.py(5) + 修正 test_server_api 旧 JSON 契约断言;全量 pytest 568 passed / 99.06%
This commit is contained in:
@@ -95,7 +95,8 @@ def test_full_flow_http(tmp_path):
|
||||
|
||||
prev = client.get(f"/api/sessions/{sid}/result/preview")
|
||||
assert prev.status_code == 200
|
||||
assert "html" in prev.json()
|
||||
assert "text/html" in prev.headers["content-type"]
|
||||
assert prev.text.lstrip().lower().startswith("<!doctype html>")
|
||||
|
||||
dl = client.get(f"/api/sessions/{sid}/result/download")
|
||||
assert dl.status_code == 200
|
||||
|
||||
Reference in New Issue
Block a user