feat(web): 项目级配置 + 会话命名/历史 + 设计文档纳入影响调查

- 会话支持 name/project 字段,上传要件定义后自动命名;前端侧边栏会话历史 + localStorage 恢复,顶部只显示会话名
- 新增 ProjectsStore(SQLite)与 /api/projects CRUD;绑定项目后 _rebuild_source 合并模板/规则/代码库/设计文档,上传区仅要件定义
- StructuredSource.design_docs 与 ImpactReport.design_references;影响调查新增既有设计文档确定性交叉引用(无 LLM)
- 同步更新 docs/design.md §12.7、README、_AI_USAGE_LOG.md;全量测试 558 通过,覆盖率 99.10%
This commit is contained in:
lhl
2026-08-27 12:13:28 +08:00
parent 838a93720e
commit 916c5beed7
18 changed files with 1174 additions and 65 deletions
+8
View File
@@ -54,6 +54,14 @@ def test_parse_missing_requirement_file(tmp_path):
SourceParser().parse(requirement_paths=[tmp_path / "missing.xlsx"])
def test_parse_design_docs_collected_as_design_category(tmp_path):
xlsx = _xlsx(tmp_path)
design = make_rule_doc(tmp_path, [("H1", "設計書:注文管理の全体方針")])
result = SourceParser().parse(requirement_paths=[xlsx], design_doc_paths=[design])
assert len(result.design_docs) == 1
assert result.design_docs[0].category == "design"
def test_parse_missing_template_file(tmp_path):
xlsx = _xlsx(tmp_path)
with pytest.raises(FileNotFoundError):