跳转至

验证地图

本页把项目文档中的关键规则与现有测试对应起来。历史测试数量、耗时和样本演示不再累加保留;Git 历史已经保存这些过程。

现有覆盖

用例 被固定的规则与否定情形 证据 状态
配置与路径 未知字段、越界路径、重叠安装目录和非布尔开关必须拒绝 test_config.py 已有自动测试
单篇论文输入 候选选择、个人/群组、父条目/附件、缺失或重复 PDF、未索引全文 test_paper_input.py 已有自动测试
PDF 门禁与交付 缺失、过小、无可用文本、身份变化和越界文件不得进入制卡 test_pdf_gate.py、test_pdf_delivery.py、test_pdf_sandbox.py 已有自动测试
证据卡模板 九类模板的来源、版本、front matter 和内容指纹必须一致 test_evidence_templates.py 已有自动测试
单 Agent 制卡 来源错误、空输出、非法模板、重复生成和人工改动必须停止保存 test_ai_config.py、test_card_draft.py、test_card_generation.py、test_card_saving.py、test_single_agent.py 已有自动测试
模型适配器 Claude 只读回执、Codex 本地 PDF 读取、代理与连接保护 test_claude_cli.py、test_codex_local_pdf.py、test_codex_proxy.py、test_connection_guard.py、test_codex_text.py 已有自动测试
主体卡校验门禁 最低内容、来源和版本绑定、旧 PASS 失效、失败不能进入主题输入 test_card_validation.py 已有自动测试
候选主题池 CREATE / UPDATE / MERGE / SPLIT 的来源、编号、血缘和原子发布必须保持,旧粗卡不得被修改 test_themes.py、test_theme_pool.py 已有自动测试
任务与保存完整性 完成必须以内容与来源记录为准,不得只凭目录或任务标记;已有卡不得被覆盖 test_tasks.py、test_completion_records.py、test_evidence_packages.py 已有自动测试
模型预检与进度 Zotero/模型预检失败可定位,进度心跳不泄漏凭据 test_preflight.py、test_progress.py 已有自动测试
仓库结构 代码、模板、文档和忽略的科研产物保持预期边界 tests/test_repo_structure.py 已有自动测试

这些测试主要使用模拟供应者、临时目录和隔离配置。它们证明工程边界和失败保护,不证明模型理解论文正确或主题具有科学价值。

提议测试

优先级 测试类型 场景 预期结果
P0 自动集成 正式主题建立、改名、合并、拆分和归档 没有人员、时间、理由和来源候选时拒绝;历史 ID 不丢失
P0 自动集成 卡片—主题关系审核 自动化只能创建 proposed,只有人工动作能转为 confirmed
P1 受控真实验证 干净 Windows 机器安装、登录和恢复 仅依赖 Git 可复现资产、Zotero 和 Git 外产物备份即可恢复
P1 受控真实验证 PDF 仍在云端同步、Zotero 从未登录或 CLI 账号失效 系统显示可操作阻塞,不产生空卡或无限重试
P1 人工科研评审 从多类文献抽样复核 Claim、数字、图表和结论边界 记录准确性、严重错误和模板类型差异,不把工程测试当作科学验证

当前缺口

  • 没有 Obsidian Adapter、人工主题决定命令、卡片—主题关系库或 idea 模块,因此不存在相应实现测试。
  • 现有自动测试不验证证据卡的科学正确性、候选主题的研究价值或 idea 创新性。
  • 尚未完成干净异机、真实关机/重新登录、云端 PDF 延迟和大规模语料的端到端验收。
  • 当前没有 CI 合并门禁;本地测试通过不会自动阻止未验证变更合入主分支。

运行命令

# 文档站与链接
uv run mkdocs build --strict

# 平台自动测试
uv run pytest tests

# 两个科研 Skill 的独立自测
uv run python skills/hydrology-evidence-cards/tests/self_test.py
uv run python skills/hydrology-theme-synthesis/tests/self_test.py

仓库根的全量 uv run pytest 还包含依赖本机 Zotero 在线及特定样本的集成测试(如 tests/test_zotero_local_api_integration.py);这类测试可能因本地库不同而失败,不能与平台单元测试混为一谈。