Files
AIclinicalresearch/backend/src/modules/dc/tool-c
HaHafeng 200eab5c2e feat(dc-tool-c): Tool C UX重大改进 - 列头筛选/行号/滚动条/全量数据
新功能
- 列头筛选:Excel风格筛选功能(Community版本,中文本地化,显示唯一值及计数)
- 行号列:添加固定行号列(#列头,灰色背景,左侧固定)
- 全量数据加载:不再限制50行预览,Session加载全量数据
- 全量数据返回:所有快速操作(筛选/映射/分箱/条件/删NA/计算/Pivot)全量返回结果

 Bug修复
- 滚动条终极修复:修改MainLayout为固定高度(h-screen + overflow-hidden),整个浏览器窗口无滚动条,只有AG Grid内部滚动
- 计算列全角字符修复:自动转换中文括号等全角字符为半角
- 计算列特殊字符列名修复:完善列别名机制,支持任意特殊字符列名

 UI优化
- 删除'表格仅展示前50行'提示条,减少干扰
- 筛选对话框美化:白色背景,圆角,阴影
- 列头筛选图标优化:清晰可见,易于点击

 文档更新
- 工具C_功能按钮开发计划_V1.0.md:添加V1.5版本记录
- 工具C_MVP开发_TODO清单.md:添加Day 8 UX优化内容
- 00-工具C当前状态与开发指南.md:更新进度为98%
- 00-模块当前状态与开发指南.md:更新DC模块状态
- 00-系统当前状态与开发指南.md:更新系统整体状态

 影响范围
- Python微服务:无修改
- Node.js后端:5处代码修改(SessionService + QuickActionController + AICodeService)
- 前端:MainLayout + DataGrid + ag-grid-custom.css + index.tsx
- 完成度:Tool C整体完成度提升至98%

 代码统计
- 修改文件:~15个文件
- 新增行数:~200行
- 修改行数:~150行

Co-authored-by: AI Assistant <assistant@example.com>
2025-12-10 18:02:42 +08:00
..

工具C (Tool C) - 科研数据编辑器

📁 项目结构

tool-c/
├── services/
│   └── PythonExecutorService.ts    # Python代码执行服务
├── controllers/
│   └── TestController.ts           # 测试控制器Day 1
├── routes/
│   └── index.ts                    # 路由定义
└── README.md                        # 本文件

⚙️ 环境变量配置

backend/.env 文件中添加以下配置:

# Python微服务地址
EXTRACTION_SERVICE_URL=http://localhost:8000

说明

  • 默认值:http://localhost:8000
  • Python微服务需要先启动才能使用工具C
  • 启动命令:cd extraction_service && .\venv\Scripts\activate && uvicorn main:app --host 0.0.0.0 --port 8000

🚀 API端点Day 1 测试)

1. 测试Python服务健康检查

GET /api/v1/dc/tool-c/test/health

响应

{
  "success": true,
  "message": "Python服务正常",
  "healthy": true
}

2. 测试代码验证

POST /api/v1/dc/tool-c/test/validate

请求体

{
  "code": "df['age_group'] = df['age'] > 60"
}

响应

{
  "success": true,
  "data": {
    "valid": true,
    "errors": [],
    "warnings": []
  }
}

3. 测试代码执行

POST /api/v1/dc/tool-c/test/execute

请求体

{
  "data": [
    {"age": 25},
    {"age": 65}
  ],
  "code": "df['old'] = df['age'] > 60"
}

响应

{
  "success": true,
  "data": {
    "success": true,
    "result_data": [
      {"age": 25, "old": false},
      {"age": 65, "old": true}
    ],
    "output": "",
    "error": null,
    "execution_time": 0.004,
    "result_shape": [2, 2]
  }
}

Day 1 完成情况

  • 创建Python微服务dc_executor.py
  • 添加AST安全检查
  • 实现Pandas代码执行
  • 创建FastAPI端点/api/dc/validate, /api/dc/execute
  • 创建Node.js服务PythonExecutorService.ts
  • 创建测试控制器和路由
  • 验证功能正常工作

📝 使用示例

启动Python微服务

cd extraction_service
.\venv\Scripts\activate
python main.py

启动Node.js后端

cd backend
npm run dev

测试API

# 1. 健康检查
curl http://localhost:3000/api/v1/dc/tool-c/test/health

# 2. 代码验证
curl -X POST http://localhost:3000/api/v1/dc/tool-c/test/validate \
  -H "Content-Type: application/json" \
  -d '{"code":"df[\"x\"] = 1"}'

# 3. 代码执行
curl -X POST http://localhost:3000/api/v1/dc/tool-c/test/execute \
  -H "Content-Type: application/json" \
  -d '{"data":[{"age":25},{"age":65}],"code":"df[\"old\"] = df[\"age\"] > 60"}'

🔐 安全特性

  • AST静态检查拦截危险模块导入os, sys, subprocess等
  • 超时保护代码执行超时30秒自动终止
  • 沙箱环境:限制可用的内置函数
  • 错误处理:完整的异常捕获和错误信息

📚 技术栈

  • Python后端: FastAPI + Pandas + AST
  • Node.js后端: Fastify + Axios + TypeScript
  • 通信方式: HTTP REST API
  • 数据格式: JSON

🎯 下一步Day 2

  • Session管理数据库 + OSS
  • 数据处理服务
  • AI代码生成服务LLMFactory集成
  • 前端基础框架搭建