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:
@@ -2,9 +2,9 @@
|
||||
|
||||
> **文档类型**: 技术债务
|
||||
> **创建日期**: 2025-12-06
|
||||
> **浼樺厛绾?*: P2锛堜腑鏈熶紭鍖栵級
|
||||
> **棰勮<EFBFBD>宸ユ椂**: 2-3澶?
|
||||
> **褰卞搷妯″潡**: AIA銆丳KB銆乀ool C銆佹湭鏉<E6B9AD>I鐭ヨ瘑搴撴ā鍧?
|
||||
> **优先级**: P2(中期优化)
|
||||
> **预计工时**: 2-3天
|
||||
> **影响模块**: AIA、PKB、Tool C、未来AI知识库模块
|
||||
|
||||
---
|
||||
|
||||
@@ -12,37 +12,37 @@
|
||||
|
||||
### 当前现状
|
||||
|
||||
**鍚庣<EFBFBD>瀵硅瘽鑳藉姏鍒嗗竷**锛?
|
||||
**后端对话能力分布**:
|
||||
```
|
||||
鉁?閫氱敤鑳藉姏灞傦紙common/锛?
|
||||
鈹溾攢鈹€ llm/adapters/ 鈫?LLM閫傞厤鍣<EFBFBD>紙瀹屾暣锛?
|
||||
鈹? 鈹溾攢鈹€ LLMFactory.ts 鈫?缁熶竴宸ュ巶绫?
|
||||
鈹? 鈹溾攢鈹€ DeepSeekAdapter.ts
|
||||
鈹? 鈹溾攢鈹€ QwenAdapter.ts
|
||||
鈹? 鈹溾攢鈹€ GPT5Adapter.ts
|
||||
鈹? 鈹斺攢鈹€ ClaudeAdapter.ts
|
||||
鈹溾攢鈹€ rag/ 鈫?RAG妫€绱<EFBFBD>紙瀹屾暣锛?
|
||||
鈹? 鈹斺攢鈹€ DifyClient.ts
|
||||
鈹斺攢鈹€ storage/, logging/, cache/ 鈫?鍩虹<E98DA9>璁炬柦锛堝畬鏁达級
|
||||
✅ 通用能力层(common/)
|
||||
├── llm/adapters/ ← LLM适配器(完整)
|
||||
│ ├── LLMFactory.ts ← 统一工厂类
|
||||
│ ├── DeepSeekAdapter.ts
|
||||
│ ├── QwenAdapter.ts
|
||||
│ ├── GPT5Adapter.ts
|
||||
│ └── ClaudeAdapter.ts
|
||||
├── rag/ ← RAG检索(完整)
|
||||
│ └── DifyClient.ts
|
||||
└── storage/, logging/, cache/ ← 基础设施(完整)
|
||||
|
||||
鈿狅笍 涓氬姟灞傦紙legacy/锛?
|
||||
⚠️ 业务层(legacy/)
|
||||
└── services/
|
||||
鈹斺攢鈹€ conversationService.ts 鈫?瀵硅瘽绠$悊閫昏緫锛?25琛岋級
|
||||
└── conversationService.ts ← 对话管理逻辑(625行)
|
||||
├── 创建对话
|
||||
鈹溾攢鈹€ 鍙戦€佹秷鎭?
|
||||
├── 发送消息
|
||||
├── 流式输出
|
||||
鈹溾攢鈹€ 涓婁笅鏂囩粍瑁?
|
||||
├── 上下文组装
|
||||
├── 历史管理
|
||||
鈹斺攢鈹€ 鐭ヨ瘑搴撴<E690B4>绱㈤泦鎴?
|
||||
└── 知识库检索集成
|
||||
```
|
||||
|
||||
**鍓嶇<EFBFBD>缁勪欢鍒嗗竷**锛?
|
||||
**前端组件分布**:
|
||||
```
|
||||
鉂?缂哄皯閫氱敤瀵硅瘽缁勪欢
|
||||
❌ 缺少通用对话组件
|
||||
各模块重复实现:
|
||||
├── AIA模块 - 自己实现对话UI
|
||||
├── PKB模块 - 自己实现对话UI
|
||||
鈹斺攢鈹€ Tool C妯″潡 - 鑷<>繁瀹炵幇瀵硅瘽UI锛圖ay 3锛?
|
||||
└── Tool C模块 - 自己实现对话UI(Day 3)
|
||||
```
|
||||
|
||||
---
|
||||
@@ -51,25 +51,25 @@
|
||||
|
||||
### 代码重复
|
||||
|
||||
| 鍔熻兘 | 褰撳墠鐘舵€?| 閲嶅<E996B2>搴?|
|
||||
| 功能 | 当前状态 | 重复度 |
|
||||
|------|---------|--------|
|
||||
| **LLM璋冪敤** | 鉁?宸叉娊鍙栵紙common/llm锛?| 0% |
|
||||
| **LLM调用** | ✅ 已抽取(common/llm) | 0% |
|
||||
| **对话管理** | ⚠️ 未抽取(legacy中) | 80% |
|
||||
| **消息存储** | ⚠️ 各模块独立表 | 60% |
|
||||
| **涓婁笅鏂囩粍瑁?* | 鈿狅笍 鍚勬ā鍧楅噸澶嶅疄鐜?| 70% |
|
||||
| **娴佸紡杈撳嚭** | 鈿狅笍 鍚勬ā鍧楅噸澶嶅疄鐜?| 80% |
|
||||
| **鍓嶇<EFBFBD>瀵硅瘽UI** | 鉂?瀹屽叏鏈<E58F8F>娊鍙?| 90% |
|
||||
| **上下文组装** | ⚠️ 各模块重复实现 | 70% |
|
||||
| **流式输出** | ⚠️ 各模块重复实现 | 80% |
|
||||
| **前端对话UI** | ❌ 完全未抽取 | 90% |
|
||||
|
||||
### 影响范围
|
||||
|
||||
**鐜版湁妯″潡**锛?
|
||||
- AIA锛圓I鏅鸿兘闂<EFBFBD>瓟锛? 浣跨敤legacy/conversationService
|
||||
- PKB锛堜釜浜虹煡璇嗗簱锛? 浣跨敤legacy/conversationService
|
||||
**现有模块**:
|
||||
- AIA(AI智能问答)- 使用legacy/conversationService
|
||||
- PKB(个人知识库)- 使用legacy/conversationService
|
||||
- Tool C(数据清洗)- Day 3自己实现(~150行重复代码)
|
||||
|
||||
**鏈<EFBFBD>潵妯″潡**锛?
|
||||
- AI鐭ヨ瘑搴撴ā鍧?- 闇€瑕侀噸澶嶅疄鐜?
|
||||
- 鍏朵粬AI瀵硅瘽鍦烘櫙 - 闇€瑕侀噸澶嶅疄鐜?
|
||||
**未来模块**:
|
||||
- AI知识库模块 - 需要重复实现
|
||||
- 其他AI对话场景 - 需要重复实现
|
||||
|
||||
---
|
||||
|
||||
@@ -77,21 +77,21 @@
|
||||
|
||||
### 方案:抽取通用对话服务
|
||||
|
||||
#### 绗<EFBFBD>竴闃舵<EFBFBD>锛氬悗绔<EFBFBD>湇鍔℃娊鍙?
|
||||
#### 第一阶段:后端服务抽取
|
||||
|
||||
**鍒涘缓閫氱敤瀵硅瘽鏈嶅姟**锛?
|
||||
**创建通用对话服务**:
|
||||
```typescript
|
||||
// backend/src/common/conversation/ConversationService.ts
|
||||
export class ConversationService {
|
||||
/**
|
||||
* 通用对话接口
|
||||
* 鏀<EFBFBD>寔澶氱<EFBFBD>鍦烘櫙锛欰IA銆丳KB銆乀ool C绛?
|
||||
* 支持多种场景:AIA、PKB、Tool C等
|
||||
*/
|
||||
async chat(config: ChatConfig): Promise<ChatResponse> {
|
||||
// 1. 鏋勫缓娑堟伅涓婁笅鏂?
|
||||
// 1. 构建消息上下文
|
||||
const messages = await this.buildContext(config);
|
||||
|
||||
// 2. 璋冪敤LLM锛堝<EFBFBD>鐢↙LMFactory锛?
|
||||
// 2. 调用LLM(复用LLMFactory)
|
||||
const llm = LLMFactory.createAdapter(config.modelType);
|
||||
const response = await llm.chat(messages, config.options);
|
||||
|
||||
@@ -118,10 +118,10 @@ export class ConversationService {
|
||||
|
||||
/**
|
||||
* 获取对话历史
|
||||
* 鏀<EFBFBD>寔澶氱<EFBFBD>瀛樺偍鏂瑰紡锛堢粺涓€鎺ュ彛锛屼笉鍚岃〃锛?
|
||||
* 支持多种存储方式(统一接口,不同表)
|
||||
*/
|
||||
async getHistory(conversationId: string, options?: HistoryOptions) {
|
||||
// 鏍规嵁conversationType璺<EFBFBD>敱鍒颁笉鍚岀殑琛?
|
||||
// 根据conversationType路由到不同的表
|
||||
const adapter = this.getStorageAdapter(options.conversationType);
|
||||
return await adapter.getHistory(conversationId, options);
|
||||
}
|
||||
@@ -136,8 +136,8 @@ export class ConversationService {
|
||||
}
|
||||
|
||||
/**
|
||||
* 鏋勫缓涓婁笅鏂?
|
||||
* 鏀<EFBFBD>寔锛歋ystem Prompt + 鍘嗗彶娑堟伅 + 褰撳墠娑堟伅 + RAG妫€绱?
|
||||
* 构建上下文
|
||||
* 支持:System Prompt + 历史消息 + 当前消息 + RAG检索
|
||||
*/
|
||||
private async buildContext(config: ChatConfig): Promise<Message[]> {
|
||||
const messages: Message[] = [];
|
||||
@@ -189,7 +189,7 @@ interface ChatConfig {
|
||||
}
|
||||
```
|
||||
|
||||
**瀛樺偍閫傞厤鍣?*锛堟敮鎸佷笉鍚屾ā鍧楃殑涓嶅悓琛<E68293>級锛?
|
||||
**存储适配器**(支持不同模块的不同表):
|
||||
```typescript
|
||||
// backend/src/common/conversation/adapters/StorageAdapter.ts
|
||||
interface ConversationStorageAdapter {
|
||||
@@ -197,7 +197,7 @@ interface ConversationStorageAdapter {
|
||||
saveMessage(conversationId: string, userMsg: string, aiResponse: any): Promise<void>;
|
||||
}
|
||||
|
||||
// AIA/PKB浣跨敤閫氱敤琛?
|
||||
// AIA/PKB使用通用表
|
||||
class GeneralStorageAdapter implements ConversationStorageAdapter {
|
||||
async getHistory(conversationId: string) {
|
||||
return await prisma.generalMessage.findMany({
|
||||
@@ -208,7 +208,7 @@ class GeneralStorageAdapter implements ConversationStorageAdapter {
|
||||
}
|
||||
}
|
||||
|
||||
// Tool C浣跨敤鐙<EFBFBD>珛琛?
|
||||
// Tool C使用独立表
|
||||
class ToolCStorageAdapter implements ConversationStorageAdapter {
|
||||
async getHistory(conversationId: string) {
|
||||
return await prisma.dcToolCAiHistory.findMany({
|
||||
@@ -222,16 +222,16 @@ class ToolCStorageAdapter implements ConversationStorageAdapter {
|
||||
|
||||
---
|
||||
|
||||
#### 绗<EFBFBD>簩闃舵<EFBFBD>锛氬墠绔<EFBFBD>粍浠舵娊鍙?
|
||||
#### 第二阶段:前端组件抽取
|
||||
|
||||
**鍒涘缓閫氱敤瀵硅瘽缁勪欢搴?*锛?
|
||||
**创建通用对话组件库**:
|
||||
```tsx
|
||||
// frontend-v2/src/shared/components/Chat/
|
||||
鈹溾攢鈹€ ChatContainer.tsx // 瀵硅瘽瀹瑰櫒锛堝竷灞€锛?
|
||||
├── ChatContainer.tsx // 对话容器(布局)
|
||||
├── MessageList.tsx // 消息列表(虚拟滚动)
|
||||
鈹溾攢鈹€ MessageItem.tsx // 鍗曟潯娑堟伅锛堢敤鎴?AI锛?
|
||||
鈹溾攢鈹€ MessageInput.tsx // 杈撳叆妗嗭紙鏀<EFBFBD>寔澶氳<EFBFBD>銆佸揩鎹烽敭锛?
|
||||
鈹溾攢鈹€ StreamingMessage.tsx // 娴佸紡娓叉煋锛堟墦瀛楁満鏁堟灉锛?
|
||||
├── MessageItem.tsx // 单条消息(用户/AI)
|
||||
├── MessageInput.tsx // 输入框(支持多行、快捷键)
|
||||
├── StreamingMessage.tsx // 流式渲染(打字机效果)
|
||||
├── CitationBadge.tsx // 引用标记
|
||||
├── LoadingIndicator.tsx // 加载动画
|
||||
└── index.ts
|
||||
@@ -249,42 +249,42 @@ import { ChatContainer } from '@/shared/components/Chat';
|
||||
/>
|
||||
```
|
||||
|
||||
**缁勪欢鐗规€?*锛?
|
||||
- 鉁?鏀<>寔娴佸紡/闈炴祦寮忔覆鏌?
|
||||
- 鉁?鏀<>寔寮曠敤璺宠浆
|
||||
- 鉁?鏀<>寔鍘嗗彶娑堟伅鍔犺浇
|
||||
- 鉁?鏀<>寔Markdown娓叉煋
|
||||
- 鉁?鏀<>寔浠g爜楂樹寒
|
||||
- 鉁?鍝嶅簲寮忓竷灞€
|
||||
**组件特性**:
|
||||
- ✅ 支持流式/非流式渲染
|
||||
- ✅ 支持引用跳转
|
||||
- ✅ 支持历史消息加载
|
||||
- ✅ 支持Markdown渲染
|
||||
- ✅ 支持代码高亮
|
||||
- ✅ 响应式布局
|
||||
|
||||
---
|
||||
|
||||
## 馃搳 鏀归€犲墠鍚庡<E98D9A>姣?
|
||||
## 📊 改造前后对比
|
||||
|
||||
### 浠g爜閲忓<EFBFBD>姣?
|
||||
### 代码量对比
|
||||
|
||||
| 模块 | 改造前 | 改造后 | 减少 |
|
||||
|------|--------|--------|------|
|
||||
| **后端** |
|
||||
| AIA瀵硅瘽閫昏緫 | 200琛?| 50琛岋紙璋冪敤閫氱敤鏈嶅姟锛?| -75% |
|
||||
| PKB瀵硅瘽閫昏緫 | 180琛?| 50琛?| -72% |
|
||||
| Tool C瀵硅瘽閫昏緫 | 150琛?| 50琛?| -67% |
|
||||
| 閫氱敤鏈嶅姟 | 0琛?| 300琛岋紙鏂板缓锛?| +300琛?|
|
||||
| **鎬昏<EFBFBD>** | 530琛?| 450琛?| **-15%** |
|
||||
| AIA对话逻辑 | 200行 | 50行(调用通用服务) | -75% |
|
||||
| PKB对话逻辑 | 180行 | 50行 | -72% |
|
||||
| Tool C对话逻辑 | 150行 | 50行 | -67% |
|
||||
| 通用服务 | 0行 | 300行(新建) | +300行 |
|
||||
| **总计** | 530行 | 450行 | **-15%** |
|
||||
| **前端** |
|
||||
| 鍚勬ā鍧楀<EFBFBD>璇漊I | 600琛屆? | 200琛屆?锛堣皟鐢ㄩ€氱敤缁勪欢锛?| -67% |
|
||||
| 閫氱敤缁勪欢 | 0琛?| 500琛岋紙鏂板缓锛?| +500琛?|
|
||||
| **鎬昏<EFBFBD>** | 1800琛?| 1100琛?| **-39%** |
|
||||
| **鍏ㄩ儴鍚堣<EFBFBD>** | 2330琛?| 1550琛?| **-33%** |
|
||||
| 各模块对话UI | 600行×3 | 200行×3(调用通用组件) | -67% |
|
||||
| 通用组件 | 0行 | 500行(新建) | +500行 |
|
||||
| **总计** | 1800行 | 1100行 | **-39%** |
|
||||
| **全部合计** | 2330行 | 1550行 | **-33%** |
|
||||
|
||||
### 质量提升
|
||||
|
||||
| 指标 | 改造前 | 改造后 | 提升 |
|
||||
|------|--------|--------|------|
|
||||
| 浠g爜澶嶇敤鐜?| 20% | 80% | +300% |
|
||||
| 缁熶竴浜や簰浣撻獙 | 鉂?| 鉁?| 100% |
|
||||
| 鏈<EFBFBD>潵鎵╁睍鎴愭湰 | 楂橈紙姣忔<E5A7A3>閲嶅<E996B2>锛?| 浣庯紙鐩存帴澶嶇敤锛?| -80% |
|
||||
| 缁存姢鎴愭湰 | 楂橈紙澶氬<E6BEB6>淇<EFBFBD>敼锛?| 浣庯紙鍗曠偣淇<E581A3>敼锛?| -70% |
|
||||
| 代码复用率 | 20% | 80% | +300% |
|
||||
| 统一交互体验 | ❌ | ✅ | 100% |
|
||||
| 未来扩展成本 | 高(每次重复) | 低(直接复用) | -80% |
|
||||
| 维护成本 | 高(多处修改) | 低(单点修改) | -70% |
|
||||
|
||||
---
|
||||
|
||||
@@ -292,25 +292,25 @@ import { ChatContainer } from '@/shared/components/Chat';
|
||||
|
||||
### 阶段1:后端服务抽取(1.5天)
|
||||
|
||||
**Day 1涓婂崍锛氳<EFBFBD>璁?*
|
||||
**Day 1上午:设计**
|
||||
- [ ] 设计ConversationService接口
|
||||
- [ ] 设计StorageAdapter接口
|
||||
- [ ] 设计ChatConfig配置结构
|
||||
|
||||
**Day 1涓嬪崍锛氬疄鐜版牳蹇冩湇鍔?*
|
||||
**Day 1下午:实现核心服务**
|
||||
- [ ] 实现ConversationService核心逻辑
|
||||
- [ ] 实现GeneralStorageAdapter
|
||||
- [ ] 实现ToolCStorageAdapter
|
||||
|
||||
**Day 2涓婂崍锛氳縼绉荤幇鏈夋ā鍧?*
|
||||
- [ ] AIA妯″潡鏀归€狅紙浣跨敤閫氱敤鏈嶅姟锛?
|
||||
- [ ] PKB妯″潡鏀归€狅紙浣跨敤閫氱敤鏈嶅姟锛?
|
||||
- [ ] Tool C妯″潡鏀归€狅紙浣跨敤閫氱敤鏈嶅姟锛?
|
||||
**Day 2上午:迁移现有模块**
|
||||
- [ ] AIA模块改造(使用通用服务)
|
||||
- [ ] PKB模块改造(使用通用服务)
|
||||
- [ ] Tool C模块改造(使用通用服务)
|
||||
|
||||
**Day 2涓嬪崍锛氭祴璇?*
|
||||
**Day 2下午:测试**
|
||||
- [ ] 单元测试
|
||||
- [ ] 集成测试
|
||||
- [ ] 鍥炲綊娴嬭瘯锛堢‘淇濆師鍔熻兘姝e父锛?
|
||||
- [ ] 回归测试(确保原功能正常)
|
||||
|
||||
---
|
||||
|
||||
@@ -318,21 +318,21 @@ import { ChatContainer } from '@/shared/components/Chat';
|
||||
|
||||
**Day 3上午:设计与实现**
|
||||
- [ ] 设计ChatContainer API
|
||||
- [ ] 瀹炵幇鏍稿績缁勪欢锛?涓<>級
|
||||
- [ ] 实现核心组件(6个)
|
||||
- [ ] 样式统一
|
||||
|
||||
**Day 3下午:迁移与测试**
|
||||
- [ ] AIA妯″潡鍓嶇<EFBFBD>鏀归€?
|
||||
- [ ] PKB妯″潡鍓嶇<EFBFBD>鏀归€?
|
||||
- [ ] Tool C妯″潡鍓嶇<EFBFBD>鏀归€?
|
||||
- [ ] AIA模块前端改造
|
||||
- [ ] PKB模块前端改造
|
||||
- [ ] Tool C模块前端改造
|
||||
- [ ] UI测试
|
||||
|
||||
---
|
||||
|
||||
### 闃舵<EFBFBD>3锛氭枃妗d笌鍩硅<EFBFBD>锛?.5澶╋級
|
||||
### 阶段3:文档与培训(0.5天)
|
||||
|
||||
- [ ] 编写使用文档
|
||||
- [ ] 缂栧啓鏈€浣冲疄璺?
|
||||
- [ ] 编写最佳实践
|
||||
- [ ] 团队培训
|
||||
|
||||
---
|
||||
@@ -345,7 +345,7 @@ import { ChatContainer } from '@/shared/components/Chat';
|
||||
- [ ] Tool C模块对话功能正常
|
||||
- [ ] 流式输出正常
|
||||
- [ ] 历史消息加载正常
|
||||
- [ ] RAG妫€绱㈤泦鎴愭<EFBFBD>甯?
|
||||
- [ ] RAG检索集成正常
|
||||
|
||||
### 代码质量
|
||||
- [ ] 代码复用率≥80%
|
||||
@@ -354,8 +354,8 @@ import { ChatContainer } from '@/shared/components/Chat';
|
||||
- [ ] 无ESLint警告
|
||||
|
||||
### 用户体验
|
||||
- [ ] 瀵硅瘽浜や簰娴佺晠锛堝搷搴?2绉掞級
|
||||
- [ ] 娴佸紡杈撳嚭娴佺晠锛堟棤鍗¢】锛?
|
||||
- [ ] 对话交互流畅(响应<2秒)
|
||||
- [ ] 流式输出流畅(无卡顿)
|
||||
- [ ] UI统一美观
|
||||
- [ ] 移动端适配良好
|
||||
|
||||
@@ -363,92 +363,91 @@ import { ChatContainer } from '@/shared/components/Chat';
|
||||
|
||||
## 💰 收益分析
|
||||
|
||||
### 鐭<EFBFBD>湡鏀剁泭锛?涓<>湀鍐咃級
|
||||
### 短期收益(1个月内)
|
||||
|
||||
1. **代码质量提升**
|
||||
- 减少重复代码33%
|
||||
- 提升代码复用率至80%
|
||||
- 降低维护成本70%
|
||||
|
||||
2. **寮€鍙戞晥鐜囨彁鍗?*
|
||||
- 鏂版ā鍧楀<EFBFBD>璇濆姛鑳藉紑鍙戞椂闂达細浠?澶┾啋0.5澶╋紙-75%锛?
|
||||
- Bug淇<EFBFBD><EFBFBD>鏁堢巼锛氬崟鐐逛慨鏀癸紝褰卞搷鍏ㄥ眬锛?200%锛?
|
||||
2. **开发效率提升**
|
||||
- 新模块对话功能开发时间:从2天→0.5天(-75%)
|
||||
- Bug修复效率:单点修改,影响全局(+200%)
|
||||
|
||||
3. **用户体验统一**
|
||||
- 统一交互模式
|
||||
- 统一视觉风格
|
||||
- 统一性能标准
|
||||
|
||||
### 闀挎湡鏀剁泭锛?-6涓<36>湀锛?
|
||||
### 长期收益(3-6个月)
|
||||
|
||||
1. **支持未来模块**
|
||||
- AI鐭ヨ瘑搴撴ā鍧楋細鐩存帴澶嶇敤锛?棰濆<E6A3B0>寮€鍙?
|
||||
- 鍏朵粬AI瀵硅瘽鍦烘櫙锛氬揩閫熷疄鐜?
|
||||
- AI知识库模块:直接复用,0额外开发
|
||||
- 其他AI对话场景:快速实现
|
||||
|
||||
2. **鎶€鏈<EFBFBD>灦鏋勪紭鍖?*
|
||||
2. **技术架构优化**
|
||||
- 真正实现分层架构(业务层→通用层)
|
||||
- 涓哄井鏈嶅姟鎷嗗垎鍋氬噯澶?
|
||||
- 为微服务拆分做准备
|
||||
|
||||
3. **鍟嗕笟浠峰€?*
|
||||
- 妯″潡鐙<EFBFBD>珛閮ㄧ讲鏇村<EFBFBD>鏄?
|
||||
- 妯″潡鐙<EFBFBD>珛鍞<EFBFBD>崠鏇寸伒娲?
|
||||
3. **商业价值**
|
||||
- 模块独立部署更容易
|
||||
- 模块独立售卖更灵活
|
||||
- 客户定制成本降低
|
||||
|
||||
---
|
||||
|
||||
## 鈿狅笍 椋庨櫓涓庡簲瀵?
|
||||
## ⚠️ 风险与应对
|
||||
|
||||
### 椋庨櫓1锛氬洖褰掓祴璇曞伐浣滈噺澶?
|
||||
**搴斿<EFBFBD>**锛?
|
||||
- 浼樺厛瀹炵幇鑷<EFBFBD>姩鍖栨祴璇?
|
||||
### 风险1:回归测试工作量大
|
||||
**应对**:
|
||||
- 优先实现自动化测试
|
||||
- 分模块逐步迁移
|
||||
- 淇濈暀鍘熶唬鐮佷綔涓哄<EFBFBD>浠?
|
||||
- 保留原代码作为备份
|
||||
|
||||
### 椋庨櫓2锛氬巻鍙叉暟鎹<EFBFBD>縼绉?
|
||||
**搴斿<EFBFBD>**锛?
|
||||
- 涓嶉渶瑕佽縼绉绘暟鎹?
|
||||
### 风险2:历史数据迁移
|
||||
**应对**:
|
||||
- 不需要迁移数据
|
||||
- 只迁移代码逻辑
|
||||
- 各模块保留独立表
|
||||
|
||||
### 风险3:前端组件复杂度
|
||||
**搴斿<EFBFBD>**锛?
|
||||
- 閲囩敤娓愯繘寮忛噸鏋?
|
||||
- 鍏堟娊鍙栨牳蹇冪粍浠?
|
||||
**应对**:
|
||||
- 采用渐进式重构
|
||||
- 先抽取核心组件
|
||||
- 后续迭代优化
|
||||
|
||||
---
|
||||
|
||||
## 📅 建议执行时间
|
||||
|
||||
**鎺ㄨ崘鏃堕棿绐楀彛**锛?
|
||||
- **閫夐」1**锛歍ool C MVP瀹屾垚鍚庯紙Day 10-13锛?
|
||||
- **閫夐」2**锛氭墍鏈塂C妯″潡瀹屾垚鍚庯紙Week 8-9锛?
|
||||
- **閫夐」3**锛欰I鐭ヨ瘑搴撴ā鍧楀惎鍔ㄥ墠锛圦uarter 2锛?
|
||||
**推荐时间窗口**:
|
||||
- **选项1**:Tool C MVP完成后(Day 10-13)
|
||||
- **选项2**:所有DC模块完成后(Week 8-9)
|
||||
- **选项3**:AI知识库模块启动前(Quarter 2)
|
||||
|
||||
**褰撳墠鍐崇瓥**锛氬欢鍚庤嚦Tool C MVP瀹屾垚鍚?
|
||||
**当前决策**:延后至Tool C MVP完成后
|
||||
|
||||
---
|
||||
|
||||
## 🔗 相关文档
|
||||
|
||||
- [系统架构分层设计](../../00-系统总体设计/01-系统架构分层设计.md)
|
||||
- [浜戝師鐢熷紑鍙戣<EFBFBD>鑼僝(../../04-寮€鍙戣<E98D99>鑼?08-浜戝師鐢熷紑鍙戣<E98D99>鑼?md)
|
||||
- [Tool C Day 3寮€鍙戣<EFBFBD>鍒抅(../../03-涓氬姟妯″潡/DC-鏁版嵁娓呮礂鏁寸悊/04-寮€鍙戣<E98D99>鍒?宸ュ叿C_Day3寮€鍙戣<E98D99>鍒?md)
|
||||
- [云原生开发规范](../../04-开发规范/08-云原生开发规范.md)
|
||||
- [Tool C Day 3开发计划](../../03-业务模块/DC-数据清洗整理/04-开发计划/工具C_Day3开发计划.md)
|
||||
|
||||
---
|
||||
|
||||
## 📝 更新记录
|
||||
|
||||
| 鏃ユ湡 | 鐗堟湰 | 鏇存柊鍐呭<E98D90> | 鏇存柊浜?|
|
||||
| 日期 | 版本 | 更新内容 | 更新人 |
|
||||
|------|------|---------|--------|
|
||||
| 2025-12-06 | V1.0 | 初始创建 | AI Assistant |
|
||||
|
||||
---
|
||||
|
||||
**鏂囨。鐘舵€?*: 鉁?宸插垱寤?
|
||||
**浼樺厛绾?*: P2锛堜腑鏈熶紭鍖栵級
|
||||
**涓嬩竴姝?*: 瀹屾垚Tool C Day 3 MVP鍚庨噸鏂拌瘎浼?
|
||||
|
||||
**文档状态**: ✅ 已创建
|
||||
**优先级**: P2(中期优化)
|
||||
**下一步**: 完成Tool C Day 3 MVP后重新评估
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user