feat(ssa): Complete T-test end-to-end testing with 9 bug fixes - Phase 1 core 85% complete. R service: missing value auto-filter. Backend: error handling, variable matching, dynamic filename. Frontend: module activation, session isolation, error propagation. Full flow verified.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-02-19 20:57:00 +08:00
parent 8137e3cde2
commit 49b5c37cb1
86 changed files with 21207 additions and 252 deletions

View File

@@ -0,0 +1,128 @@
# **专家视角:统计分析计划 (SAP) 的解构与配置映射**
**文档版本:** v1.0
**创建日期:** 2026-02-18
**核心议题:** 从医学统计专家的视角,重新定义 Planner 的规划逻辑与 Admin 的配置要素。
## **1\. 统计专家的“问诊”逻辑 (The Statistician's Mindset)**
当医生拿着数据来找我(统计专家)时,我脑子里的思维路径是这样的:
### **第一步:明确研究目的 (Objective)**
* **专家会问**:你是要描述现状?比较差异?探索关联?还是预测未来?
* **系统映射****意图识别配置**。
* *Config*: 关键词映射表("影响因素" \-\> 回归分析;"疗效对比" \-\> 差异检验)。
### **第二步:明确数据特征 (Data Characteristics)**
* **专家会问**你的结局变量Y是什么类型的连续/分类/生存时间你的分组变量X是几组数据是独立采样的还是同一个病人前后的对比配对
* **系统映射****变量角色定义**。
* *Config*: 工具的适用数据类型约束ST\_T\_TEST\_IND 要求 Y=Numeric, X=Categorical(2 levels), Design=Independent
### **第三步:制定分析策略 (Strategy)**
* **专家会想**:既然是比较两组连续变量,先看正态性。如果正态,用 T 检验;如果不正态,用 Wilcoxon。最后还要画个图直观展示。
* **系统映射****决策树与组合配置**。
* *Config*: 不仅仅配置“一个工具”,而是配置 **"标准分析流 (SOP)"**。
## **2\. 一份标准的 SAP 包括什么? (Anatomy of SAP)**
Planner 生成的不仅仅是一个 Tool Code而应该是一份完整的**作战地图**。
### **2.1 SAP 的核心要素**
1. **分析集定义 (Analysis Set)**:全分析集 (FAS) 还是符合方案集 (PPS)MVP 阶段默认全数据)。
2. **变量操作 (Data Manipulation)**:需要计算 BMI 吗?需要把年龄分段吗?
3. **描述性统计 (Descriptive)**:基线表怎么做?(连续变量算 Mean±SD分类变量算 N(%))。
4. **推断性统计 (Inference)**:核心假设检验方法(方法论 \+ 假设前提)。
5. **图表规划 (Visualization)**:用什么图展示结果最直观?
### **2.2 我们的 Planner 应该输出什么?**
用户看到的“预习卡片”,本质上就是 SAP 的摘要版:
**🎯 统计分析计划**
1. **研究假设**:男性与女性的血糖水平存在差异。
2. **数据清洗**:剔除 GLU 为空的样本;自动计算 BMI \= Weight/Height^2。
3. **统计方法**
* 优先使用 **独立样本 T 检验**
* **前置条件**需满足正态性Shapiro-Wilk P \> 0.05)。
* **替代方案**:若不满足,转为 **Mann-Whitney U 检验**
4. **图表展示**:分组箱线图 (Boxplot) 叠加散点。
## **3\. 这种视角下,后台需要配置什么? (Config Requirements)**
我们要配置的不是“API 参数”,而是\*\*“统计学家的知识图谱”\*\*。我们需要在 Excel 中增加这几列:
### **3.1 决策逻辑配置 (Decision Logic)**
这是 Planner 的核心。专家需要定义:
| 配置项 | 含义 | 示例 (T检验) |
| :---- | :---- | :---- |
| **Goal\_Type** | 分析目的 | Difference (差异比较) |
| **Y\_Type** | 因变量类型 | Continuous (连续数值) |
| **X\_Type** | 自变量类型 | Categorical\_2 (二分类) |
| **Design\_Type** | 设计类型 | Independent (独立) |
| **Pre\_Conditions** | 前置假设 | Normality, Homogeneity |
**Planner 的逻辑**
用户输入 \-\> 提取 (Goal, X, Y) \-\> **查配置表匹配** \-\> 命中 ST\_T\_TEST\_IND。
### **3.2 完整分析流配置 (Analysis Flow)**
一个工具往往伴随着一套动作。专家需要定义“套餐”:
| 配置项 | 含义 | 示例 |
| :---- | :---- | :---- |
| **Main\_Method** | 主方法 | t.test |
| **Desc\_Method** | 描述方法 | mean\_sd (均值标准差) |
| **Plot\_Type** | 推荐图表 | boxplot \+ jitter |
| **Alt\_Method** | 替代方法 | wilcox.test (非参数) |
### **3.3 结果解读模板 (Narrative Template)**
专家要教 AI 怎么写论文里的“结果”部分。
* **配置内容**
"本研究共纳入 {{n}} 例样本。{{group\_col}} 各组间 {{val\_col}} 的差异 {{significance}} (t={{statistic}}, P={{p\_value}})。如图 1 所示,{{high\_group}} 的数值显著高于 {{low\_group}}。"
## **4\. 对架构的深层影响**
您的质疑直接推动了 **Config Center (配置中台)** 的升维。
1. **Planner 变重了**:它不能只做简单的 RAG 检索。它需要内置一个**轻量级的推理机**(基于专家配置的决策表),来模拟专家“看病”的过程。
2. **Executor 变纯粹了**:它只需要忠实地执行 SAP 中的指令(包括主方法、替代方法、画图)。
3. **Excel 配置表变复杂了**:我们需要设计一个更结构化的 Excel让专家能把这些逻辑填进去。
### **新版 Excel 配置结构预览**
**Sheet: Knowledge\_Graph (知识图谱)**
* Scenario\_ID: 场景代码 (如 DIFF\_NUM\_2GRP\_IND)
* User\_Intent: 用户意图 (差异比较)
* Data\_Pattern: 数据特征 (Y=数值, X=2分类, 独立)
* Rec\_Tool\_Code: 推荐工具 (ST\_T\_TEST\_IND)
**Sheet: Tool\_Definition (工具定义)**
* Tool\_Code: ST\_T\_TEST\_IND
* Workflow: \[Check\_Normality, Check\_Variance, Run\_Test, Plot\_Box\] (定义一连串动作)
* Report\_Template: 结果解释模板...
## **5\. 总结**
您是对的。**统计分析规划Planner的核心不是“检索”而是“匹配”和“决策”。**
我们需要了解用户的:
1. **目的** (差异/相关/预测)
2. **变量类型** (数值/分类/等级)
3. **实验设计** (独立/配对/随访)
**我们的系统配置,必须围绕这三个维度展开。** 只有这样SSA-Pro 才能生成一份让医生信服的 SAP而不仅仅是扔给用户一个 T 检验代码。

View File

@@ -0,0 +1,120 @@
# **SSA-Executor 专家配置要素清单 (Configuration Specs)**
**文档版本:** v1.0
**创建日期:** 2026-02-18
**核心目标:** 定义统计专家需要在“配置中心”为每个 R 工具录入的详细信息。
**隐喻:** 如果 R 代码是“药方”,这个配置单就是“药品说明书”。
## **1\. 基础元数据 (Identity)**
*给这个 R 脚本一个系统内唯一的身份。*
| 配置项 | 说明 | 示例 |
| :---- | :---- | :---- |
| **Tool Code** | 唯一标识符 (Primary Key) | ST\_T\_TEST\_IND |
| **Tool Name** | 显示名称 | 独立样本 T 检验 |
| **Version** | 版本号 | v1.0.2 (用于回滚) |
| **R Script File** | **上传文件** | t\_test\_ind.R (专家直接上传脚本) |
| **Entry Function** | 入口函数名 | run\_analysis |
## **2\. 输入参数映射 (Input Contract)**
*告诉 Executor这个 R 脚本需要什么原料?*
| 参数名 (JSON Key) | R 函数参数名 | 数据类型 | 校验规则 (Validator) | 默认值 |
| :---- | :---- | :---- | :---- | :---- |
| group\_col | group\_var | String | Must be column name | \- |
| val\_col | value\_var | String | Must be numeric column | \- |
| conf\_level | conf\_level | Float | 0.90 \- 0.99 | 0.95 |
| alternative | alt | String | "two.sided", "less", "greater" | "two.sided" |
## **3\. 统计护栏配置 (Guardrails Config) ⭐ 核心**
*告诉 Executor在跑核心代码前先做什么体检*
**配置模式:** 规则链 (Rule Chain)
1. **检查项 (Check)**: Shapiro-Wilk Normality Test
* **目标变量**: val\_col (按 group\_col 分组)
* **阈值 (Threshold)**: P \< 0.05
* **失败动作 (Action)**:
* \[ \] **Block**: 报错并终止 ("数据不正态,无法计算")
* \[ \] **Warn**: 继续执行,但在结果中标记警告
* \[x\] **Switch**: 自动切换到工具 ST\_WILCOXON (非参数检验)
2. **检查项 (Check)**: Sample Size
* **规则**: Min(N) \< 3
* **失败动作**: **Block** ("样本量太少,无法计算")
## **4\. 输出结果定义 (Output Definition)**
*告诉 Executor跑完代码后要给用户看什么*
### **4.1 结构化数据 (Table)**
定义返回的三线表里包含哪些指标。
* **指标 1**: Statistic (t值 / F值)
* **指标 2**: P-Value (保留 3 位小数,\<0.001 显示为 "\<0.001")
* **指标 3**: Mean ± SD (描述性统计)
* **指标 4**: CI (95%) (置信区间)
### **4.2 图表配置 (Visualization)**
定义 R 脚本生成的图表规范ggplot2 模板)。
* **图表类型**: Boxplot with Jitter (箱线图+散点)
* **X 轴映射**: group\_col
* **Y 轴映射**: val\_col
* **配色方案**: Nature / Lancet (期刊风格)
* **其它元素**: 是否标注 P 值?(Yes/No)
### **4.3 智能解读模板 (Narrative Template)**
这是给 AI (Critic) 参考的“填空题”,或者是 R 直接生成的结论。
* **模板**:"本研究纳入 {{N}} 例样本。{{group\_col}} 各组间 {{val\_col}} 的差异 **{{significance\_text}}** (t={{statistic}}, P={{p\_value}})。具体而言,{{high\_group}} 的均值 ({{mean\_1}}) 显著高于 {{low\_group}} ({{mean\_2}})。"
## **5\. 代码交付配置 (Code Handover)**
*告诉 Executor用户点击“下载代码”时给他什么*
这是一个 **glue 字符串模板**,用于生成可复现的 R 代码。
\# 模板示例
library(ggplot2)
library(stats)
\# 1\. 读取数据
data \<- read.csv("your\_data.csv")
\# 2\. 统计检验
res \<- t.test({{val\_col}} \~ {{group\_col}}, data=data, var.equal={{var\_equal}})
print(res)
\# 3\. 绘图
ggplot(data, aes(x={{group\_col}}, y={{val\_col}})) \+
geom\_boxplot(fill="\#3C5488") \+
theme\_bw() \+
labs(title="Difference Analysis")
## **6\. 环境依赖 (Dependencies)**
*告诉 Executor运行这个脚本需要装什么包*
* **Packages**: ggplot2, dplyr, car, ggpubr
* **System Libs**: libcairo2 (如果涉及特殊绘图)
## **7\. 总结:专家的工作流**
统计学专家在“配置中心”要做的事情就是:
1. **上传** 写好的 t\_test.R。
2. **勾选** 这个脚本需要的输入参数(列名)。
3. **设置** 护栏P \< 0.05 切换 Wilcoxon
4. **粘贴** 代码模板(供用户下载)。
5. **预览** 这一套配置是否能跑通测试数据。
**这才是真正的“专家协同”。**

View File

@@ -0,0 +1,228 @@
# **PRD: SSA-Pro 智能统计分析 (v2.0 双引擎架构版)**
**文档状态:** v2.1 (Optimized for User Scenarios)
**发布日期:** 2026-02-18
**文档密级:** 内部绝密
**核心变更:** \> 1\. 重构业务流程,确立“智能分析(混合模式)”为主流程。
2\. 明确“执行模式”为“标准化复用”场景,而非手动填参。
3\. 强化“专家配置”在架构中的核心地位。
## **1\. 核心变革说明 (Executive Summary)**
**致研发团队:为什么要进行这次架构升级?**
经过前几轮的技术验证与业务推演,我们发现原有的“上传-\>规划-\>执行”一条龙模式存在两个致命的业务死角:
1. **用户意图模糊**:用户往往不知道自己要做什么(如“帮我分析一下”),直接跑代码会报错或产生无意义结果。
2. **统计专家缺位**:护栏规则硬编码在代码里,统计专家无法维护,导致系统缺乏“灵魂”。
因此,我们将架构解耦为**两个独立子系统**,通过编排满足不同场景:
* **Planner大脑**:负责陪聊、澄清意图、生成方案。**(独立上线,无需数据)**
* **Executor四肢**:负责接收明确指令、跑数、出结果。**(复用之前的 R 开发成果)**
**架构拆分与用户体验的关系:**
架构上的拆分Planner/Executor是为了技术上的解耦和复用但在用户体验端对于最常见的“智能分析”场景我们将这两者**无缝串联**,给用户提供“一站式”体验。
## **2\. 研发背景与业务价值**
### **2.1 用户真实痛点**
* **场景 A (无数据)**:医生在写基金本子,还没收病人,但他急需一份《统计学分析计划书》来填表。原方案不支持此场景。
* **场景 B (数据脏)**:医生上传的 Excel 列名全是中文,且有特殊字符。原方案直接跑 R 会崩溃。
* **场景 C (隐私顾虑)**:医生不敢把数据上传到云端,但又想知道该用什么统计方法。
### **2.2 产品解决方案:双引擎 \+ 配置中台**
1. **独立咨询 (SSA-Planner)**:无需上传数据,通过多轮对话澄清意图,输出专业的 SAP (分析计划)。
2. **独立计算 (SSA-Executor)**:用户确认方案后,再上传数据,一键执行计算,交付代码。
3. **专家协同 (Config Center)**:统计专家通过 Excel 配置规则,系统动态加载,不再硬编码。
### **2.3 商业价值**
* **降低门槛**:用户不用传数据就能体验 AI 能力Planner极大地提高了转化率。
* **数据安全**:实现了逻辑(云端)与数据(本地/隔离)的彻底解耦。
## **3\. 系统架构与模块定义**
### **3.1 总体架构图**
graph TD
subgraph "用户触点"
Chat\[前端 Chat 界面\]
end
subgraph "Module A: 智能规划师 (SSA-Planner)"
Intent\[意图识别引擎\]
Clarify\[澄清引导模块\]
GenSAP\[SAP 生成模块\]
end
subgraph "Module B: 智能执行器 (SSA-Executor)"
API\[Executor API\]
R\_Core\[R Docker 容器\]
Guard\[统计护栏\]
end
subgraph "Module C: 统计配置中台 (Admin)"
Meta\[元数据管理\]
Rules\[规则引擎\]
Templates\[代码模板\]
end
Chat \--"1. 咨询/方案"--\> Intent
Intent \<--\> Clarify
Intent \--\> GenSAP
Chat \--"2. 执行/计算"--\> API
API \--\> R\_Core
Meta \-.-\> Intent
Rules \-.-\> Guard
### **3.2 模块功能详述**
#### **🧩 模块 ASSA-Planner (智能规划师)**
* **定位**:纯 NLP 应用,不涉及 R 计算。
* **输入**:自然语言 \+ (可选) 数据 Schema。
* **核心能力**
* **意图澄清**:当用户指令模糊时,主动反问("您是想做差异分析还是相关性分析?")。
* **方案生成**:检索 RAG 库,生成结构化的 JSON 计划和 Markdown 报告。
* **交付物**:《统计分析计划书》 (PDF/Word)。
#### **🧩 模块 BSSA-Executor (智能执行器)**
* **定位**:纯计算服务,无状态 API。
* **输入**skill\_code \+ params \+ data\_source。
* **核心能力**
* **混合数据加载**:支持 JSON 和 OSS 数据源。
* **护栏检查**:执行正态性、方差齐性检查。
* **结果交付**生成三线表、高清图、R 源码。
* **技术备注****这部分完全复用原 V1.3 计划中的 R 服务开发内容。**
* **注意**Executor 无法直接处理用户的自然语言。必须经由 Planner 将自然语言转化为结构化参数后,才能被调用。
#### **🧩 模块 C统计配置中台 (Config Center)**
* **定位**:专家知识注入入口。
* **MVP 实现****Excel 导入工具**。
* **配置内容**
* 工具定义Name, Desc, Usage
* 护栏阈值P \< 0.05)。
* R 代码模板Glue Template
## **4\. 核心业务流程 (User Journey)**
### **流程一:智能分析模式 (Intelligent Analysis Mode) \- ⭐ 最常见场景**
**场景**:用户有数据,有模糊的意图(如“帮我对比一下差异”),希望一站式出结果。
**架构逻辑**:串联调用 Planner \-\> Executor。
1. **用户**:上传 data.csv 并输入:“帮我对比一下吸烟组和非吸烟组的体重差异”。
2. **Planner**(后台隐形介入):
* 读取 Data Schema识别出 Group 和 Weight 列。
* 理解用户意图("对比差异"),结合变量类型(二分类 vs 连续),推荐“独立样本 T 检验”。
* 生成 Executor 能听懂的 JSON 参数。
3. **交互**:系统弹出 **\[ 方案确认卡片 \]**(由 Planner 生成)。
* *设计意图*:给用户一种“专家先审视,再执行”的安全感。
4. **用户**:点击 **\[ 确认并执行 \]**。
5. **Executor**:接收 Planner 的 JSON \-\> 跑 R 代码 \-\> 返回结果。
6. **用户**:获得结果。
### **流程二:纯咨询模式 (Consultation Mode) \- 科研设计场景**
**场景**:用户还没收集数据(无数据),在写开题报告或基金标书,需要设计统计方案。
**架构逻辑**:仅调用 Planner。
1. **用户**:“我想研究阿司匹林对心血管事件的影响,该怎么设计统计?”
2. **Planner**:检索知识库,生成《统计分析计划书 (SAP)》。
* 包含研究假设、变量定义、推荐方法Cox 回归)、样本量估算建议。
3. **用户**:下载 SAP 文档。**(流程结束)**
### **流程三:标准化复用模式 (Standardized Reuse Mode) \- 专家/高阶场景**
**场景**
1. **复用**:上周生成了一个完美的 SAP这周新数据来了直接套用不想再跟 AI 废话。
2. **专家下发**:科室主任定义好了标准分析流程,存为模板,研究生直接上传数据运行。
**架构逻辑**:跳过 Planner 推理,直接调用 Executor。
1. **用户**:上传 new\_data.csv并从“我的方案库”中选择“肺癌生存分析标准模板”或加载之前的 SAP ID
2. **系统**自动校验新数据是否符合模板要求的列名Schema Check
3. **Executor**:直接读取模板参数 \-\> 跑数 \-\> 出结果。
4. **用户**:下载结果。
## **5\. 接口与数据协议 (Schema)**
### **5.1 Planner 输出协议 (Plan JSON)**
这是连接 Planner 和 Executor 的契约。
{
"analysis\_id": "uuid",
"tool\_code": "ST\_T\_TEST\_IND",
"reasoning": "因变量为连续数值,自变量为二分类...",
"params": {
"group\_col": "Gender",
"val\_col": "BMI",
"conf\_level": 0.95
},
"guardrails": {
"check\_normality": true,
"action\_on\_fail": "switch\_to\_wilcoxon"
}
}
## **6\. 实施路线图 (Updated Roadmap)**
基于新架构,我们将开发顺序调整为 **“Planner 先行Executor 并行”**。
### **Phase 1: 智能规划师上线 (Week 1-2)**
* **目标**:上线“统计咨询 Chatbot”。
* **后端**:开发 Excel 配置导入脚本;开发 Planner Service (DeepSeek)。
* **前端**:开发咨询模式 UI。
* **专家**:整理 Top 10 工具的 Excel 配置。
* *注:此阶段不需要 R 服务参与。*
### **Phase 2: 执行器与联调 (Week 3-4)**
* **目标**:打通计算闭环。
* **R 团队**:完成 Docker 封装、数据加载器 (Data Loader)、T 检验 Wrapper。
* **后端**:对接 R API透传 Planner 的参数。
* **前端**:开发结果展示卡片。
### **Phase 3: 量产与优化 (Week 5+)**
* **目标**:覆盖更多工具。
* **R 团队**:批量复制开发剩余 9 个工具。
* **专家**:持续优化配置 Excel。
## **7\. 风险与应对**
| **风险点** | **影响** | **应对策略** |
| **Planner 瞎指挥** | 生成的参数 Executor 无法执行 | 引入 **Zod Schema 强校验**,参数不合法直接让 AI 重试。 |
| **数据列名不匹配** | R 代码报错 "Column not found" | 在 Executor 入口增加 **模糊匹配/同义词映射** 逻辑。 |
| **专家配置进度慢** | 阻塞 Planner 上线 | 提供标准模板,先配 1 个工具T检验跑通全流程。 |
## **8\. 结语**
这次架构调整不是推翻过去,而是**升维**。
我们保留了最核心的 **R 计算引擎 (Executor)**,它是我们的硬实力;
我们剥离出了 **AI 规划师 (Planner)**,它是我们的软实力;
我们引入了 **配置中台**,它是我们的护城河。
请大家基于此文档,放心开工。

View File

@@ -0,0 +1,57 @@
# **SSA-Pro 架构一致性与调整分析报告**
**分析对象:** PRD V2.0 "智能分析模式" vs. V1.3 开发计划套件 (5文档)
**分析结论:** **核心逻辑完全一致,无需重构,仅需解耦接口。**
## **1\. 核心结论:我们绕弯路了吗?**
**没有。我们只是把“隐性”的逻辑“显性化”了。**
* **V1.3 计划(原计划)**:设计了一个“串联”系统。
* 逻辑:用户上传 \-\> 系统规划(Planner) \-\> 系统执行(Executor) \-\> 结果
* **现状**:这正是 PRD V2.0 中的 **“流程一:智能分析模式”**。这是用户 90% 的使用场景。
* **V2.0 架构(新概念)**:提出了“双引擎”概念。
* 逻辑:把上述串联系统中的 规划 和 执行 两个步骤,定义为两个可以**独立调用**的模块。
**结论:**
**V1.3 的开发计划代码、Docker、数据库依然是 100% 可用的基础。** 我们不需要推翻它,只需要在写代码时,注意把 Planner 和 Executor 的代码写在不同的 Service 文件里,不要写死在一个大函数里即可。
## **2\. 详细对比与复用策略**
我们来看之前的 5 个文档,看看哪些可以直接用,哪些需要微调。
| 原文档 | V1.3 内容 | V2.0 架构要求 | 调整建议 |
| :---- | :---- | :---- | :---- |
| **02-R服务开发指南** | 定义了 R Docker、Wrapper、护栏、混合数据协议。 | 需要一个独立的计算引擎。 | **无需调整 (0%)**。 R 服务本身就是 Executor它生来就是被调用的不关心是谁调用的。 |
| **03-后端开发指南** | 定义了 RClientService (执行) 和 PlannerService (规划)。 | 需要 Planner 和 Executor 解耦。 | **微调接口 (10%)**。 原计划中可能有一个 runAnalysis() 函数把两步连起来写了。**调整为:** 写两个函数 plan() 和 execute(),然后在 Controller 层串联它们。 |
| **04-前端开发指南** | 定义了 PlanCard, ExecutionTree, ResultCard。 | 需要支持“咨询模式”和“执行模式”。 | **微调路由 (10%)**。 增加一个 /consult 页面(复用 Chat 组件。PlanCard 增加一个“仅下载方案”的按钮。 |
| **00/01 计划任务** | 定义了开发里程碑。 | 强调 Planner 先行。 | **无需调整**。 原计划也是先做 RAG/Planner再做 Executor。顺序本就一致。 |
## **3\. 为什么“双引擎”概念依然重要?(即使流程没变)**
既然流程一样,为什么还要提“双引擎”?是为了解决 **边界情况Corner Cases**
1. **无数据咨询 (The "No-Data" Problem)**
* 如果按照旧的 V1.3 思维,代码可能会写成 if (\!file) throw Error("请上传文件")。
* 引入“双引擎”概念后,后端代码会写成 if (\!file) return PlannerService.consult()。
* **这就是唯一的区别:允许 Planner 独立工作。**
2. **专家配置 (The "Config" Problem)**
* V1.3 计划里,工具的 Prompt 可能是写死在代码里的。
* V2.0 强调配置中心,提醒我们把 Prompt 放到数据库里,让专家能改。
## **4\. 最终执行建议:如何使用现有的 5 个文档?**
**请直接使用之前的 5 个文档进行开发,但在实施时遵循以下 3 条“解耦原则”:**
1. **后端开发原则**
* 不要把 Planner 的逻辑和 Executor 的逻辑混在一个 Class 里。请创建 src/modules/ssa/planner/ 和 src/modules/ssa/executor/ 两个文件夹。
2. **前端开发原则**
* 不要假设用户一定上传了文件。Chat 界面初始化时,允许 file 为空。
3. **专家配置原则**
* 按原计划优先使用 **Excel** 导入配置。这是最快落地的方案,不需要改架构。
**一句话总结:**
**架构不需要大改。V1.3 的开发计划是稳健的。所谓的“架构调整”,只是要求开发人员在写代码时,“手起刀落”把逻辑拆得更干净一点,方便未来复用,仅此而已。**