feat(admin): Add user management and upgrade to module permission system
Features - User Management (Phase 4.1): - Database: Add user_modules table for fine-grained module permissions - Database: Add 4 user permissions (view/create/edit/delete) to role_permissions - Backend: UserService (780 lines) - CRUD with tenant isolation - Backend: UserController + UserRoutes (648 lines) - 13 API endpoints - Backend: Batch import users from Excel - Frontend: UserListPage (412 lines) - list/filter/search/pagination - Frontend: UserFormPage (341 lines) - create/edit with module config - Frontend: UserDetailPage (393 lines) - details/tenant/module management - Frontend: 3 modal components (592 lines) - import/assign/configure - API: GET/POST/PUT/DELETE /api/admin/users/* endpoints Architecture Upgrade - Module Permission System: - Backend: Add getUserModules() method in auth.service - Backend: Login API returns modules array in user object - Frontend: AuthContext adds hasModule() method - Frontend: Navigation filters modules based on user.modules - Frontend: RouteGuard checks requiredModule instead of requiredVersion - Frontend: Remove deprecated version-based permission system - UX: Only show accessible modules in navigation (clean UI) - UX: Smart redirect after login (avoid 403 for regular users) Fixes: - Fix UTF-8 encoding corruption in ~100 docs files - Fix pageSize type conversion in userService (String to Number) - Fix authUser undefined error in TopNavigation - Fix login redirect logic with role-based access check - Update Git commit guidelines v1.2 with UTF-8 safety rules Database Changes: - CREATE TABLE user_modules (user_id, tenant_id, module_code, is_enabled) - ADD UNIQUE CONSTRAINT (user_id, tenant_id, module_code) - INSERT 4 permissions + role assignments - UPDATE PUBLIC tenant with 8 module subscriptions Technical: - Backend: 5 new files (~2400 lines) - Frontend: 10 new files (~2500 lines) - Docs: 1 development record + 2 status updates + 1 guideline update - Total: ~4900 lines of code Status: User management 100% complete, module permission system operational
This commit is contained in:
@@ -1,22 +1,22 @@
|
||||
# ASL妯″潡寮€鍙?- 2025-11-18 宸ヤ綔鎬荤粨
|
||||
# ASL模块开发 - 2025-11-18 工作总结
|
||||
|
||||
**日期**: 2025-11-18
|
||||
**工作时长**: 全天
|
||||
**寮€鍙戦樁娈?*: MVP - Prompt璁捐<EFBFBD>涓庝紭鍖?
|
||||
**开发阶段**: MVP - Prompt设计与优化
|
||||
|
||||
---
|
||||
|
||||
## 🎯 今日目标
|
||||
|
||||
鏍规嵁鐢ㄦ埛鎻愬嚭鐨勪袱涓<EFBFBD>叧閿<EFBFBD>棶棰橈紝杩涜<EFBFBD>绯荤粺鎬ф祴璇曞拰浼樺寲锛?
|
||||
1. **绗?姝?*: 娴嬭瘯鍥藉唴澶栨ā鍨嬪樊寮傦紝纭<E7B49D>畾鏄<E795BE>ā鍨嬭兘鍔涜繕鏄疨rompt闂<EFBFBD><EFBFBD>
|
||||
2. **绗?姝?*: 娴嬭瘯瀹芥澗/鏍囧噯/涓ユ牸涓夌<E6B693>绛涢€夐<E282AC>鏍硷紝鎵惧埌鏈€浣崇瓥鐣?
|
||||
根据用户提出的两个关键问题,进行系统性测试和优化:
|
||||
1. **第1步**: 测试国内外模型差异,确定是模型能力还是Prompt问题
|
||||
2. **第2步**: 测试宽松/标准/严格三种筛选风格,找到最佳策略
|
||||
|
||||
---
|
||||
|
||||
## 鉁?瀹屾垚鎴愭灉
|
||||
## ✅ 完成成果
|
||||
|
||||
### 1. 鍥藉唴澶栨ā鍨嬪<EFBFBD>姣旀祴璇?猸?
|
||||
### 1. 国内外模型对比测试 ⭐
|
||||
|
||||
**目的**: 确定准确率不高是模型能力问题还是其他问题
|
||||
|
||||
@@ -25,34 +25,34 @@
|
||||
- 国际模型: GPT-4o + Claude-4.5
|
||||
|
||||
**测试数据**:
|
||||
- 鐢ㄦ埛鎻愪緵鐨勭湡瀹炲崚涓<EFBFBD>爺绌舵暟鎹?
|
||||
- 5绡囨祴璇曟枃鐚<EFBFBD>紙2绡囧簲绾冲叆锛?绡囧簲鎺掗櫎锛?
|
||||
- 用户提供的真实卒中研究数据
|
||||
- 5篇测试文献(2篇应纳入,3篇应排除)
|
||||
|
||||
**结果**:
|
||||
|
||||
| 妯″瀷缁勫悎 | 鍑嗙‘鐜?| 涓€鑷寸巼 | 骞冲潎鑰楁椂 | JSON绋冲畾鎬?|
|
||||
| 模型组合 | 准确率 | 一致率 | 平均耗时 | JSON稳定性 |
|
||||
|---------|--------|--------|----------|-----------|
|
||||
| DeepSeek-V3 + Qwen-Max | 40% | 60% | 16绉?| 鉁?100% |
|
||||
| GPT-4o + Claude-4.5 | 0%* | 80% | 10绉?| 鉂?20% |
|
||||
| DeepSeek-V3 + Qwen-Max | 40% | 60% | 16秒 | ✅ 100% |
|
||||
| GPT-4o + Claude-4.5 | 0%* | 80% | 10秒 | ❌ 20% |
|
||||
|
||||
*国际模型因JSON格式错误(中文引号)导致失败
|
||||
|
||||
**鏍稿績鍙戠幇**: 鉁?**涓嶆槸妯″瀷鑳藉姏闂<E5A78F><E99782>**
|
||||
**核心发现**: ✅ **不是模型能力问题**
|
||||
|
||||
---
|
||||
|
||||
### 2. 涓夌<EFBFBD>绛涢€夐<EFBFBD>鏍煎疄鐜?猸?
|
||||
### 2. 三种筛选风格实现 ⭐
|
||||
|
||||
**完成内容**:
|
||||
- 鉁?瀹芥澗妯″紡Prompt (`v1.1.0-lenient.txt`)
|
||||
- 鉁?鏍囧噯妯″紡Prompt (`v1.1.0-standard.txt`)
|
||||
- 鉁?涓ユ牸妯″紡Prompt (`v1.1.0-strict.txt`)
|
||||
- 鉁?鍚庣<E98D9A>鏀<EFBFBD>寔`style`鍙傛暟
|
||||
- 鉁?`llmScreeningService`闆嗘垚涓夌<EFBFBD>椋庢牸
|
||||
- ✅ 宽松模式Prompt (`v1.1.0-lenient.txt`)
|
||||
- ✅ 标准模式Prompt (`v1.1.0-standard.txt`)
|
||||
- ✅ 严格模式Prompt (`v1.1.0-strict.txt`)
|
||||
- ✅ 后端支持`style`参数
|
||||
- ✅ `llmScreeningService`集成三种风格
|
||||
|
||||
**测试结果**:
|
||||
|
||||
| 绛涢€夐<EFBFBD>鏍?| 鍑嗙‘鐜?| 鍙<>洖鐜?| 绮剧‘鐜?| 涓€鑷寸巼 |
|
||||
| 筛选风格 | 准确率 | 召回率 | 精确率 | 一致率 |
|
||||
|---------|--------|--------|--------|--------|
|
||||
| 标准模式 | 60% | 0% | 100% | 100% |
|
||||
| 宽松模式 | 20% | 50% | 0% | 40% |
|
||||
@@ -61,7 +61,7 @@
|
||||
|
||||
---
|
||||
|
||||
### 3. JSON瑙f瀽鍣ㄤ慨澶?馃敡
|
||||
### 3. JSON解析器修复 🔧
|
||||
|
||||
**问题**: 国际模型输出中使用中文引号(`""`),导致JSON解析失败
|
||||
|
||||
@@ -72,18 +72,18 @@ function cleanJSONString(text: string): string {
|
||||
cleaned = cleaned.replace(/"/g, '"');
|
||||
cleaned = cleaned.replace(/"/g, '"');
|
||||
|
||||
// 2. 鏇挎崲鍏ㄨ<EFBFBD>閫楀彿銆佸啋鍙?
|
||||
cleaned = cleaned.replace(/锛?g, ',');
|
||||
cleaned = cleaned.replace(/锛?g, ':');
|
||||
// 2. 替换全角逗号、冒号
|
||||
cleaned = cleaned.replace(/,/g, ',');
|
||||
cleaned = cleaned.replace(/:/g, ':');
|
||||
|
||||
// 3. 绉婚櫎涓嶅彲瑙佸瓧绗?
|
||||
// 3. 移除不可见字符
|
||||
cleaned = cleaned.replace(/[\u200B-\u200D\uFEFF]/g, '');
|
||||
|
||||
return cleaned;
|
||||
}
|
||||
```
|
||||
|
||||
**娴嬭瘯缁撴灉**: 鉁?9/9娴嬭瘯閫氳繃锛?00%锛?
|
||||
**测试结果**: ✅ 9/9测试通过(100%)
|
||||
|
||||
**修改文件**:
|
||||
- `backend/src/common/utils/jsonParser.ts`
|
||||
@@ -93,7 +93,7 @@ function cleanJSONString(text: string): string {
|
||||
|
||||
### 4. 根本问题诊断 🎯
|
||||
|
||||
**缁撹<EFBFBD>**: **AI vs 浜虹被瀵?杈圭晫鎯呭喌"鐨勭悊瑙e樊寮?*
|
||||
**结论**: **AI vs 人类对"边界情况"的理解差异**
|
||||
|
||||
**典型矛盾案例**:
|
||||
|
||||
@@ -102,30 +102,30 @@ function cleanJSONString(text: string): string {
|
||||
纳入标准: "亚洲人群"
|
||||
文献: 北非人群RCT
|
||||
|
||||
AI鐞嗚В: 鍖楅潪鈮犱簹娲?鈫?鎺掗櫎 鉂?
|
||||
浜虹被鐞嗚В: 铏介潪浜氭床浣嗘柟娉曚弗璋?鈫?绾冲叆 鉁?
|
||||
AI理解: 北非≠亚洲 → 排除 ❌
|
||||
人类理解: 虽非亚洲但方法严谨 → 纳入 ✅
|
||||
|
||||
鐭涚浘: 瑙勫垯璇?浜氭床"锛屽疄闄呮墽琛屾洿鐏垫椿
|
||||
矛盾: 规则说"亚洲",实际执行更灵活
|
||||
```
|
||||
|
||||
#### 案例2: 研究类型
|
||||
```
|
||||
鎺掗櫎鏍囧噯: "缁艰堪銆佺梾渚嬫姤鍛娿€佷細璁<E7B4B0>憳瑕?
|
||||
排除标准: "综述、病例报告、会议摘要"
|
||||
文献: 2020年Meta分析
|
||||
|
||||
AI鐞嗚В: Meta鍒嗘瀽=缁艰堪 鈫?鎺掗櫎 鉂?
|
||||
浜虹被鐞嗚В: 楂樿川閲廙eta鍒嗘瀽 鈫?绾冲叆 鉁?
|
||||
AI理解: Meta分析=综述 → 排除 ❌
|
||||
人类理解: 高质量Meta分析 → 纳入 ✅
|
||||
|
||||
鐭涚浘: "SR"鍜?缁艰堪"鐨勫畾涔変笉涓€鑷?
|
||||
矛盾: "SR"和"综述"的定义不一致
|
||||
```
|
||||
|
||||
#### 案例3: 对照类型
|
||||
```
|
||||
纳入标准: "安慰剂或常规治疗"
|
||||
鏂囩尞: 瀵圭収缁勪负鍙︿竴绉嶈嵂鐗?
|
||||
文献: 对照组为另一种药物
|
||||
|
||||
AI鐞嗚В: 鍙︿竴绉嶈嵂鐗┾墵瀹夋叞鍓?鈫?鎺掗櫎 鉂?
|
||||
浜虹被鐞嗚В: 鑽<>墿瀵规瘮鏈夋剰涔?鈫?绾冲叆 鉁?
|
||||
AI理解: 另一种药物≠安慰剂 → 排除 ❌
|
||||
人类理解: 药物对比有意义 → 纳入 ✅
|
||||
|
||||
矛盾: "常规治疗"的定义不明确
|
||||
```
|
||||
@@ -136,38 +136,38 @@ AI理解: 另一种药物≠安慰
|
||||
|
||||
### 5. 解决方案设计 💡
|
||||
|
||||
#### 鏂规<EFBFBD>1: 鐢ㄦ埛鑷<E59F9B>畾涔夎竟鐣屾儏鍐?猸?**鎺ㄨ崘**
|
||||
#### 方案1: 用户自定义边界情况 ⭐ **推荐**
|
||||
|
||||
**实现思路**:
|
||||
1. 用户输入PICOS + 纳排标准
|
||||
2. 绯荤粺LLM鍒嗘瀽鐢熸垚20绉嶈竟鐣屾儏鍐?
|
||||
3. 鐢ㄦ埛纭<EFBFBD><EFBFBD>姣忕<EFBFBD>鎯呭喌鐨勫<EFBFBD>鐞嗘柟寮?
|
||||
2. 系统LLM分析生成20种边界情况
|
||||
3. 用户确认每种情况的处理方式
|
||||
4. 系统基于确认生成定制化Prompt
|
||||
|
||||
**示例边界情况**:
|
||||
- "鍖楅潪浜虹兢鐨勯珮璐ㄩ噺RCT" 鈫?绾冲叆/鎺掗櫎锛?
|
||||
- "2020骞村彂琛ㄧ殑Meta鍒嗘瀽" 鈫?绾冲叆/鎺掗櫎锛?
|
||||
- "瀵圭収缁勪负鍙︿竴绉嶆爣鍑嗚嵂鐗? 鈫?绾冲叆/鎺掗櫎锛?
|
||||
- "闅愭簮鎬у崚涓<EFBFBD>紙闈炴槑纭<EFBFBD>績婧愭€э級" 鈫?绾冲叆/鎺掗櫎锛?
|
||||
- "北非人群的高质量RCT" → 纳入/排除?
|
||||
- "2020年发表的Meta分析" → 纳入/排除?
|
||||
- "对照组为另一种标准药物" → 纳入/排除?
|
||||
- "隐源性卒中(非明确心源性)" → 纳入/排除?
|
||||
|
||||
**优点**:
|
||||
- 鉁?娑堥櫎AI涓庝汉绫荤悊瑙e樊寮?
|
||||
- 鉁?閫傜敤浠讳綍鐮旂┒涓婚<E6B693>
|
||||
- 鉁?鍙<>寔缁<E5AF94><E7BC81>涔犱紭鍖?
|
||||
- ✅ 消除AI与人类理解差异
|
||||
- ✅ 适用任何研究主题
|
||||
- ✅ 可持续学习优化
|
||||
|
||||
---
|
||||
|
||||
#### 鏂规<EFBFBD>2: 涓夌<E6B693>绛涢€夐<E282AC>鏍?鉁?**宸插疄鐜?*
|
||||
#### 方案2: 三种筛选风格 ✅ **已实现**
|
||||
|
||||
**使用场景**:
|
||||
- **初筛**: 宽松模式(宁可多纳入,避免漏掉)
|
||||
- **甯歌<EFBFBD>**: 鏍囧噯妯″紡锛堝钩琛″彫鍥炵巼鍜岀簿纭<EFBFBD>巼锛?
|
||||
- **常规**: 标准模式(平衡召回率和精确率)
|
||||
- **精筛**: 严格模式(宁可错杀,保证质量)
|
||||
|
||||
**鐘舵€?*:
|
||||
- 鉁?鍚庣<E98D9A>瀹屾垚
|
||||
- 猬?鍓嶇<E98D93>UI寰呭紑鍙?
|
||||
- 猬?API鎺ュ彛寰呰皟鏁?
|
||||
**状态**:
|
||||
- ✅ 后端完成
|
||||
- ⬜ 前端UI待开发
|
||||
- ⬜ API接口待调整
|
||||
|
||||
---
|
||||
|
||||
@@ -184,44 +184,44 @@ AI理解: 另一种药物≠安慰
|
||||
|
||||
## 📊 测试数据统计
|
||||
|
||||
### 瀹屾垚鐨勬祴璇?
|
||||
### 完成的测试
|
||||
|
||||
| 测试名称 | 测试样本 | 完成时间 | 关键发现 |
|
||||
|---------|---------|---------|----------|
|
||||
| 鍥藉唴澶栨ā鍨嬪<EFBFBD>姣?| 5绡嚸?缁?| 2灏忔椂 | 妯″瀷鑳藉姏瓒冲<E79392> |
|
||||
| 瀹芥澗妯″紡娴嬭瘯 | 5绡?| 1灏忔椂 | 瀹芥澗搴︽潈琛¢毦 |
|
||||
| JSON瑙f瀽鍣ㄦ祴璇?| 9绉嶆牸寮?| 30鍒嗛挓 | 100%閫氳繃 |
|
||||
| 国内外模型对比 | 5篇×2组 | 2小时 | 模型能力足够 |
|
||||
| 宽松模式测试 | 5篇 | 1小时 | 宽松度权衡难 |
|
||||
| JSON解析器测试 | 9种格式 | 30分钟 | 100%通过 |
|
||||
|
||||
### 测试文件
|
||||
|
||||
- 鉁?`scripts/test-stroke-screening.ts` (鏍囧噯妯″紡)
|
||||
- 鉁?`scripts/test-stroke-screening-international-models.ts` (妯″瀷瀵规瘮)
|
||||
- 鉁?`scripts/test-stroke-screening-lenient.ts` (瀹芥澗妯″紡)
|
||||
- 鉁?`scripts/test-json-parser.ts` (JSON瑙f瀽鍣?
|
||||
- ✅ `scripts/test-stroke-screening.ts` (标准模式)
|
||||
- ✅ `scripts/test-stroke-screening-international-models.ts` (模型对比)
|
||||
- ✅ `scripts/test-stroke-screening-lenient.ts` (宽松模式)
|
||||
- ✅ `scripts/test-json-parser.ts` (JSON解析器)
|
||||
|
||||
---
|
||||
|
||||
## 馃摑 浜や粯鐗?
|
||||
## 📝 交付物
|
||||
|
||||
### 代码文件
|
||||
|
||||
**鏂板<EFBFBD>鏂囦欢** (7涓?:
|
||||
**新增文件** (7个):
|
||||
1. `prompts/asl/screening/v1.1.0-lenient.txt` (宽松Prompt)
|
||||
2. `prompts/asl/screening/v1.1.0-standard.txt` (标准Prompt)
|
||||
3. `prompts/asl/screening/v1.1.0-strict.txt` (严格Prompt)
|
||||
4. `scripts/test-stroke-screening-international-models.ts`
|
||||
5. `scripts/test-stroke-screening-lenient.ts`
|
||||
6. `scripts/test-json-parser.ts`
|
||||
7. `docs/鍥藉唴澶栨ā鍨嬪<EFBFBD>姣旀祴璇曟姤鍛?json`
|
||||
7. `docs/国内外模型对比测试报告.json`
|
||||
|
||||
**淇<EFBFBD>敼鏂囦欢** (3涓?:
|
||||
**修改文件** (3个):
|
||||
1. `src/modules/asl/schemas/screening.schema.ts`
|
||||
- 新增`ScreeningStyle`类型
|
||||
- 新增`style`参数支持
|
||||
- 涓夌<EFBFBD>Prompt鍔ㄦ€佺敓鎴?
|
||||
- 三种Prompt动态生成
|
||||
|
||||
2. `src/modules/asl/services/llmScreeningService.ts`
|
||||
- 鏂板<EFBFBD>`MODEL_TYPE_MAP`锛堟敮鎸乬pt-4o銆乧laude-sonnet-4.5锛?
|
||||
- 新增`MODEL_TYPE_MAP`(支持gpt-4o、claude-sonnet-4.5)
|
||||
- 所有方法新增`style`参数
|
||||
- 修复冲突检测逻辑
|
||||
|
||||
@@ -234,26 +234,26 @@ AI理解: 另一种药物≠安慰
|
||||
|
||||
### 文档文件
|
||||
|
||||
**鏂板<EFBFBD>鏂囨。** (2涓?:
|
||||
1. `docs/03-涓氬姟妯″潡/ASL-AI鏅鸿兘鏂囩尞/05-寮€鍙戣<E98D99>褰?2025-11-18-涓ゆ<E6B693>娴嬭瘯瀹屾暣鎶ュ憡.md`
|
||||
- 522琛屽畬鏁村垎鏋愭姤鍛?
|
||||
**新增文档** (2个):
|
||||
1. `docs/03-业务模块/ASL-AI智能文献/05-开发记录/2025-11-18-两步测试完整报告.md`
|
||||
- 522行完整分析报告
|
||||
- 详细案例分析
|
||||
- 解决方案设计
|
||||
|
||||
2. `docs/03-涓氬姟妯″潡/ASL-AI鏅鸿兘鏂囩尞/05-寮€鍙戣<E98D99>褰?2025-11-18-浠婃棩宸ヤ綔鎬荤粨.md`
|
||||
- 鏈<EFBFBD>枃浠?
|
||||
2. `docs/03-业务模块/ASL-AI智能文献/05-开发记录/2025-11-18-今日工作总结.md`
|
||||
- 本文件
|
||||
|
||||
---
|
||||
|
||||
## 🎯 核心发现总结
|
||||
|
||||
### 鍙戠幇1: 妯″瀷鑳藉姏鍏呭垎 鉁?
|
||||
### 发现1: 模型能力充分 ✅
|
||||
|
||||
鍥藉唴澶栭《绾фā鍨嬪湪鐞嗚В鑳藉姏涓?*娌℃湁鏈<E6B981>川宸<E5B79D>紓**锛屽噯纭<E599AF>巼涓嶉珮**涓嶆槸鏅哄晢闂<E699A2><E99782>**銆?
|
||||
国内外顶级模型在理解能力上**没有本质差异**,准确率不高**不是智商问题**。
|
||||
|
||||
### 发现2: Prompt优化有限 ⚠️
|
||||
|
||||
鍗曠函璋冩暣瀹芥澗/涓ユ牸绋嬪害锛屽彧鑳藉湪鍙<E6B9AA>洖鐜囧拰绮剧‘鐜囦箣闂存潈琛★紝**鏃犳硶鏍规湰鎻愰珮鍑嗙‘鐜?*銆?
|
||||
单纯调整宽松/严格程度,只能在召回率和精确率之间权衡,**无法根本提高准确率**。
|
||||
|
||||
```
|
||||
标准Prompt: 召回率↓ 精确率↑ (保守)
|
||||
@@ -264,9 +264,9 @@ AI理解: 另一种药物≠安慰
|
||||
|
||||
### 发现3: 根本问题 = 规则歧义 🎯
|
||||
|
||||
**绾虫帓鏍囧噯瀛樺湪闅愬惈鐨勫垽鏂<EFBFBD><EFBFBD>鍒?*锛孉I鍙<49>兘鎵ц<E98EB5>鏄惧紡瑙勫垯锛屾棤娉曠悊瑙i殣鍚<E6AEA3><E98D9A>鍒欍€?
|
||||
**纳排标准存在隐含的判断规则**,AI只能执行显式规则,无法理解隐含规则。
|
||||
|
||||
**瑙e喅鏂规<EFBFBD>**: 璁╃敤鎴锋槑纭<EFBFBD>畾涔夎竟鐣屾儏鍐?
|
||||
**解决方案**: 让用户明确定义边界情况
|
||||
|
||||
---
|
||||
|
||||
@@ -274,120 +274,120 @@ AI理解: 另一种药物≠安慰
|
||||
|
||||
### Prompt版本演进
|
||||
|
||||
| 鐗堟湰 | 鍑嗙‘鐜?| 鍙<>洖鐜?| 绮剧‘鐜?| 涓€鑷寸巼 | 鐘舵€?|
|
||||
| 版本 | 准确率 | 召回率 | 精确率 | 一致率 | 状态 |
|
||||
|------|--------|--------|--------|--------|------|
|
||||
| v1.0.0 (SGLT2) | 60% | - | - | 70% | 宸插簾寮?|
|
||||
| v1.1.0-standard | 60% | 0% | 100% | 100% | 鉁?褰撳墠 |
|
||||
| v1.1.0-lenient | 20% | 50% | 0% | 40% | 鉁?鍙<>€?|
|
||||
| v1.1.0-strict | 鏈<EFBFBD>祴璇?| - | - | - | 鉁?鍙<>€?|
|
||||
| v1.0.0 (SGLT2) | 60% | - | - | 70% | 已废弃 |
|
||||
| v1.1.0-standard | 60% | 0% | 100% | 100% | ✅ 当前 |
|
||||
| v1.1.0-lenient | 20% | 50% | 0% | 40% | ✅ 可选 |
|
||||
| v1.1.0-strict | 未测试 | - | - | - | ✅ 可选 |
|
||||
|
||||
### 模型性能对比
|
||||
|
||||
| 妯″瀷 | 閫熷害 | JSON绋冲畾鎬?| 鍑嗙‘鐜?| 鎺ㄨ崘搴?|
|
||||
| 模型 | 速度 | JSON稳定性 | 准确率 | 推荐度 |
|
||||
|------|------|-----------|--------|--------|
|
||||
| DeepSeek-V3 | 涓<EFBFBD>瓑(16s) | 鉁?100% | 40% | 猸愨瓙猸愨瓙猸?|
|
||||
| Qwen-Max | 涓<EFBFBD>瓑(16s) | 鉁?100% | 40% | 猸愨瓙猸愨瓙猸?|
|
||||
| GPT-4o | 蹇?10s) | 鉂?20% | 鏈<EFBFBD>煡 | 猸愨瓙猸?|
|
||||
| Claude-4.5 | 蹇?10s) | 鉂?20% | 鏈<EFBFBD>煡 | 猸愨瓙猸?|
|
||||
| DeepSeek-V3 | 中等(16s) | ✅ 100% | 40% | ⭐⭐⭐⭐⭐ |
|
||||
| Qwen-Max | 中等(16s) | ✅ 100% | 40% | ⭐⭐⭐⭐⭐ |
|
||||
| GPT-4o | 快(10s) | ❌ 20% | 未知 | ⭐⭐⭐ |
|
||||
| Claude-4.5 | 快(10s) | ❌ 20% | 未知 | ⭐⭐⭐ |
|
||||
|
||||
**鎺ㄨ崘**: 缁х画浣跨敤鍥藉唴妯″瀷缁勫悎锛堢ǔ瀹氭€уソ锛?
|
||||
**推荐**: 继续使用国内模型组合(稳定性好)
|
||||
|
||||
---
|
||||
|
||||
## 馃殌 涓嬩竴姝ヨ<E5A79D>鍔?
|
||||
## 🚀 下一步行动
|
||||
|
||||
### 绔嬪嵆琛屽姩锛堟湰鍛<EFBFBD>級猸?
|
||||
### 立即行动(本周)⭐
|
||||
|
||||
**任务**: 实现方案2 - 三种筛选风格前端UI
|
||||
|
||||
**寮€鍙戞竻鍗?*:
|
||||
1. 猬?鍓嶇<E98D93>娣诲姞绛涢€夐<E282AC>鏍奸€夋嫨鍣<E5ABA8>紙Radio Group锛?
|
||||
2. 猬?API浼犻€抈style`鍙傛暟
|
||||
3. 猬?鐢?0-20绡囩湡瀹炴暟鎹<E69A9F>祴璇曚笁绉嶆ā寮?
|
||||
4. 猬?鏂囨。璇存槑涓夌<E6B693>椋庢牸鐨勪娇鐢ㄥ満鏅?
|
||||
**开发清单**:
|
||||
1. ⬜ 前端添加筛选风格选择器(Radio Group)
|
||||
2. ⬜ API传递`style`参数
|
||||
3. ⬜ 用10-20篇真实数据测试三种模式
|
||||
4. ⬜ 文档说明三种风格的使用场景
|
||||
|
||||
**棰勮<EFBFBD>鏃堕棿**: 2-3澶?
|
||||
**预计时间**: 2-3天
|
||||
|
||||
**期望效果**:
|
||||
- 鍒濈瓫鍙<EFBFBD>洖鐜?70%+锛堝<E9949B>鏉炬ā寮忥級
|
||||
- 绮剧瓫绮剧‘鐜?95%+锛堜弗鏍兼ā寮忥級
|
||||
- 初筛召回率 70%+(宽松模式)
|
||||
- 精筛精确率 95%+(严格模式)
|
||||
|
||||
---
|
||||
|
||||
### 涓<EFBFBD>湡琛屽姩锛圵eek 2-3锛?
|
||||
### 中期行动(Week 2-3)
|
||||
|
||||
**浠诲姟**: 瀹炵幇鏂规<EFBFBD>1 - 鐢ㄦ埛鑷<E59F9B>畾涔夎竟鐣屾儏鍐?
|
||||
**任务**: 实现方案1 - 用户自定义边界情况
|
||||
|
||||
**Phase 1**: 鍩虹<EFBFBD>鐗?
|
||||
1. LLM鍒嗘瀽PICOS鐢熸垚10-20绉嶈竟鐣屾儏鍐?
|
||||
2. 鐢ㄦ埛鎵嬪姩纭<EFBFBD><EFBFBD>锛堢撼鍏?鎺掗櫎/涓嶇‘瀹氾級
|
||||
**Phase 1**: 基础版
|
||||
1. LLM分析PICOS生成10-20种边界情况
|
||||
2. 用户手动确认(纳入/排除/不确定)
|
||||
3. 系统根据确认调整Prompt
|
||||
|
||||
**Phase 2**: 鏅鸿兘鐗?
|
||||
**Phase 2**: 智能版
|
||||
1. 系统学习用户纠正
|
||||
2. 自动更新边界规则
|
||||
3. 鎸佺画浼樺寲鍑嗙‘鐜?
|
||||
3. 持续优化准确率
|
||||
|
||||
**期望效果**:
|
||||
- 鏁翠綋鍑嗙‘鐜?85%+
|
||||
- 杈圭晫鎯呭喌鍑嗙‘鐜?80%+
|
||||
- 浜哄伐澶嶆牳鐜?<15%
|
||||
- 整体准确率 85%+
|
||||
- 边界情况准确率 80%+
|
||||
- 人工复核率 <15%
|
||||
|
||||
---
|
||||
|
||||
### 闀挎湡浼樺寲锛圴1.0+锛?
|
||||
### 长期优化(V1.0+)
|
||||
|
||||
**任务**: 实现方案3 - Few-shot学习
|
||||
|
||||
1. 妗堜緥搴撶<EFBFBD>鐞?
|
||||
1. 案例库管理
|
||||
2. 自动Few-shot示例选择
|
||||
3. 澶氱敤鎴风粡楠屽叡浜?
|
||||
3. 多用户经验共享
|
||||
|
||||
---
|
||||
|
||||
## 💡 关键启示
|
||||
|
||||
### 1. AI涓嶆槸涓囪兘鐨?
|
||||
### 1. AI不是万能的
|
||||
|
||||
- 鉁?AI鍙<49>互鎵ц<E98EB5>**鏄庣‘鐨勮<E990A8>鍒?*
|
||||
- 鉂?AI鏃犳硶鐞嗚В**闅愬惈鐨勫垽鏂<E59EBD>爣鍑?*
|
||||
- 馃幆 **闇€瑕佷汉绫绘槑纭<E6A791><E7BAAD>鍒?*
|
||||
- ✅ AI可以执行**明确的规则**
|
||||
- ❌ AI无法理解**隐含的判断标准**
|
||||
- 🎯 **需要人类明确规则**
|
||||
|
||||
### 2. 标准必须明确
|
||||
|
||||
- 闅愬惈瑙勫垯蹇呴』**鏄惧紡鍖?*
|
||||
- 隐含规则必须**显式化**
|
||||
- 边界情况必须**定义清楚**
|
||||
- 🎯 **歧义是准确率低的根本原因**
|
||||
|
||||
### 3. 用户参与至关重要
|
||||
|
||||
- 鐢ㄦ埛鏈€浜嗚В鑷<EFBFBD>繁鐨勯渶姹?
|
||||
- 璁╃敤鎴峰畾涔夎竟鐣屾儏鍐?
|
||||
- 馃幆 **AI + 浜虹被 = 鏈€浣虫柟妗?*
|
||||
- 用户最了解自己的需求
|
||||
- 让用户定义边界情况
|
||||
- 🎯 **AI + 人类 = 最佳方案**
|
||||
|
||||
---
|
||||
|
||||
## 📞 用户反馈
|
||||
|
||||
### 鐢ㄦ埛鐨勫叧閿<EFBFBD>棶棰?
|
||||
### 用户的关键问题
|
||||
|
||||
1. 鉁?**宸茶В绛?*: "鏄<>ā鍨嬭兘鍔涢棶棰樿繕鏄疨rompt闂<74><E99782>锛?
|
||||
- **绛?*: 涓昏<EFBFBD>鏄疉I涓庝汉绫诲<EFBFBD>杈圭晫鎯呭喌鐨勭悊瑙e樊寮?
|
||||
1. ✅ **已解答**: "是模型能力问题还是Prompt问题?"
|
||||
- **答**: 主要是AI与人类对边界情况的理解差异
|
||||
|
||||
2. 鉁?**宸插疄鐜?*: "鍒濈瓫搴旇<E690B4>鏇村<E98F87>鏉撅紝鍏ㄦ枃澶嶇瓫鍐嶄弗鏍?
|
||||
- **绛?*: 宸插疄鐜颁笁绉嶇瓫閫夐<EFBFBD>鏍硷紝鍙<EFBFBD>伒娲婚€夋嫨
|
||||
2. ✅ **已实现**: "初筛应该更宽松,全文复筛再严格"
|
||||
- **答**: 已实现三种筛选风格,可灵活选择
|
||||
|
||||
3. 鉁?**宸蹭慨澶?*: "濡備綍楠岃瘉妯″瀷鐗堟湰锛?
|
||||
- **绛?*: 宸插疄鐜版ā鍨嬮獙璇佽剼鏈?
|
||||
3. ✅ **已修复**: "如何验证模型版本?"
|
||||
- **答**: 已实现模型验证脚本
|
||||
|
||||
4. 鉁?**宸茬‘璁?*: "鍥介檯妯″瀷JSON瑙f瀽閿欒<E996BF>濡備綍淇<E7B68D><E6B787>锛?
|
||||
- **绛?*: 宸蹭慨澶嶏紝100%娴嬭瘯閫氳繃
|
||||
4. ✅ **已确认**: "国际模型JSON解析错误如何修复?"
|
||||
- **答**: 已修复,100%测试通过
|
||||
|
||||
### 鐢ㄦ埛鐨勪骇鍝佸缓璁?
|
||||
### 用户的产品建议
|
||||
|
||||
> "鐢ㄦ埛杈撳叆PICOS鍚庯紝搴旇<EFBFBD>璁╃敤鎴烽€夋嫨绛涢€夐<EFBFBD>鏍硷紙瀹芥澗/鏍囧噯/涓ユ牸锛?
|
||||
> "用户输入PICOS后,应该让用户选择筛选风格(宽松/标准/严格)"
|
||||
|
||||
**鐘舵€?*: 鉁?鍚庣<E98D9A>宸插疄鐜帮紝鍓嶇<E98D93>寰呭紑鍙?
|
||||
**状态**: ✅ 后端已实现,前端待开发
|
||||
|
||||
---
|
||||
|
||||
@@ -401,35 +401,35 @@ AI理解: 另一种药物≠安慰
|
||||
|
||||
### 修改代码
|
||||
|
||||
- 鏍稿績鏈嶅姟: 2涓<32>枃浠?
|
||||
- 宸ュ叿鍑芥暟: 1涓<31>枃浠?
|
||||
- 鎬讳慨鏀? ~200琛?
|
||||
- 核心服务: 2个文件
|
||||
- 工具函数: 1个文件
|
||||
- 总修改: ~200行
|
||||
|
||||
### 总计
|
||||
|
||||
- 鏂板<EFBFBD>: ~1900琛?
|
||||
- 淇<EFBFBD>敼: ~200琛?
|
||||
- **鎬昏<EFBFBD>**: ~2100琛?
|
||||
- 新增: ~1900行
|
||||
- 修改: ~200行
|
||||
- **总计**: ~2100行
|
||||
|
||||
---
|
||||
|
||||
## 🎉 今日亮点
|
||||
|
||||
1. **绯荤粺鎬ф祴璇?* - 涓ゆ<E6B693>娴嬭瘯娉曠‘瀹氭牴鏈<E789B4>師鍥?
|
||||
2. **鍒涙柊鎬ф柟妗?* - 鐢ㄦ埛鑷<E59F9B>畾涔夎竟鐣屾儏鍐碉紙涓氱晫灏戣<E7818F>锛?
|
||||
3. **宸ョ▼璐ㄩ噺** - JSON瑙f瀽鍣?00%娴嬭瘯閫氳繃
|
||||
4. **鏂囨。瀹屽杽** - 522琛岃<EFBFBD>缁嗗垎鏋愭姤鍛?
|
||||
1. **系统性测试** - 两步测试法确定根本原因
|
||||
2. **创新性方案** - 用户自定义边界情况(业界少见)
|
||||
3. **工程质量** - JSON解析器100%测试通过
|
||||
4. **文档完善** - 522行详细分析报告
|
||||
|
||||
---
|
||||
|
||||
## 鈴?鏃堕棿鍒嗛厤
|
||||
## ⏰ 时间分配
|
||||
|
||||
| 任务 | 时间 | 占比 |
|
||||
|------|------|------|
|
||||
| 闇€姹傚垎鏋?| 1灏忔椂 | 12.5% |
|
||||
| 鍥藉唴澶栨ā鍨嬫祴璇?| 2灏忔椂 | 25% |
|
||||
| 瀹芥澗妯″紡寮€鍙?| 2灏忔椂 | 25% |
|
||||
| JSON瑙f瀽鍣ㄤ慨澶?| 1灏忔椂 | 12.5% |
|
||||
| 需求分析 | 1小时 | 12.5% |
|
||||
| 国内外模型测试 | 2小时 | 25% |
|
||||
| 宽松模式开发 | 2小时 | 25% |
|
||||
| JSON解析器修复 | 1小时 | 12.5% |
|
||||
| 文档编写 | 2小时 | 25% |
|
||||
| **总计** | **8小时** | **100%** |
|
||||
|
||||
@@ -437,7 +437,7 @@ AI理解: 另一种药物≠安慰
|
||||
|
||||
## 🎓 经验教训
|
||||
|
||||
### 鎶€鏈<EFBFBD>眰闈?
|
||||
### 技术层面
|
||||
|
||||
1. **JSON解析**: 必须考虑国际化(中文引号、全角符号)
|
||||
2. **模型调用**: 需要统一的适配器层
|
||||
@@ -445,29 +445,29 @@ AI理解: 另一种药物≠安慰
|
||||
|
||||
### 产品层面
|
||||
|
||||
1. **鐢ㄦ埛鐞嗚В**: AI鏃犳硶鐚滄祴鐢ㄦ埛鐨勯殣鍚<EFBFBD><EFBFBD>鍒?
|
||||
2. **鐏垫椿鎬?*: 鎻愪緵澶氱<E6BEB6>閫夐」锛堝<E9949B>鏉?鏍囧噯/涓ユ牸锛?
|
||||
3. **鍙<EFBFBD>В閲婃€?*: 璁╃敤鎴锋槑纭<E6A791>畾涔夎竟鐣屾儏鍐?
|
||||
1. **用户理解**: AI无法猜测用户的隐含规则
|
||||
2. **灵活性**: 提供多种选项(宽松/标准/严格)
|
||||
3. **可解释性**: 让用户明确定义边界情况
|
||||
|
||||
### 项目管理
|
||||
|
||||
1. **闂<EFBFBD><EFBFBD>鎷嗚В**: 涓ゆ<EFBFBD>娴嬭瘯娉曟晥鏋滄樉钁?
|
||||
2. **蹇<EFBFBD>€熼獙璇?*: 鐢ㄥ皬鏍锋湰蹇<E6B9B0>€熸祴璇曞亣璁?
|
||||
3. **鏂囨。鍏堣<EFBFBD>**: 璇︾粏璁板綍娴嬭瘯杩囩▼鍜岀粨璁?
|
||||
1. **问题拆解**: 两步测试法效果显著
|
||||
2. **快速验证**: 用小样本快速测试假设
|
||||
3. **文档先行**: 详细记录测试过程和结论
|
||||
|
||||
---
|
||||
|
||||
## 📅 明日计划
|
||||
|
||||
1. 猬?鍓嶇<E98D93>寮€鍙戯細绛涢€夐<E282AC>鏍奸€夋嫨鍣?
|
||||
2. 猬?API闆嗘垚锛氫紶閫抈style`鍙傛暟
|
||||
3. 猬?鎵╁ぇ娴嬭瘯锛氱敤20绡囩湡瀹炴暟鎹<E69A9F>祴璇?
|
||||
4. 猬?鐢ㄦ埛婕旂ず锛氬睍绀轰笁绉嶉<E7BB89>鏍肩殑宸<E6AE91>紓
|
||||
1. ⬜ 前端开发:筛选风格选择器
|
||||
2. ⬜ API集成:传递`style`参数
|
||||
3. ⬜ 扩大测试:用20篇真实数据测试
|
||||
4. ⬜ 用户演示:展示三种风格的差异
|
||||
|
||||
---
|
||||
|
||||
**鎶ュ憡浜?*: AI Assistant
|
||||
**瀹℃牳浜?*: [寰呯敤鎴风‘璁<E28098>
|
||||
**报告人**: AI Assistant
|
||||
**审核人**: [待用户确认]
|
||||
**日期**: 2025-11-18
|
||||
**版本**: v1.0 Final
|
||||
|
||||
@@ -494,13 +494,13 @@ AI理解: 另一种药物≠安慰
|
||||
- `backend/src/common/utils/jsonParser.ts`
|
||||
|
||||
**文档**:
|
||||
- `docs/03-涓氬姟妯″潡/ASL-AI鏅鸿兘鏂囩尞/05-寮€鍙戣<E98D99>褰?2025-11-18-涓ゆ<E6B693>娴嬭瘯瀹屾暣鎶ュ憡.md`
|
||||
- `docs/03-涓氬姟妯″潡/ASL-AI鏅鸿兘鏂囩尞/05-寮€鍙戣<E98D99>褰?2025-11-18-浠婃棩宸ヤ綔鎬荤粨.md`
|
||||
- `docs/03-业务模块/ASL-AI智能文献/05-开发记录/2025-11-18-两步测试完整报告.md`
|
||||
- `docs/03-业务模块/ASL-AI智能文献/05-开发记录/2025-11-18-今日工作总结.md`
|
||||
|
||||
### B. 蹇<EFBFBD>€熷懡浠?
|
||||
### B. 快速命令
|
||||
|
||||
```bash
|
||||
# 娴嬭瘯JSON瑙f瀽鍣?
|
||||
# 测试JSON解析器
|
||||
npx tsx scripts/test-json-parser.ts
|
||||
|
||||
# 测试标准模式
|
||||
@@ -509,7 +509,7 @@ npx tsx scripts/test-stroke-screening.ts
|
||||
# 测试宽松模式
|
||||
npx tsx scripts/test-stroke-screening-lenient.ts
|
||||
|
||||
# 娴嬭瘯鍥藉唴澶栨ā鍨嬪<EFBFBD>姣?
|
||||
# 测试国内外模型对比
|
||||
npx tsx scripts/test-stroke-screening-international-models.ts
|
||||
```
|
||||
|
||||
|
||||
Reference in New Issue
Block a user