Files
AIclinicalresearch/docs/03-业务模块/SSA-智能统计分析/06-开发记录/J技术报告审核评估与建议/QPER V3.0 架构审查与工程护航报告.md
HaHafeng 371e1c069c feat(ssa): Complete QPER architecture - Query, Planner, Execute, Reflection layers
Implement the full QPER intelligent analysis pipeline:

- Phase E+: Block-based standardization for all 7 R tools, DynamicReport renderer, Word export enhancement

- Phase Q: LLM intent parsing with dynamic Zod validation against real column names, ClarificationCard component, DataProfile is_id_like tagging

- Phase P: ConfigLoader with Zod schema validation and hot-reload API, DecisionTableService (4-dimension matching), FlowTemplateService with EPV protection, PlannedTrace audit output

- Phase R: ReflectionService with statistical slot injection, sensitivity analysis conflict rules, ConclusionReport with section reveal animation, conclusion caching API, graceful R error classification

End-to-end test: 40/40 passed across two complete analysis scenarios.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-21 18:15:53 +08:00

5.2 KiB
Raw Blame History

架构委员会独立审查报告SSA-Pro QPER 智能化主线 (V3.0)

审查对象: 《10-QPER架构开发计划-智能化主线.md》(v3.0)

审查时间: 2026-02-21

总体评级: 🌟 S+ 级 (极度卓越,可作为创业公司 AI Agent 标杆)

核心裁决: 绿灯放行Green Light。该计划完美融合了学术界前沿理论与极简工程实践准予立即进入编码攻坚阶段。

一、 为什么这份计划能拿 S+(三大高光决策)

  1. “断舍离”的顶级理解 (延后配置中台)
    在只有 10 个工具的 MVP 阶段,强行开发一套 Excel 导入和专家配置后台是极其浪费资源的。直接在 Node.js 中用 10 个静态 JSON 对象来充当“决策表”,把工时从 2 周压缩到了 2 天,极大地加速了核心引擎的验证。
  2. Q 层的结构化降维 (防幻觉槽位)
    让 IntentParser 只输出 goal, y, x, design 这四个核心维度,而不是直接输出统计方法。这彻底阻断了 LLM “瞎编统计方法”的可能,把智能体最容易出错的环节卡死了。
  3. 清晰的 5 大验收场景 (TDD 导向)
    文档最后给出的 5 个核心验收场景差异、相关、预测、描述、追问极其精准。这相当于给测试团队QA和 Prompt 工程师画好了靶子,开发不再是盲人摸象。

二、 必须预先防范的 3 个工程隐患 (Hidden Engineering Risks)

计划的宏观架构已经无懈可击,但在具体写 Node.js 代码时,请务必规避以下三个暗礁:

🚨 隐患 1DataProfiler 的“重复运算”与资源浪费

  • 设计现状:在 Q 层IntentParser -> DataProfiler -> Clarifier。
  • 物理现实DataProfiler 需要调用 Python 的 Tool C 去解析 20MB 的 CSV。如果用户在同一个会话里先问了“比较血压”触发一次 Profiler又接着问“那年龄呢又触发一次 Profiler会导致极大的延迟和服务器 CPU 浪费。
  • 架构强制要求 (Caching)
    必须在 Node.js 的 Session 级别实现 DataProfile 缓存
    用户上传文件后DataProfiler 只执行一次,并将结果(轻量级 Schema JSON存入 Redis 或内存 Session 中。后续的 Q 层循环直接读取缓存,实现毫秒级响应。

🚨 隐患 2QPER 的“异步状态机”面条代码风险 (Spaghetti Code)

  • 设计现状:系统存在 Clarifier (等用户回复) 和 Reflection (捕获异常重试) 两种中断/循环逻辑。
  • 物理现实:如果纯用 if-else 和嵌套 while 循环来写这种带“人机交互中断HITL”的工作流Node.js 代码会迅速劣化为难以维护的面条代码。
  • 架构强制要求 (State Machine)
    后端开发必须采用显式状态机 (Explicit State Machine) 来管理会话状态。定义一个标准的 ExecutionStatus 枚举:
    PENDING_INTENT -> CLARIFYING -> PLANNING -> EXECUTING -> REFLECTING -> COMPLETED。
    当状态为 CLARIFYING 时,立刻中断执行并向前端发送卡片,等待下一次 HTTP 请求恢复状态。

🚨 隐患 3UI 感知盲区 (The UX Blackhole during Reflection)

  • 设计现状R 层Reflection在后台捕获错误、修改参数、重新执行。
  • 物理现实:这个过程可能长达 15-20 秒。如果在双屏 V8 UI 上,用户只看到一个 Spinner 在转,他们会以为系统死机了。
  • 架构强制要求 (SSE Trace Streaming)
    Node.js 的编排器必须将 Q-P-E-R 的每一次状态跃迁,通过 SSE (Server-Sent Events) 推送给前端。
    前端必须能渲染出这样的日志
    [Executor] 正在计算 T 检验...
    [Executor] 失败:变量存在完全共线性。
    [Reflection] 🧠 AI 正在反思并修正分析计划...
    [Executor] 🔄 重新执行:已剔除共线变量...
    这种“展示 AI 工作和纠错过程 (Show your work)”的体验,是智能体产品的核心爽点。

三、 对 Prompt 工程师的战术指导

由于你们取消了配置中台,所有的智能压力都来到了 Prompt 工程师肩上。请遵循以下最佳实践:

  1. Prompt 文件化隔离
    千万不要把长达百行的 Prompt 用反引号 (``) 直接硬编码在 .ts 业务代码里!请在项目中建立一个 src/prompts/ 文件夹,将 Prompt 写在 .md 文件中(如 intent_parser.md利用 fs.readFileSync 运行时加载。这方便以后无缝迁移到数据库配置中心。
  2. Few-Shot 示例至高无上
    在 IntentParser 的 Prompt 中,不要花大量篇幅解释什么是“差异”,直接给它 10 个经典的医生问句和对应的 JSON 答案。在医疗统计领域10 个高质量的 Few-Shot胜过 1000 字的逻辑说教。

四、 结语

你们的 V3.0 计划展现了极高的业务理解力和工程克制力。你们没有被“大厂花哨的架构”带偏,而是用最务实的手段构建了最核心的智能壁垒。

请带着这份审查报告召开项目启动会Kick-off Meeting

让前端准备对接 SSE 状态流,让后端搭好状态机框架,让 R 工程师专注跑通工具。SSA-Pro 的第一场硬仗,可以开始了!