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,63 +1,63 @@
|
||||
# AI科研助手 - 技术架构总览
|
||||
|
||||
> **最后更新:2025-10-10**
|
||||
> **鏂规<EFBFBD>鐗堟湰锛歷2.0锛堟渶缁堜紭鍖栫増锛?*
|
||||
> **鏂囨。璇存槑锛?* 鏈<>枃妗f槸鎶€鏈<E282AC>灦鏋勭殑蹇<E6AE91>€熷弬鑰冩寚鍗楋紝閫傚悎鏂颁汉蹇<E6B189>€熶簡瑙f暣浣撴妧鏈<E5A6A7>柟妗?
|
||||
> **方案版本:v2.0(最终优化版)**
|
||||
> **文档说明:** 本文档是技术架构的快速参考指南,适合新人快速了解整体技术方案
|
||||
|
||||
---
|
||||
|
||||
## 馃搳 鏍稿績鏁版嵁涓€瑙?
|
||||
## 📊 核心数据一览
|
||||
|
||||
| 鎸囨爣 | 鏁板€?|
|
||||
| 指标 | 数值 |
|
||||
|------|------|
|
||||
| **寮€鍙戝懆鏈?* | 2.5涓<EFBFBD>湀锛?0鍛<30>級 |
|
||||
| **寮€鍙戞垚鏈?* | 楼49,300 |
|
||||
| **鎶€鏈<EFBFBD>毦搴?* | 猸愨瓙猸愶紙涓<E7B499>瓑锛?|
|
||||
| **鏈堝害鎴愭湰** | 楼16,520锛?000鐢ㄦ埛锛?|
|
||||
| **鍥㈤槦瑙勬ā** | 2浜猴紙1鍏ㄦ爤 + 1鍓嶇<E98D93>锛?|
|
||||
| **开发周期** | 2.5个月(10周) |
|
||||
| **开发成本** | ¥49,300 |
|
||||
| **技术难度** | ⭐⭐⭐(中等) |
|
||||
| **月度成本** | ¥16,520(1000用户) |
|
||||
| **团队规模** | 2人(1全栈 + 1前端) |
|
||||
|
||||
---
|
||||
|
||||
## 馃幆 鍏抽敭闇€姹傛緞娓?
|
||||
## 🎯 关键需求澄清
|
||||
|
||||
### 鐭ヨ瘑搴撹<EFBFBD>妯★紙閲嶈<EFBFBD>鍙樻洿锛?
|
||||
### 知识库规模(重要变更)
|
||||
|
||||
| 项目 | 限制 |
|
||||
|------|------|
|
||||
| 鐭ヨ瘑搴撴暟閲?| 3涓?鐢ㄦ埛 |
|
||||
| 鏂囦欢鏁伴噺 | 50涓?鐭ヨ瘑搴?|
|
||||
| 知识库数量 | 3个/用户 |
|
||||
| 文件数量 | 50个/知识库 |
|
||||
| 文件格式 | PDF、DOCX |
|
||||
| 鍗曠敤鎴锋渶澶?| 150涓<30>枃浠?|
|
||||
| 单用户最大 | 150个文件 |
|
||||
|
||||
**褰卞搷锛?* 鎶€鏈<E282AC>毦搴︿粠猸愨瓙猸愨瓙猸愰檷鑷斥瓙猸愨瓙锛孌ify瀹屽叏婊¤冻闇€姹傦紒
|
||||
**影响:** 技术难度从⭐⭐⭐⭐⭐降至⭐⭐⭐,Dify完全满足需求!
|
||||
|
||||
---
|
||||
|
||||
## 馃彈锔?鎶€鏈<E282AC>灦鏋勶紙涓€鍥剧湅鎳傦級
|
||||
## 🏗️ 技术架构(一图看懂)
|
||||
|
||||
```
|
||||
鈹屸攢鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹?
|
||||
鈹? 鍓嶇<EFBFBD>锛圧eact + Vite锛? 鈹?
|
||||
鈹? - 椤圭洰绠$悊锛堣嚜鐮旓級 鈹?
|
||||
鈹? - 鏅鸿兘浣撻€夋嫨锛堣嚜鐮旓級 鈹?
|
||||
鈹? - 鑱婂ぉ鐣岄潰锛堝弬鑰僉obeChat锛夆瓙 鈹?
|
||||
鈹? - 鐭ヨ瘑搴撶<EFBFBD>鐞嗭紙鑷<EFBFBD>爺锛? 鈹?
|
||||
鈹斺攢鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹?
|
||||
鈫?REST API
|
||||
鈹屸攢鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹?
|
||||
鈹? 涓氬姟灞?(Node.js/TypeScript) 鈹?
|
||||
鈹? - 瀵硅瘽閫昏緫锛堣嚜鐮旓級猸? 鈹?
|
||||
鈹? - 椤圭洰/璇鹃<E79287>绠$悊 鈹?
|
||||
鈹? - 鏅鸿兘浣撹矾鐢憋紙閰嶇疆鍖栵級猸? 鈹?
|
||||
鈹? - 绠€鍖栬繍钀ュ悗鍙扳瓙 鈹?
|
||||
鈹斺攢鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹?
|
||||
鈫? 鈫?
|
||||
鈹屸攢鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹? 鈹屸攢鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹?
|
||||
鈹? Dify 鈹? 鈹? LLM API 鈹?
|
||||
鈹? 锛堜粎RAG锛夆瓙 鈹? 鈹? - DeepSeek-V3猸愨攤
|
||||
鈹? - 鐭ヨ瘑搴撴<EFBFBD>绱? 鈹? 鈹? - Qwen3 猸? 鈹?
|
||||
鈹? - Qdrant(鍐呯疆)猸?鈹? 鈹? 鈹?
|
||||
鈹斺攢鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹? 鈹斺攢鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹?
|
||||
┌─────────────────────────────────────────┐
|
||||
│ 前端(React + Vite) │
|
||||
│ - 项目管理(自研) │
|
||||
│ - 智能体选择(自研) │
|
||||
│ - 聊天界面(参考LobeChat)⭐ │
|
||||
│ - 知识库管理(自研) │
|
||||
└─────────────────────────────────────────┘
|
||||
↓ REST API
|
||||
┌─────────────────────────────────────────┐
|
||||
│ 业务层 (Node.js/TypeScript) │
|
||||
│ - 对话逻辑(自研)⭐ │
|
||||
│ - 项目/课题管理 │
|
||||
│ - 智能体路由(配置化)⭐ │
|
||||
│ - 简化运营后台⭐ │
|
||||
└─────────────────────────────────────────┘
|
||||
↓ ↓
|
||||
┌──────────────────┐ ┌─────────────────┐
|
||||
│ Dify │ │ LLM API │
|
||||
│ (仅RAG)⭐ │ │ - DeepSeek-V3⭐│
|
||||
│ - 知识库检索 │ │ - Qwen3 ⭐ │
|
||||
│ - Qdrant(内置)⭐ │ │ │
|
||||
└──────────────────┘ └─────────────────┘
|
||||
```
|
||||
|
||||
---
|
||||
@@ -68,72 +68,72 @@
|
||||
|
||||
| 方案 | 选择 | 原因 |
|
||||
|------|------|------|
|
||||
| **鍓嶇<EFBFBD>UI** | 鍙傝€僉obeChat缁勪欢 鉁?| 鎴愮啛绋冲畾锛岃妭鐪?.5澶?|
|
||||
| **瀵硅瘽閫昏緫** | 鑷<EFBFBD>爺锛堣皟鐢↙LM API锛夆渽 | 涓氬姟鍙<E5A79F>帶锛屾牳蹇冨彧瑕?姝?|
|
||||
| Dify瀵硅瘽鍔熻兘 | 鉂?涓嶇敤 | 涓嶉€傚悎12涓<32>櫤鑳戒綋绠$悊 |
|
||||
| LobeChat鏁翠綋 | 鉂?涓嶇敤 | 缂哄皯椤圭洰绠$悊鍔熻兘 |
|
||||
| **前端UI** | 参考LobeChat组件 ✅ | 成熟稳定,节省9.5天 |
|
||||
| **对话逻辑** | 自研(调用LLM API)✅ | 业务可控,核心只要4步 |
|
||||
| Dify对话功能 | ❌ 不用 | 不适合12个智能体管理 |
|
||||
| LobeChat整体 | ❌ 不用 | 缺少项目管理功能 |
|
||||
|
||||
### 2. RAG系统
|
||||
|
||||
| 功能 | 方案 |
|
||||
|------|------|
|
||||
| **鐭ヨ瘑搴撶<EFBFBD>鐞?* | Dify 鉁?|
|
||||
| **鏂囨。瑙f瀽** | Dify鍐呯疆 鉁?|
|
||||
| **鍚戦噺鏁版嵁搴?* | Dify鍐呯疆Qdrant 鉁?|
|
||||
| **妫€绱?* | Dify API 鉁?|
|
||||
| 鑷<EFBFBD>缓RAG | 鉂?涓嶉渶瑕?|
|
||||
| **知识库管理** | Dify ✅ |
|
||||
| **文档解析** | Dify内置 ✅ |
|
||||
| **向量数据库** | Dify内置Qdrant ✅ |
|
||||
| **检索** | Dify API ✅ |
|
||||
| 自建RAG | ❌ 不需要 |
|
||||
|
||||
### 3. 运营后台
|
||||
|
||||
| 鍔熻兘 | 鐘舵€?| 瀹炵幇鏂瑰紡 |
|
||||
| 功能 | 状态 | 实现方式 |
|
||||
|------|------|---------|
|
||||
| 鐢ㄦ埛绠$悊 | 鉁?淇濈暀 | 绠€鍖栫増 |
|
||||
| 鏁版嵁缁熻<EFBFBD> | 鉁?淇濈暀 | 鍩虹<E98DA9>浠<EFBFBD>〃鐩?|
|
||||
| 妯″瀷绠$悊 | 鉂?鍒犻櫎 | `config/models.yaml` |
|
||||
| 鏅鸿兘浣撶<EFBFBD>鐞?| 鉂?鍒犻櫎 | `config/agents.yaml` |
|
||||
| Prompt閰嶇疆 | 鉂?鍒犻櫎 | `prompts/*.txt` |
|
||||
| 用户管理 | ✅ 保留 | 简化版 |
|
||||
| 数据统计 | ✅ 保留 | 基础仪表盘 |
|
||||
| 模型管理 | ❌ 删除 | `config/models.yaml` |
|
||||
| 智能体管理 | ❌ 删除 | `config/agents.yaml` |
|
||||
| Prompt配置 | ❌ 删除 | `prompts/*.txt` |
|
||||
|
||||
### 4. 大模型选择
|
||||
|
||||
| 浼樺厛绾?| 妯″瀷 | 浠锋牸 | 鐢ㄩ€?|
|
||||
| 优先级 | 模型 | 价格 | 用途 |
|
||||
|--------|------|------|------|
|
||||
| **涓诲姏** | DeepSeek-V3 | 楼1/鐧句竾tokens | 90%鐨勮<EFBFBD>姹?|
|
||||
| **主力** | DeepSeek-V3 | ¥1/百万tokens | 90%的请求 |
|
||||
| **备用** | Qwen3-72B | ¥4/百万tokens | 需要更强中文理解时 |
|
||||
| 鍙<EFBFBD>€?| Gemini 2.0 | 楼2.7/鐧句竾tokens | 鍥介檯鐢ㄦ埛 |
|
||||
| 可选 | Gemini 2.0 | ¥2.7/百万tokens | 国际用户 |
|
||||
|
||||
---
|
||||
|
||||
## 💰 成本明细
|
||||
|
||||
### 寮€鍙戞垚鏈?
|
||||
### 开发成本
|
||||
|
||||
| 项目 | 金额 |
|
||||
|------|------|
|
||||
| 浜哄姏锛?浜烘湀锛?| 楼48,000 |
|
||||
| 人力(4人月) | ¥48,000 |
|
||||
| 服务器(开发环境) | ¥1,250 |
|
||||
| LLM API(测试) | ¥50 |
|
||||
| **总计** | **¥49,300** |
|
||||
|
||||
### 鏈堝害杩愯惀鎴愭湰锛?000鐢ㄦ埛锛?
|
||||
### 月度运营成本(1000用户)
|
||||
|
||||
| 项目 | 金额 |
|
||||
|------|------|
|
||||
| 鍩虹<EFBFBD>璁炬柦锛堟湇鍔″櫒锛?| 楼1,200 |
|
||||
| LLM API锛圖eepSeek-V3锛?| 楼180 |
|
||||
| 瀵硅薄瀛樺偍锛堢煡璇嗗簱锛?| 楼140 |
|
||||
| 浜哄姏锛?浜鸿繍缁达級 | 楼15,000 |
|
||||
| **鎬昏<EFBFBD>** | **楼16,520/鏈?* |
|
||||
| 基础设施(服务器) | ¥1,200 |
|
||||
| LLM API(DeepSeek-V3) | ¥180 |
|
||||
| 对象存储(知识库) | ¥140 |
|
||||
| 人力(1人运维) | ¥15,000 |
|
||||
| **总计** | **¥16,520/月** |
|
||||
|
||||
### 鐭ヨ瘑搴撳瓨鍌ㄨ<EFBFBD>鎯?
|
||||
### 知识库存储详情
|
||||
|
||||
```
|
||||
鍗曠敤鎴凤細150涓<EFBFBD>枃浠?脳 5MB = 750MB
|
||||
1000鐢ㄦ埛锛?50GB鎬诲瓨鍌?
|
||||
单用户:150个文件 × 5MB = 750MB
|
||||
1000用户:750GB总存储
|
||||
|
||||
对象存储(阿里云OSS):
|
||||
- 瀛樺偍璐癸細楼90/鏈?
|
||||
- 娴侀噺璐癸細楼50/鏈?
|
||||
- 鎬昏<EFBFBD>锛毬?40/鏈?
|
||||
- 存储费:¥90/月
|
||||
- 流量费:¥50/月
|
||||
- 总计:¥140/月
|
||||
```
|
||||
|
||||
---
|
||||
@@ -142,34 +142,34 @@
|
||||
|
||||
| 阶段 | 时间 | 主要任务 |
|
||||
|------|------|---------|
|
||||
| **闃舵<EFBFBD>1** | 1.5鍛?| 鍩虹<E98DA9>鎼<EFBFBD>缓 + 澶嶇敤LobeChat缁勪欢 |
|
||||
| **闃舵<EFBFBD>2** | 3.5鍛?| 鏍稿績鍔熻兘锛?2涓<32>櫤鑳戒綋 + 瀵硅瘽锛?|
|
||||
| **闃舵<EFBFBD>3** | 2鍛?| 楂樼骇鍔熻兘锛圧AG + 鏂囨。鐢熸垚锛?|
|
||||
| **闃舵<EFBFBD>4** | 1鍛?| 绠€鍖栬繍钀ュ悗鍙?|
|
||||
| **闃舵<EFBFBD>5** | 2鍛?| 娴嬭瘯浼樺寲 |
|
||||
| **阶段1** | 1.5周 | 基础搭建 + 复用LobeChat组件 |
|
||||
| **阶段2** | 3.5周 | 核心功能(12个智能体 + 对话) |
|
||||
| **阶段3** | 2周 | 高级功能(RAG + 文档生成) |
|
||||
| **阶段4** | 1周 | 简化运营后台 |
|
||||
| **阶段5** | 2周 | 测试优化 |
|
||||
|
||||
### 闃舵<EFBFBD>1锛氬熀纭€鎼<EFBFBD>缓锛?.5鍛<EFBFBD>級
|
||||
- [ ] 鍓嶇<EFBFBD>妗嗘灦锛圧eact + Vite + TailwindCSS锛?
|
||||
- [ ] **澶嶇敤LobeChat鑱婂ぉUI缁勪欢** 猸?
|
||||
- [ ] 鍚庣<EFBFBD>妗嗘灦锛團astify + Prisma + PostgreSQL锛?
|
||||
- [ ] Dify閮ㄧ讲锛圖ocker锛?
|
||||
### 阶段1:基础搭建(1.5周)
|
||||
- [ ] 前端框架(React + Vite + TailwindCSS)
|
||||
- [ ] **复用LobeChat聊天UI组件** ⭐
|
||||
- [ ] 后端框架(Fastify + Prisma + PostgreSQL)
|
||||
- [ ] Dify部署(Docker)
|
||||
- [ ] DeepSeek-V3 + Qwen3接入
|
||||
|
||||
### 阶段2:核心功能(3.5周)
|
||||
- [ ] 鐢ㄦ埛璁よ瘉锛圝WT锛?
|
||||
- [ ] 用户认证(JWT)
|
||||
- [ ] 项目/课题CRUD
|
||||
- [ ] 12涓<EFBFBD>櫤鑳戒綋閰嶇疆锛坄agents.yaml`锛?
|
||||
- [ ] 瀵硅瘽绯荤粺锛堜笂涓嬫枃缁勮<EFBFBD> + 娴佸紡杈撳嚭锛?
|
||||
- [ ] 鐭ヨ瘑搴撻泦鎴愶紙Dify API锛?
|
||||
- [ ] 12个智能体配置(`agents.yaml`)
|
||||
- [ ] 对话系统(上下文组装 + 流式输出)
|
||||
- [ ] 知识库集成(Dify API)
|
||||
|
||||
### 阶段3:高级功能(2周)
|
||||
- [ ] 澶氭ā鍨嬪垏鎹<EFBFBD>紙DeepSeek/Qwen锛?
|
||||
- [ ] 多模型切换(DeepSeek/Qwen)
|
||||
- [ ] 历史记录管理
|
||||
- [ ] 鍥哄畾鍒伴」鐩<EFBFBD>儗鏅<EFBFBD>姛鑳?
|
||||
- [ ] 固定到项目背景功能
|
||||
- [ ] 文档生成(CRF、研究方案)
|
||||
|
||||
### 阶段4:简化运营后台(1周)
|
||||
- [ ] 鐢ㄦ埛鍒楄〃涓庣<EFBFBD>鐞?
|
||||
- [ ] 用户列表与管理
|
||||
- [ ] 基础数据统计
|
||||
- [ ] 对话记录查看
|
||||
|
||||
@@ -180,29 +180,29 @@
|
||||
|
||||
---
|
||||
|
||||
## 馃洜锔?鎶€鏈<E282AC>爤
|
||||
## 🛠️ 技术栈
|
||||
|
||||
### 前端
|
||||
```
|
||||
- React 18 + TypeScript
|
||||
- Vite(构建工具)
|
||||
- TailwindCSS锛圲I妗嗘灦锛?
|
||||
- TailwindCSS(UI框架)
|
||||
- Zustand(状态管理)
|
||||
- LobeChat组件(聊天UI)⭐
|
||||
- react-markdown锛圡arkdown娓叉煋锛?
|
||||
- react-markdown(Markdown渲染)
|
||||
```
|
||||
|
||||
### 后端
|
||||
```
|
||||
- Node.js + Fastify + TypeScript
|
||||
- Prisma锛圤RM锛?
|
||||
- PostgreSQL锛堟暟鎹<EFBFBD>簱锛?
|
||||
- Prisma(ORM)
|
||||
- PostgreSQL(数据库)
|
||||
- Redis(缓存)
|
||||
```
|
||||
|
||||
### 绗<EFBFBD>笁鏂规湇鍔?
|
||||
### 第三方服务
|
||||
```
|
||||
- Dify锛圧AG鐭ヨ瘑搴擄級猸?
|
||||
- Dify(RAG知识库)⭐
|
||||
- DeepSeek-V3(主力LLM)⭐
|
||||
- Qwen3(备用LLM)⭐
|
||||
- 阿里云OSS(对象存储)
|
||||
@@ -210,86 +210,86 @@
|
||||
|
||||
---
|
||||
|
||||
## 鉁?鏍稿績浼樺娍
|
||||
## ✅ 核心优势
|
||||
|
||||
### 1. 开发效率高
|
||||
- 鉁?澶嶇敤LobeChat鑱婂ぉUI锛氳妭鐪?.5澶?
|
||||
- 鉁?浣跨敤Dify RAG锛氳妭鐪?0澶?
|
||||
- 鉁?閰嶇疆鍖栨櫤鑳戒綋锛氳妭鐪?澶?
|
||||
- 鉁?鎬昏妭鐪侊細**绾?4.5澶?*
|
||||
- ✅ 复用LobeChat聊天UI:节省9.5天
|
||||
- ✅ 使用Dify RAG:节省40天
|
||||
- ✅ 配置化智能体:节省5天
|
||||
- ✅ 总节省:**约54.5天**
|
||||
|
||||
### 2. 成本可控
|
||||
- 鉁?寮€鍙戞垚鏈<E59E9A>細楼49,300锛坴s 绾<>墜鍐櫬?0k+锛?
|
||||
- 鉁?鏈堝害LLM鎴愭湰锛毬?80锛坴s GPT-4 楼2,500锛?
|
||||
- 鉁?鐭ヨ瘑搴撳瓨鍌<E793A8>細楼140/鏈堬紙閫傚害瑙勬ā锛?
|
||||
- ✅ 开发成本:¥49,300(vs 纯手写¥80k+)
|
||||
- ✅ 月度LLM成本:¥180(vs GPT-4 ¥2,500)
|
||||
- ✅ 知识库存储:¥140/月(适度规模)
|
||||
|
||||
### 3. 技术风险低
|
||||
- 鉁?Dify锛?0k+ Stars锛岀敓浜х骇绋冲畾
|
||||
- 鉁?LobeChat锛?0k+ Stars锛屾垚鐔熸柟妗?
|
||||
- 鉁?DeepSeek-V3锛氭€т环姣旀瀬楂?
|
||||
- ✅ Dify:50k+ Stars,生产级稳定
|
||||
- ✅ LobeChat:40k+ Stars,成熟方案
|
||||
- ✅ DeepSeek-V3:性价比极高
|
||||
|
||||
### 4. 架构灵活
|
||||
- 鉁?涓氬姟閫昏緫瀹屽叏鍙<E58F8F>帶
|
||||
- 鉁?鍙<>殢鏃舵浛鎹<E6B59B>AG寮曟搸
|
||||
- 鉁?鍙<>殢鏃跺<E98F83>鍑廘LM妯″瀷
|
||||
- ✅ 业务逻辑完全可控
|
||||
- ✅ 可随时替换RAG引擎
|
||||
- ✅ 可随时增减LLM模型
|
||||
|
||||
---
|
||||
|
||||
## 📋 核心文件结构
|
||||
|
||||
```
|
||||
椤圭洰鏍圭洰褰?
|
||||
项目根目录/
|
||||
├── frontend/ # 前端
|
||||
鈹? 鈹溾攢鈹€ src/
|
||||
鈹? 鈹? 鈹溾攢鈹€ components/
|
||||
鈹? 鈹? 鈹? 鈹溾攢鈹€ chat/ # 鑱婂ぉ缁勪欢锛堝弬鑰僉obeChat锛夆瓙
|
||||
鈹? 鈹? 鈹? 鈹? 鈹溾攢鈹€ ChatMessage.tsx
|
||||
鈹? 鈹? 鈹? 鈹? 鈹溾攢鈹€ ChatInput.tsx
|
||||
鈹? 鈹? 鈹? 鈹? 鈹斺攢鈹€ StreamRenderer.tsx
|
||||
鈹? 鈹? 鈹? 鈹溾攢鈹€ project/ # 椤圭洰绠$悊
|
||||
鈹? 鈹? 鈹? 鈹斺攢鈹€ kb/ # 鐭ヨ瘑搴撶<EFBFBD>鐞?
|
||||
鈹? 鈹? 鈹溾攢鈹€ pages/
|
||||
鈹? 鈹? 鈹斺攢鈹€ services/
|
||||
鈹? 鈹斺攢鈹€ package.json
|
||||
鈹?
|
||||
│ ├── src/
|
||||
│ │ ├── components/
|
||||
│ │ │ ├── chat/ # 聊天组件(参考LobeChat)⭐
|
||||
│ │ │ │ ├── ChatMessage.tsx
|
||||
│ │ │ │ ├── ChatInput.tsx
|
||||
│ │ │ │ └── StreamRenderer.tsx
|
||||
│ │ │ ├── project/ # 项目管理
|
||||
│ │ │ └── kb/ # 知识库管理
|
||||
│ │ ├── pages/
|
||||
│ │ └── services/
|
||||
│ └── package.json
|
||||
│
|
||||
├── backend/ # 后端
|
||||
鈹? 鈹溾攢鈹€ src/
|
||||
鈹? 鈹? 鈹溾攢鈹€ services/
|
||||
鈹? 鈹? 鈹? 鈹溾攢鈹€ chat.service.ts # 瀵硅瘽鏈嶅姟 猸?
|
||||
鈹? 鈹? 鈹? 鈹溾攢鈹€ kb.service.ts # 鐭ヨ瘑搴撴湇鍔?
|
||||
鈹? 鈹? 鈹? 鈹斺攢鈹€ project.service.ts
|
||||
鈹? 鈹? 鈹溾攢鈹€ adapters/
|
||||
鈹? 鈹? 鈹? 鈹斺攢鈹€ llm-factory.ts # LLM閫傞厤鍣?猸?
|
||||
鈹? 鈹? 鈹溾攢鈹€ clients/
|
||||
鈹? 鈹? 鈹? 鈹斺攢鈹€ dify.ts # Dify瀹㈡埛绔?
|
||||
鈹? 鈹? 鈹斺攢鈹€ config/
|
||||
鈹? 鈹? 鈹斺攢鈹€ agent-loader.ts # 鏅鸿兘浣撻厤缃<EFBFBD>姞杞?猸?
|
||||
鈹? 鈹溾攢鈹€ config/
|
||||
鈹? 鈹? 鈹溾攢鈹€ agents.yaml # 鏅鸿兘浣撻厤缃?猸?
|
||||
鈹? 鈹? 鈹斺攢鈹€ models.yaml # 妯″瀷閰嶇疆 猸?
|
||||
鈹? 鈹溾攢鈹€ prompts/ # Prompt鏂囦欢 猸?
|
||||
鈹? 鈹? 鈹溾攢鈹€ picos_system.txt
|
||||
鈹? 鈹? 鈹溾攢鈹€ topic_evaluation_system.txt
|
||||
鈹? 鈹? 鈹斺攢鈹€ ...锛堝叡12涓<32>櫤鑳戒綋锛?
|
||||
鈹? 鈹斺攢鈹€ package.json
|
||||
鈹?
|
||||
│ ├── src/
|
||||
│ │ ├── services/
|
||||
│ │ │ ├── chat.service.ts # 对话服务 ⭐
|
||||
│ │ │ ├── kb.service.ts # 知识库服务
|
||||
│ │ │ └── project.service.ts
|
||||
│ │ ├── adapters/
|
||||
│ │ │ └── llm-factory.ts # LLM适配器 ⭐
|
||||
│ │ ├── clients/
|
||||
│ │ │ └── dify.ts # Dify客户端
|
||||
│ │ └── config/
|
||||
│ │ └── agent-loader.ts # 智能体配置加载 ⭐
|
||||
│ ├── config/
|
||||
│ │ ├── agents.yaml # 智能体配置 ⭐
|
||||
│ │ └── models.yaml # 模型配置 ⭐
|
||||
│ ├── prompts/ # Prompt文件 ⭐
|
||||
│ │ ├── picos_system.txt
|
||||
│ │ ├── topic_evaluation_system.txt
|
||||
│ │ └── ...(共12个智能体)
|
||||
│ └── package.json
|
||||
│
|
||||
└── docker-compose.yml # Dify部署
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 馃殌 蹇<>€熷惎鍔?
|
||||
## 🚀 快速启动
|
||||
|
||||
### 1. 准备工作
|
||||
|
||||
**鐢宠<EFBFBD>API Key锛?*
|
||||
**申请API Key:**
|
||||
- [ ] DeepSeek API Key (https://platform.deepseek.com)
|
||||
- [ ] 阿里云DashScope Key (https://dashscope.aliyun.com)
|
||||
- [ ] 阿里云OSS (https://oss.console.aliyun.com)
|
||||
|
||||
**准备服务器:**
|
||||
- [ ] 浜戞湇鍔″櫒 4鏍?G锛堝紑鍙戠幆澧冿級
|
||||
- [ ] PostgreSQL 鏁版嵁搴?
|
||||
- [ ] 云服务器 4核8G(开发环境)
|
||||
- [ ] PostgreSQL 数据库
|
||||
- [ ] Redis 缓存
|
||||
|
||||
### 2. 部署Dify
|
||||
@@ -306,7 +306,7 @@ docker-compose up -d
|
||||
# 创建账号并获取API Key
|
||||
```
|
||||
|
||||
### 3. 鍚庣<EFBFBD>寮€鍙?
|
||||
### 3. 后端开发
|
||||
|
||||
```bash
|
||||
cd backend
|
||||
@@ -314,21 +314,21 @@ npm install
|
||||
|
||||
# 配置环境变量
|
||||
cp .env.example .env
|
||||
# 濉<EFBFBD>叆锛?
|
||||
# 填入:
|
||||
# - DATABASE_URL
|
||||
# - REDIS_URL
|
||||
# - DEEPSEEK_API_KEY
|
||||
# - DASHSCOPE_API_KEY
|
||||
# - DIFY_API_KEY
|
||||
|
||||
# 杩愯<EFBFBD>鏁版嵁搴撹縼绉?
|
||||
# 运行数据库迁移
|
||||
npx prisma migrate dev
|
||||
|
||||
# 启动开发服务器
|
||||
npm run dev
|
||||
```
|
||||
|
||||
### 4. 鍓嶇<EFBFBD>寮€鍙?
|
||||
### 4. 前端开发
|
||||
|
||||
```bash
|
||||
cd frontend
|
||||
@@ -347,66 +347,66 @@ npm run dev
|
||||
## 📚 相关文档
|
||||
|
||||
### 设计文档
|
||||
- [浜у搧闇€姹傛枃妗?PRD)](./浜у搧闇€姹傛枃妗?PRD).md) - 瀹屾暣鐨勪骇鍝侀渶姹?
|
||||
- [鏁版嵁搴撹<EFBFBD>璁℃枃妗<EFBFBD>(../01-璁捐<E79281>鏂囨。/鏁版嵁搴撹<E690B4>璁℃枃妗?md) - 鏁版嵁搴撹〃缁撴瀯
|
||||
- [产品需求文档(PRD)](./产品需求文档(PRD).md) - 完整的产品需求
|
||||
- [数据库设计文档](../01-设计文档/数据库设计文档.md) - 数据库表结构
|
||||
- [API设计规范](../01-设计文档/API设计规范.md) - 所有API定义
|
||||
- [浠g爜瑙勮寖](../02-寮€鍙戣<EFBFBD>鑼?浠g爜瑙勮寖.md) - 浠g爜椋庢牸瑙勮寖
|
||||
- [代码规范](../02-开发规范/代码规范.md) - 代码风格规范
|
||||
- [核心业务规则](../03-业务规则/核心业务规则总览.md) - 业务逻辑规则
|
||||
|
||||
### 寮€鍙戣<EFBFBD>鍒?
|
||||
- [寮€鍙戦噷绋嬬<EFBFBD>](../04-寮€鍙戣<EFBFBD>鍒?寮€鍙戦噷绋嬬<E7BB8B>.md) - 璇︾粏鐨?0鍛ㄥ紑鍙戣<E98D99>鍒?
|
||||
### 开发计划
|
||||
- [开发里程碑](../04-开发计划/开发里程碑.md) - 详细的10周开发计划
|
||||
|
||||
### 鍙傝€冩枃妗?
|
||||
- **鎶€鏈<EFBFBD>灦鏋勯€夊瀷瀵规瘮鏂规<EFBFBD>.md** - 瀹屾暣鎶€鏈<E282AC>柟妗堬紙鍦ㄩ」鐩<E3808D>牴鐩<E789B4>綍锛?
|
||||
### 参考文档
|
||||
- **技术架构选型对比方案.md** - 完整技术方案(在项目根目录)
|
||||
- **对话系统实现方案对比.md** - 对话功能详细说明(在项目根目录)
|
||||
- **鐭ヨ瘑搴撻渶姹傝皟鏁磋<EFBFBD>鏄?md** - 鐭ヨ瘑搴撳疄鐜版柟妗堬紙鍦ㄩ」鐩<E3808D>牴鐩<E789B4>綍锛?
|
||||
- **知识库需求调整说明.md** - 知识库实现方案(在项目根目录)
|
||||
|
||||
---
|
||||
|
||||
## 🎯 关键决策清单
|
||||
|
||||
**鍦ㄥ紑濮嬪紑鍙戝墠锛岃<EFBFBD>纭<EFBFBD><EFBFBD>锛?*
|
||||
**在开始开发前,请确认:**
|
||||
|
||||
- [ ] **鑱婂ぉ瀹炵幇鏂瑰紡锛?* 鍙傝€僉obeChat + 鑷<>爺瀵硅瘽閫昏緫 鉁?
|
||||
- [ ] **RAG绯荤粺锛?* 浣跨敤Dify锛堟棤闇€鑷<E282AC>缓锛夆渽
|
||||
- [ ] **聊天实现方式:** 参考LobeChat + 自研对话逻辑 ✅
|
||||
- [ ] **RAG系统:** 使用Dify(无需自建)✅
|
||||
- [ ] **向量数据库:** Dify内置Qdrant(无需关心)✅
|
||||
- [ ] **杩愯惀鍚庡彴锛?* 绠€鍖栫増锛堥厤缃<E58EA4>枃浠剁<E6B5A0>鐞嗭級鉁?
|
||||
- [ ] **涓诲姏LLM锛?* DeepSeek-V3 鉁?
|
||||
- [ ] **澶囩敤LLM锛?* Qwen3 鉁?
|
||||
- [ ] **鐭ヨ瘑搴撻檺鍒讹細** 3涓?鐢ㄦ埛锛?0涓<30>枃浠?搴?鉁?
|
||||
- [ ] **寮€鍙戝懆鏈燂細** 2.5涓<EFBFBD>湀 鉁?
|
||||
- [ ] **鍥㈤槦瑙勬ā锛?* 2浜?鉁?
|
||||
- [ ] **运营后台:** 简化版(配置文件管理)✅
|
||||
- [ ] **主力LLM:** DeepSeek-V3 ✅
|
||||
- [ ] **备用LLM:** Qwen3 ✅
|
||||
- [ ] **知识库限制:** 3个/用户,50个文件/库 ✅
|
||||
- [ ] **开发周期:** 2.5个月 ✅
|
||||
- [ ] **团队规模:** 2人 ✅
|
||||
|
||||
---
|
||||
|
||||
## 💡 常见问题 FAQ
|
||||
|
||||
### Q1: 为什么不直接用Dify的对话功能?
|
||||
**A:** Dify瀵硅瘽鍔熻兘闇€瑕佷负姣忎釜鏅鸿兘浣撳垱寤虹嫭绔嬪簲鐢<EFBFBD>紝12涓<EFBFBD>櫤鑳戒綋绠$悊澶嶆潅锛屼笖缂哄皯椤圭洰绠$悊鍔熻兘銆傛垜浠<EFBFBD>彧鐢―ify鍋歊AG妫€绱€€?
|
||||
**A:** Dify对话功能需要为每个智能体创建独立应用,12个智能体管理复杂,且缺少项目管理功能。我们只用Dify做RAG检索。
|
||||
|
||||
### Q2: 对话功能自己实现会很复杂吗?
|
||||
**A:** 涓嶅<EFBFBD>鏉傦紒鏍稿績鍙<EFBFBD><EFBFBD>4姝ワ細鎺ユ敹娑堟伅 鈫?缁勮<E7BC81>涓婁笅鏂?鈫?璋冪敤LLM 鈫?杩斿洖娴佸紡缁撴灉銆傚弬鑰僉obeChat鐨勫疄鐜帮紝绾﹂渶4澶┿€?
|
||||
**A:** 不复杂!核心只要4步:接收消息 → 组装上下文 → 调用LLM → 返回流式结果。参考LobeChat的实现,约需4天。
|
||||
|
||||
### Q3: 150涓<EFBFBD>枃浠?鐢ㄦ埛锛孌ify澶熺敤鍚楋紵
|
||||
**A:** 瀹屽叏澶熺敤锛丏ify鍗曚釜鐭ヨ瘑搴撴敮鎸佷笂涓囦釜鏂囨。鐗囨<EFBFBD>锛屾垜浠<EFBFBD>殑闇€姹傝繙浣庝簬涓婇檺銆?
|
||||
### Q3: 150个文件/用户,Dify够用吗?
|
||||
**A:** 完全够用!Dify单个知识库支持上万个文档片段,我们的需求远低于上限。
|
||||
|
||||
### Q4: 涓轰粈涔堥€夋嫨DeepSeek-V3锛?
|
||||
**A:** 鎬т环姣旀瀬楂橈紙楼1/鐧句竾tokens锛夛紝鎬ц兘鎺ヨ繎GPT-4锛屽勾搴﹀彲鑺傜渷楼27,840銆?
|
||||
### Q4: 为什么选择DeepSeek-V3?
|
||||
**A:** 性价比极高(¥1/百万tokens),性能接近GPT-4,年度可节省¥27,840。
|
||||
|
||||
### Q5: 2.5涓<EFBFBD>湀鐪熺殑鑳藉畬鎴愬悧锛?
|
||||
**A:** 鍙<EFBFBD>互锛侀€氳繃澶嶇敤LobeChat缁勪欢銆佷娇鐢―ify RAG銆侀厤缃<E58EA4>寲鏅鸿兘浣擄紝鎴戜滑鑺傜渷浜嗙害54澶╁紑鍙戞椂闂淬€?
|
||||
### Q5: 2.5个月真的能完成吗?
|
||||
**A:** 可以!通过复用LobeChat组件、使用Dify RAG、配置化智能体,我们节省了约54天开发时间。
|
||||
|
||||
---
|
||||
|
||||
## 🎉 总结
|
||||
|
||||
**杩欐槸涓€涓<EFBFBD>粡杩囧厖鍒嗕紭鍖栥€佹垚鏈<EFBFBD>彲鎺с€佹妧鏈<EFBFBD>彲琛岀殑鏂规<EFBFBD>锛?*
|
||||
**这是一个经过充分优化、成本可控、技术可行的方案:**
|
||||
|
||||
鉁?**寮€鍙戝懆鏈燂細** 2.5涓<EFBFBD>湀
|
||||
鉁?**寮€鍙戞垚鏈<E59E9A>細** 楼49,300
|
||||
鉁?**鏈堝害鎴愭湰锛?* 楼16,520锛?000鐢ㄦ埛锛?
|
||||
鉁?**鎶€鏈<E282AC>毦搴︼細** 猸愨瓙猸愶紙涓<E7B499>瓑锛?
|
||||
鉁?**椋庨櫓绛夌骇锛?* 浣庯紙浣跨敤鎴愮啛缁勪欢鍜屾湇鍔★級
|
||||
✅ **开发周期:** 2.5个月
|
||||
✅ **开发成本:** ¥49,300
|
||||
✅ **月度成本:** ¥16,520(1000用户)
|
||||
✅ **技术难度:** ⭐⭐⭐(中等)
|
||||
✅ **风险等级:** 低(使用成熟组件和服务)
|
||||
|
||||
**立即可以开始!** 🚀
|
||||
|
||||
@@ -414,8 +414,8 @@ npm run dev
|
||||
|
||||
**文档版本:v2.0**
|
||||
**最后更新:2025-10-10**
|
||||
**鏂囨。浣嶇疆锛?* `docs/00-椤圭洰姒傝堪/鎶€鏈<E282AC>灦鏋勬€昏<E282AC>.md`
|
||||
**浣滆€咃細** AI鎶€鏈<EFBFBD>【闂?
|
||||
**文档位置:** `docs/00-项目概述/技术架构总览.md`
|
||||
**作者:** AI技术顾问
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user