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>
69 lines
5.2 KiB
Markdown
69 lines
5.2 KiB
Markdown
# **架构委员会独立审查报告: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 代码时,请务必规避以下三个暗礁:
|
||
|
||
### **🚨 隐患 1:DataProfiler 的“重复运算”与资源浪费**
|
||
|
||
* **设计现状**:在 Q 层,IntentParser \-\> DataProfiler \-\> Clarifier。
|
||
* **物理现实**:DataProfiler 需要调用 Python 的 Tool C 去解析 20MB 的 CSV。如果用户在同一个会话里,先问了“比较血压”(触发一次 Profiler),又接着问“那年龄呢?”(又触发一次 Profiler),会导致极大的延迟和服务器 CPU 浪费。
|
||
* **架构强制要求 (Caching)**:
|
||
必须在 Node.js 的 Session 级别实现 **DataProfile 缓存**。
|
||
用户上传文件后,DataProfiler **只执行一次**,并将结果(轻量级 Schema JSON)存入 Redis 或内存 Session 中。后续的 Q 层循环直接读取缓存,实现毫秒级响应。
|
||
|
||
### **🚨 隐患 2:QPER 的“异步状态机”面条代码风险 (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 请求恢复状态。
|
||
|
||
### **🚨 隐患 3:UI 感知盲区 (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 的第一场硬仗,可以开始了!** |