feat(aia): Complete AIA V2.0 with universal streaming capabilities

Major Changes:
- Add StreamingService with OpenAI Compatible format
- Upgrade Chat component V2 with Ant Design X integration
- Implement AIA module with 12 intelligent agents
- Update API routes to unified /api/v1 prefix
- Update system documentation

Backend (~1300 lines):
- common/streaming: OpenAI Compatible adapter
- modules/aia: 12 agents, conversation service, streaming integration
- Update route versions (RVW, PKB to v1)

Frontend (~3500 lines):
- modules/aia: AgentHub + ChatWorkspace (100% prototype restoration)
- shared/Chat: AIStreamChat, ThinkingBlock, useAIStream Hook
- Update API endpoints to v1

Documentation:
- AIA module status guide
- Universal capabilities catalog
- System overview updates
- All module documentation sync

Tested: Stream response verified, authentication working
Status: AIA V2.0 core completed (85%)
This commit is contained in:
2026-01-14 19:15:01 +08:00
parent 3d35e9c58b
commit 1b53ab9d52
386 changed files with 52096 additions and 65238 deletions

View File

@@ -1,48 +1,48 @@
# 蟷ウ蜿ー蜑咲ォッ諤サ菴捺楔譫<E6A594>ョセ隶。
> **文档版本:** v1.0
> **创建日期:** 2025-10-29
> **维护者:** 前端开发团队
> **<EFBFBD>。」迚域悽<EFBFBD>?* v1.0
> **蛻帛サコ譌・譛滂シ?* 2025-10-29
> **扈エ謚、閠<EFBFBD><EFBFBD>** 蜑咲ォッ蠑€蜿大屬髦?
> **譛€蜷取峩譁ー<E8AD81><EFBDB0>** 2025-10-29
---
## <20>搭 譁<>。」隸エ譏<EFBDB4>
本文档是**平台级前端架构设计**涵盖整个AI科研平台的前端架构包括
- 统一的顶部导航设计
- 模块化架构设计
譛ャ譁<EFBFBD>。」譏ッ**蟷ウ蜿ー郤ァ蜑咲ォッ譫カ譫<EFBDB6>ョセ隶?*<2A>梧カオ逶匁紛荳ェAI遘醍<E98198>泌ケウ蜿ー逧<EFBDB0>燕遶ッ譫カ譫<EFBDB6>シ悟桁諡ャ<E8ABA1>?
- 扈滉ク€<EFBFBD>。カ驛ィ蟇シ闊ェ隶セ隶?
- 讓。蝮怜喧譫カ譫<EFBFBD>ョセ隶?
- 霍ッ逕ア隶セ隶。
- 权限控制系统(**版本配置完全可调整**
- 模块独立性设计(支持未来独立分拆)
- <EFBFBD>剞謗ァ蛻カ邉サ扈滂シ?*迚域悽驟咲スョ螳悟<E89EB3>蜿ッ隹<EFBDAF><E99AB9>?*<2A>?
- 讓。蝮礼峡遶区€ァ隶セ隶。<EFBFBD>域髪謖∵悴譚・迢ャ遶句<EFBFBD><EFBFBD>シ?
> **注意:** 本文档是平台级设计,各模块的详细架构设计请参考各模块的专属文档。
> **豕ィ諢擾シ?* 譛ャ譁<EFBDAC>。」譏ッ蟷ウ蜿ー郤ァ隶セ隶。<E99AB6>悟推讓。蝮礼噪隸ヲ扈<EFBDA6>楔譫<E6A594>ョセ隶。隸キ蜿り€<E3828A>推讓。蝮礼噪荳灘ア樊枚譯」縲?
> **重要提示:** 本文档中涉及的版本权限分配(基础版、高级版、旗舰版的模块分配)均为**初始方案**可以根据业务需求随时调整无需改动代码逻辑。推荐从后端API动态获取版本配置。
> **驥崎ヲ∵署遉コ<EFBFBD>?* 譛ャ譁<EFBDAC>。」荳ュ豸牙所逧<E68980>沿譛ャ譚<EFBDAC>剞蛻<E5899E><E89BBB><EFBFBD>亥渕遑€迚医€<E58CBB>ォ倡コァ迚医€∵覧闊ー迚育噪讓。蝮怜<E89DAE>驟搾シ牙插荳コ**蛻晏ァ区婿譯<E5A9BF>**<2A>悟庄莉・譬ケ謐ョ荳壼苅髴€豎る囂譌カ隹<EFBDB6><EFBFBD>梧裏髴€謾ケ蜉ィ莉」遐<EFBDA3>€サ霎代€よ耳闕蝉サ主錘遶ッAPI蜉ィ諤∬執蜿也沿譛ャ驟咲スョ縲?
---
## <20>識 隶セ隶。蜴溷<E89CB4>
### 1. 模块化设计
- 每个功能模块独立开发、独立部署
### 1. 讓。蝮怜喧隶セ隶?
- 豈丈クェ蜉溯<EFBFBD>讓。蝮礼峡遶句シ€蜿代€∫峡遶矩Κ鄂?
- 讓。蝮鈴龍譌<E9BE8D>萓晁オ門<EFBDB5>邉サ<E98289>悟庄迢ャ遶玖ソ占。<E58DA0>
- 支持模块独立产品化如AI智能文献独立售卖
- 謾ッ謖∵ィ。蝮礼峡遶倶コァ蜩∝喧<EFBFBD>亥ヲ<EFBFBD>I譎コ閭ス譁<EFBFBD>鍵迢ャ遶句醗蜊厄シ?
### 2. 譚<>剞謗ァ蛻カ隶セ隶。
- 基于用户版本的权限控制
- 灵活的功能模块开关机制
- 支持未来商业模式拓展(基础版、高级版、旗舰版)
- 蝓コ莠守畑謌キ迚域悽逧<EFBFBD>揀髯先而蛻?
- 轣オ豢サ逧<EFBFBD>粥閭ス讓。蝮怜シ€蜈ウ譛コ蛻?
- 謾ッ謖∵悴譚・蝠<EFBFBD>ク壽ィ。蠑乗挙螻包シ亥渕遑€迚医€<EFBFBD>ォ倡コァ迚医€∵覧闊ー迚茨シ?
### 3. 可扩展性设计
- 预留新模块接入接口
### 3. 蜿ッ謇ゥ螻墓€ァ隶セ隶?
- <EFBFBD>蕗譁ー讓。蝮玲磁蜈・謗・蜿?
- 謠剃サカ蛹也噪讓。蝮怜刈霓ス譛コ蛻カ
- 配置驱动的功能开关
- 驟咲スョ鬩ア蜉ィ逧<EFBFBD>粥閭ス蠑€蜈?
### 4. 一致性设计
### 4. 荳€閾エ諤ァ隶セ隶?
- 扈滉ク€逧ФI/UX隗<58>
- 统一的交互模式
- 统一的状态管理
- 扈滉ク€<EFBFBD>コ、莠呈ィ。蠑?
- 扈滉ク€<EFBFBD>憾諤∫ョ。逅?
---
@@ -51,37 +51,37 @@
### 蟇シ闊ェ扈捺桷
```
┌──────────────────────────────────────────────────────────────────────────────┐
Logo [AI问答] [AI智能文献] [知识库] [智能数据清洗] [智能统计分析] [统计分析工具] [用户名 ▼] │
└──────────────────────────────────────────────────────────────────────────────┘
笏娯楳笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏?
笏?Logo [AI髣ョ遲脳 [AI譎コ閭ス譁<EFBDBD>鍵] [遏・隸<EFBDA5>コ転 [譎コ閭ス謨ー謐ョ貂<EFBDAE>エ余 [譎コ閭ス扈溯ョ。蛻<EFBDA1>梵] [扈溯ョ。蛻<EFBDA1>梵蟾・蜈キ] [逕ィ謌キ蜷?笆シ] 笏?
笏披楳笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏?
```
### 导航项详情
### 蟇シ闊ェ鬘ケ隸ヲ諠?
| 位置 | 中文名称 | 英文标识 | 路由路径 | 开发状态 | 权限要求(初始配置) |
| 菴咲スョ | 荳ュ譁<EFBDAD>錐遘ー | 闍ア譁<EFBDB1><E8AD81><EFBFBD><EFBFBD> | 霍ッ逕ア霍ッ蠕<EFBDAF> | 蠑€蜿醍憾諤?| 譚<>剞隕∵アゑシ亥<EFBDBC>蟋矩<E89F8B>鄂ョ<E98482><EFBDAE> |
|------|---------|---------|---------|---------|---------------------|
| 1 | AI问答 | `ai-qa` | `/ai-qa` | ✅ 已开发 | 基础版+ ⚠️可调整 |
| 2 | AI智能文献 | `literature-platform` | `/literature` | 🚧 待开发 | 高级版+ ⚠️可调整 |
| 3 | 知识库 | `knowledge-base` | `/knowledge-base` | ✅ 已开发 | 基础版+ ⚠️可调整 |
| 4 | 智能数据清洗 | `data-cleaning` | `/data-cleaning` | 📋 占位 | 高级版+ ⚠️可调整 |
| 5 | 智能统计分析 | `statistical-analysis` | `/intelligent-analysis` | ✅ 已开发Java团队 | 旗舰版 ⚠️可调整 |
| 6 | 统计分析工具 | `statistical-tools` | `/statistical-tools` | ✅ 已开发Java团队 | 旗舰版 ⚠️可调整 |
| 最右侧 | 个人中心 | `user-center` | `/user/*` | ✅ 已开发 | 所有用户 |
| 1 | AI髣ョ遲<EFBFBD> | `ai-qa` | `/ai-qa` | 笨?蟾イ蠑€蜿?| 蝓コ遑€迚? 笞<><E7AC9E>丞庄隹<E5BA84><E99AB9>?|
| 2 | AI譎コ閭ス譁<EFBFBD> | `literature-platform` | `/literature` | <EFBFBD>圦 蠕<>€蜿?| 鬮倡コァ迚? 笞<><E7AC9E>丞庄隹<E5BA84><E99AB9>?|
| 3 | 遏・隸<EFBFBD>コ?| `knowledge-base` | `/knowledge-base` | 笨?蟾イ蠑€蜿?| 蝓コ遑€迚? 笞<><E7AC9E>丞庄隹<E5BA84><E99AB9>?|
| 4 | 譎コ閭ス謨ー謐ョ貂<EFBFBD><EFBFBD> | `data-cleaning` | `/data-cleaning` | <EFBFBD>搭 蜊<><EFBFBD> | 鬮倡コァ迚? 笞<><E7AC9E>丞庄隹<E5BA84><E99AB9>?|
| 5 | 譎コ閭ス扈溯ョ。蛻<EFBFBD> | `statistical-analysis` | `/intelligent-analysis` | 笨?蟾イ蠑€蜿托シ<E68998>ava蝗「髦滂シ?| 譌苓芦迚?笞<><E7AC9E>丞庄隹<E5BA84><E99AB9>?|
| 6 | 扈溯ョ。蛻<EFBFBD>梵蟾・蜈キ | `statistical-tools` | `/statistical-tools` | 笨?蟾イ蠑€蜿托シ<E68998>ava蝗「髦滂シ?| 譌苓芦迚?笞<><E7AC9E>丞庄隹<E5BA84><E99AB9>?|
| 譛€蜿ウ萓ァ | 荳ェ莠コ荳ュ蠢<EFBDAD> | `user-center` | `/user/*` | 笨?蟾イ蠑€蜿?| 謇€譛臥畑謌?|
> **说明:** 权限要求列中的"基础版+"、"高级版+"、"旗舰版"为**初始配置**可根据业务需求随时调整无需改动代码逻辑。推荐从后端API动态获取版本配置。
> **隸エ譏趣シ?* 譚<>剞隕∵アょ<EFBDB1>荳ュ逧?蝓コ遑€迚?"縲?鬮倡コァ迚?"縲?譌苓芦迚?荳?*蛻晏ァ矩<EFBDA7>鄂ョ**<2A>悟庄譬ケ謐ョ荳壼苅髴€豎る囂譌カ隹<EFBDB6><EFBFBD>梧裏髴€謾ケ蜉ィ莉」遐<EFBDA3>€サ霎代€よ耳闕蝉サ主錘遶ッAPI蜉ィ諤∬執蜿也沿譛ャ驟咲スョ縲?
### 霍ッ逕ア霍ッ蠕<EFBDAF>ョセ隶。
```typescript
// 主路由结构
// 荳サ霍ッ逕ア扈捺<EFBFBD>?
const routes = {
// 讓。蝮苓キッ逕ア
'/ai-qa': 'AI髣ョ遲疲ィ。蝮<EFBDA1>',
'/literature': 'AI譎コ閭ス譁<EFBDBD>鍵讓。蝮<EFBDA1>',
'/knowledge-base': '知识库模块',
'/knowledge-base': '遏・隸<EFBFBD>コ捺ィ。蝮?,
'/data-cleaning': '<EFBFBD><EFBFBD>',
'/intelligent-analysis': '智能统计分析模块Java团队开发只做顶部导航集成',
'/statistical-tools': '统计分析工具模块Java团队开发只做顶部导航集成',
'/intelligent-analysis': '<EFBFBD><EFBFBD>ava蝗€<EFBFBD><EFBFBD><EFBFBD>?,
'/statistical-tools': '扈溯ョ。蛻<EFBFBD>梵蟾・蜈キ讓。蝮暦シ<EFBFBD>ava蝗「髦溷シ€蜿托シ悟宵蛛夐。カ驛ィ蟇シ闊ェ髮<EFBFBD><EFBFBD><EFBFBD>?,
// 逕ィ謌キ逶ク蜈ウ
'/user/profile': '<EFBFBD> - <EFBFBD>',
@@ -93,35 +93,35 @@ const routes = {
---
## 🏗️ 整体架构设计
## <EFBFBD><EFBFBD>?謨エ菴捺楔譫<E6A594>ョセ隶。
### 架构层次图
### 譫カ譫<EFBFBD>アよャ。蝗?
```
┌─────────────────────────────────────────────────────────────┐
应用层 (Application)
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ AI问答 │ │AI智能文献│ │ 知识库 │ │ 其他模块 │
│ │ Module │ │ Module │ │ Module │ │ Module
│ └──────────┘ └──────────┘ └──────────┘ └──────────┘ │
└─────────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────┐
框架层 (Framework Layer)
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ 导航系统 │ │ 路由系统 │ │ 权限控制
│ │ Navigation │ │ Router │ │ Permission
│ └──────────────┘ └──────────────┘ └──────────────┘ │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ 布局系统 │ │ 状态管理 │ │ 配置管理
│ │ Layout │ │ State Mgmt │ │ Config
│ └──────────────┘ └──────────────┘ └──────────────┘ │
└─────────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────┐
基础层 (Base Layer)
React + TypeScript + Ant Design + Tailwind CSS
└─────────────────────────────────────────────────────────────┘
笏娯楳笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏?
笏? 蠎皮畑螻?(Application) 笏?
笏? 笏娯楳笏€笏€笏€笏€笏€笏€笏€笏€笏€笏?笏娯楳笏€笏€笏€笏€笏€笏€笏€笏€笏€笏?笏娯楳笏€笏€笏€笏€笏€笏€笏€笏€笏€笏?笏娯楳笏€笏€笏€笏€笏€笏€笏€笏€笏€笏? 笏?
笏? 笏?AI髣ョ遲<EFBDAE> 笏?笏<>I譎コ閭ス譁<EFBDBD>鍵笏?笏?遏・隸<EFBDA5>コ? 笏?笏?蜈カ莉匁ィ。蝮<EFBDA1> 笏? 笏?
笏? 笏?Module 笏?笏?Module 笏?笏?Module 笏?笏?Module 笏? 笏?
笏? 笏披楳笏€笏€笏€笏€笏€笏€笏€笏€笏€笏?笏披楳笏€笏€笏€笏€笏€笏€笏€笏€笏€笏?笏披楳笏€笏€笏€笏€笏€笏€笏€笏€笏€笏?笏披楳笏€笏€笏€笏€笏€笏€笏€笏€笏€笏? 笏?
笏披楳笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏?
竊?
笏娯楳笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏?
笏? <EFBFBD>楔螻?(Framework Layer) 笏?
笏? 笏娯楳笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏?笏娯楳笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏?笏娯楳笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏? 笏?
笏? 笏?蟇シ闊ェ邉サ扈<EFBDBB> 笏?笏?霍ッ逕ア邉サ扈<EFBDBB> 笏?笏?譚<>剞謗ァ蛻カ 笏? 笏?
笏? 笏?Navigation 笏?笏?Router 笏?笏?Permission 笏? 笏?
笏? 笏披楳笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏?笏披楳笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏?笏披楳笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏? 笏?
笏? 笏娯楳笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏?笏娯楳笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏?笏娯楳笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏? 笏?
笏? 笏?蟶<>€邉サ扈<EFBDBB> 笏?笏?迥カ諤∫ョ。逅? 笏?笏?驟咲スョ邂。逅<EFBDA1> 笏? 笏?
笏? 笏?Layout 笏?笏?State Mgmt 笏?笏?Config 笏? 笏?
笏? 笏披楳笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏?笏披楳笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏?笏披楳笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏? 笏?
笏披楳笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏?
竊?
笏娯楳笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏?
笏? 蝓コ遑€螻?(Base Layer) 笏?
笏? React + TypeScript + Ant Design + Tailwind CSS 笏?
笏披楳笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏?
```
### 逶ョ蠖慕サ捺桷隶セ隶。
@@ -129,80 +129,80 @@ const routes = {
```
frontend-v2/
笏懌楳笏€ src/
│ ├── app/ # 应用入口
│ │ ├── App.tsx # 根组件
│ │ ├── main.tsx # 入口文件
│ │ └── routes.tsx # 路由配置
│ │
│ ├── framework/ # 框架层(核心)
│ │ ├── navigation/ # 导航系统
│ │ │ ├── TopNavigation.tsx # 顶部导航
│ │ │ ├── SideNavigation.tsx # 左侧导航
│ │ │ └── navigationConfig.ts # 导航配置
│ │ │
│ │ ├── routing/ # 路由系统
│ │ │ ├── RouterConfig.tsx # 路由配置
│ │ │ ├── RouteGuard.tsx # 路由守卫(权限)
│ │ │ └── LazyLoader.tsx # 懒加载
│ │ │
│ │ ├── permission/ # 权限控制
│ │ │ ├── PermissionProvider.tsx
│ │ │ ├── usePermission.ts # 权限Hook
│ │ │ ├── permissionConfig.ts # 权限配置
│ │ │ └── versionConfig.ts # 版本配置
│ │ │
│ │ ├── layout/ # 布局系统
│ │ │ ├── MainLayout.tsx # 主布局
│ │ │ ├── ModuleLayout.tsx # 模块布局
│ │ │ └── EmptyLayout.tsx # 空布局
│ │ │
│ │ ├── config/ # 配置管理
│ │ │ ├── moduleConfig.ts # 模块配置
│ │ │ ├── appConfig.ts # 应用配置
│ │ │ └── environment.ts # 环境配置
│ │ │
│ │ └── state/ # 全局状态
│ │ ├── userStore.ts # 用户状态
│ │ ├── navigationStore.ts # 导航状态
│ │ └── permissionStore.ts # 权限状态
│ │
│ ├── modules/ # 功能模块(独立)
│ │ ├── ai-qa/ # AI问答模块
│ │ │ ├── index.tsx
│ │ │ ├── routes.tsx
│ │ │ └── ...
│ │ │
│ │ ├── literature/ # AI智能文献模块
│ │ │ ├── index.tsx
│ │ │ ├── routes.tsx
│ │ │ └── ...
│ │ │
│ │ ├── knowledge-base/ # 知识库模块
│ │ │ ├── index.tsx
│ │ │ ├── routes.tsx
│ │ │ └── ...
│ │ │
│ │ ├── data-cleaning/ # 智能数据清洗(占位)
│ │ │ └── Placeholder.tsx
│ │ │
│ │ ├── intelligent-analysis/ # 智能统计分析
│ │ │ └── ...
│ │ │
│ │ └── statistical-tools/ # 统计分析工具
│ │ └── ...
│ │
│ ├── components/ # 通用组件
│ │ ├── common/ # 基础组件
│ │ ├── business/ # 业务组件
│ │ └── hooks/ # 通用Hooks
│ │
│ ├── api/ # API
│ │ ├── client.ts # API客户端
│ │ ├── modules/ # 模块API
│ │ └── types/ # API类型
│ │
│ ├── utils/ # 工具函数
│ └── types/ # 全局类型
笏? 笏懌楳笏€ app/ # 蠎皮畑蜈・蜿」
笏? 笏? 笏懌楳笏€ App.tsx # 譬ケ扈<EFBFBD>サ?
笏? 笏? 笏懌楳笏€ main.tsx # 蜈・蜿」譁<EFBFBD>サカ
笏? 笏? 笏披楳笏€ routes.tsx # 霍ッ逕ア驟咲スョ
笏? 笏?
笏? 笏懌楳笏€ framework/ # <EFBFBD>楔螻ゑシ域<EFBFBD>ク蠢<EFBFBD>シ?
笏? 笏? 笏懌楳笏€ navigation/ # 蟇シ闊ェ邉サ扈<EFBFBD>
笏? 笏? 笏? 笏懌楳笏€ TopNavigation.tsx # 鬘カ驛ィ蟇シ闊ェ
笏? 笏? 笏? 笏懌楳笏€ SideNavigation.tsx # 蟾ヲ萓ァ蟇シ闊ェ
笏? 笏? 笏? 笏披楳笏€ navigationConfig.ts # 蟇シ闊ェ驟咲スョ
笏? 笏? 笏?
笏? 笏? 笏懌楳笏€ routing/ # 霍ッ逕ア邉サ扈<EFBFBD>
笏? 笏? 笏? 笏懌楳笏€ RouterConfig.tsx # 霍ッ逕ア驟咲スョ
笏? 笏? 笏? 笏懌楳笏€ RouteGuard.tsx # 霍ッ逕ア螳亥梱<EFBFBD>域揀髯撰シ<EFBFBD>
笏? 笏? 笏? 笏披楳笏€ LazyLoader.tsx # 諛貞刈霓?
笏? 笏? 笏?
笏? 笏? 笏懌楳笏€ permission/ # <EFBFBD>剞謗ァ蛻カ
笏? 笏? 笏? 笏懌楳笏€ PermissionProvider.tsx
笏? 笏? 笏? 笏懌楳笏€ usePermission.ts # <EFBFBD>Hook
笏? 笏? 笏? 笏懌楳笏€ permissionConfig.ts # <EFBFBD>剞驟咲スョ
笏? 笏? 笏? 笏披楳笏€ versionConfig.ts # 迚域悽驟咲スョ
笏? 笏? 笏?
笏? 笏? 笏懌楳笏€ layout/ # <EFBFBD>€邉サ扈<EFBFBD>
笏? 笏? 笏? 笏懌楳笏€ MainLayout.tsx # 荳サ蟶<EFBFBD>€
笏? 笏? 笏? 笏懌楳笏€ ModuleLayout.tsx # 讓。蝮怜ク<EFBFBD>€
笏? 笏? 笏? 笏披楳笏€ EmptyLayout.tsx # 遨コ蟶<EFBFBD>€
笏? 笏? 笏?
笏? 笏? 笏懌楳笏€ config/ # 驟咲スョ邂。逅<EFBFBD>
笏? 笏? 笏? 笏懌楳笏€ moduleConfig.ts # 讓。蝮鈴<EFBFBD>鄂ョ
笏? 笏? 笏? 笏懌楳笏€ appConfig.ts # 蠎皮畑驟咲スョ
笏? 笏? 笏? 笏披楳笏€ environment.ts # 邇ッ蠅<EFBFBD><EFBFBD>鄂ョ
笏? 笏? 笏?
笏? 笏? 笏披楳笏€ state/ # 蜈ィ螻€迥カ諤?
笏? 笏? 笏懌楳笏€ userStore.ts # 逕ィ謌キ迥カ諤?
笏? 笏? 笏懌楳笏€ navigationStore.ts # 蟇シ闊ェ迥カ諤?
笏? 笏? 笏披楳笏€ permissionStore.ts # <EFBFBD>剞迥カ諤?
笏? 笏?
笏? 笏懌楳笏€ modules/ # 蜉溯<EFBFBD>讓。蝮暦シ育峡遶具シ<EFBFBD>
笏? 笏? 笏懌楳笏€ ai-qa/ # AI髣ョ遲疲ィ。蝮<EFBFBD>
笏? 笏? 笏? 笏懌楳笏€ index.tsx
笏? 笏? 笏? 笏懌楳笏€ routes.tsx
笏? 笏? 笏? 笏披楳笏€ ...
笏? 笏? 笏?
笏? 笏? 笏懌楳笏€ literature/ # AI譎コ閭ス譁<EFBFBD>鍵讓。蝮<EFBFBD>
笏? 笏? 笏? 笏懌楳笏€ index.tsx
笏? 笏? 笏? 笏懌楳笏€ routes.tsx
笏? 笏? 笏? 笏披楳笏€ ...
笏? 笏? 笏?
笏? 笏? 笏懌楳笏€ knowledge-base/ # 遏・隸<EFBFBD>コ捺ィ。蝮?
笏? 笏? 笏? 笏懌楳笏€ index.tsx
笏? 笏? 笏? 笏懌楳笏€ routes.tsx
笏? 笏? 笏? 笏披楳笏€ ...
笏? 笏? 笏?
笏? 笏? 笏懌楳笏€ data-cleaning/ # 譎コ閭ス謨ー謐ョ貂<EFBFBD>エ暦シ亥頃菴搾シ<EFBFBD>
笏? 笏? 笏? 笏披楳笏€ Placeholder.tsx
笏? 笏? 笏?
笏? 笏? 笏懌楳笏€ intelligent-analysis/ # 譎コ閭ス扈溯ョ。蛻<EFBFBD>
笏? 笏? 笏? 笏披楳笏€ ...
笏? 笏? 笏?
笏? 笏? 笏披楳笏€ statistical-tools/ # 扈溯ョ。蛻<EFBFBD>梵蟾・蜈キ
笏? 笏? 笏披楳笏€ ...
笏? 笏?
笏? 笏懌楳笏€ components/ # 騾夂畑扈<EFBFBD>サカ
笏? 笏? 笏懌楳笏€ common/ # 蝓コ遑€<EFBFBD>サカ
笏? 笏? 笏懌楳笏€ business/ # 荳壼苅扈<EFBFBD>サカ
笏? 笏? 笏披楳笏€ hooks/ # 騾夂畑Hooks
笏? 笏?
笏? 笏懌楳笏€ api/ # API螻?
笏? 笏? 笏懌楳笏€ client.ts # API螳「謌キ遶?
笏? 笏? 笏懌楳笏€ modules/ # 讓。蝮輸PI
笏? 笏? 笏披楳笏€ types/ # API邀サ蝙<EFBFBD>
笏? 笏?
笏? 笏懌楳笏€ utils/ # 蟾・蜈キ蜃ス謨ー
笏? 笏披楳笏€ types/ # 蜈ィ螻€邀サ蝙<EFBFBD>
```
---
@@ -211,7 +211,7 @@ frontend-v2/
### 逕ィ謌キ迚域悽螳壻ケ<E5A3BB>
> **重要说明:** 版本权限分配是完全**可配置、可调整**的。以下配置为**初始方案**,可以根据业务需求随时修改,无需改动代码逻辑。
> **驥崎ヲ∬ッエ譏趣シ?* 迚域悽譚<E682BD>剞蛻<E5899E><E89BBB>譏ッ螳悟<E89EB3>?*蜿ッ驟咲スョ縲∝庄隹<E5BA84>紛**逧<>€ゆサ・荳矩<E88DB3>鄂ョ荳コ**蛻晏ァ区婿譯<E5A9BF>**<2A>悟庄莉・譬ケ謐ョ荳壼苅髴€豎る囂譌カ菫ョ謾ケ<E8ACBE>梧裏髴€謾ケ蜉ィ莉」遐<EFBDA3>€サ霎代€?
```typescript
// 逕ィ謌キ迚域悽邀サ蝙<EFBDBB>
@@ -219,14 +219,14 @@ type UserVersion = 'basic' | 'advanced' | 'premium';
// 迚域悽驟咲スョ<EFBDBD>亥庄驟咲スョ<EFBDBD>梧髪謖∝錘譛溯ー<E6BAAF><EFBFBD><E7B49B>
// 驟咲スョ譁<EFBDAE>サカ菴咲スョ<EFBDBD>嘖rc/framework/permission/versionConfig.ts
// 或者通过后端API动态获取配置
// 謌冶€<EFBFBD>€夊ソ<EFBFBD>錘遶ッAPI蜉ィ諤∬執蜿夜<EFBFBD>鄂?
const VERSION_CONFIG = {
basic: {
name: '基础版',
modules: ['ai-qa', 'knowledge-base'], // 初始配置:基础版包含模块
name: '蝓コ遑€迚?,
modules: ['ai-qa', 'knowledge-base'], // 蛻晏ァ矩<EFBDA7>鄂ョ<E98482>壼渕遑€迚亥桁蜷ォ讓。蝮?
},
advanced: {
name: '高级版',
name: '?,
modules: [
'ai-qa',
'knowledge-base',
@@ -235,7 +235,7 @@ const VERSION_CONFIG = {
], // 蛻晏ァ矩<EFBDA7>鄂ョ<E98482>夐ォ倡コァ迚亥桁蜷ォ讓。蝮<EFBDA1>
},
premium: {
name: '旗舰版',
name: '譌苓芦迚?,
modules: [
'ai-qa',
'knowledge-base',
@@ -247,15 +247,15 @@ const VERSION_CONFIG = {
},
};
// 说明:
// 1. 以上模块分配为初始方案,可根据实际业务需求调整
// 隸エ譏趣シ?
// 1. 莉・荳頑ィ。蝮怜<EFBFBD>驟堺クコ蛻晏ァ区婿譯茨シ悟庄譬ケ謐ョ螳樣刔荳壼苅髴€豎りー<EFBFBD><EFBFBD>?
// 2. 謾ッ謖<EFBDAF>€夊ソ<E5A48A><EFBDBF>鄂ョ譁<EFBDAE>サカ菫ョ謾ケ<E8ACBE>梧裏髴€謾ケ蜉ィ莉」遐<EFBDA3>
// 3. 譖エ謗ィ闕蝉サ主錘遶ッAPI蜉ィ諤∬執蜿也沿譛ャ驟咲スョ<EFBDBD>御セソ莠主ョ樊慮隹<E685AE>
```
### 譚<>剞謗ァ蛻カ螳樒鴫
> **设计说明:** 权限控制采用配置驱动的方式支持通过配置文件或后端API动态获取版本配置便于后期灵活调整。
> **隶セ隶。隸エ譏趣シ?* 譚<>剞謗ァ蛻カ驥<EFBDB6>畑驟咲スョ鬩ア蜉ィ逧<EFBDA8>婿蠑擾シ梧髪謖<E9ABAA>€夊ソ<E5A48A><EFBDBF>鄂ョ譁<EFBDAE>サカ謌門錘遶ッAPI蜉ィ諤∬執蜿也沿譛ャ驟咲スョ<EFBDBD>御セソ莠主錘譛溽<E8AD9B>豢サ隹<EFBDBB>紛縲?
```typescript
// 譚<>剞謗ァ蛻カHook
@@ -266,7 +266,7 @@ export const usePermission = () => {
// const allowedModules = VERSION_CONFIG[userVersion].modules;
// 譁ケ蠑<EFBDB9>2<EFBFBD>壻サ主錘遶ッAPI蜉ィ諤∬執蜿厄シ域耳闕撰シ梧髪謖∝ョ樊慮隹<E685AE><EFBFBD><E7B49B>
const versionConfig = useVersionConfig(); // 从API获取最新配置
const versionConfig = useVersionConfig(); // 莉拶PI闔キ蜿匁怙譁ー驟咲ス?
const allowedModules = versionConfig[userVersion]?.modules || [];
const hasAccess = (moduleId: string): boolean => {
@@ -275,7 +275,7 @@ export const usePermission = () => {
const getFilteredNavigation = (navigation: NavigationItem[]) => {
return navigation.filter((item) => {
// 检查用户版本是否满足模块要求
// 譽€譟・逕ィ謌キ迚域悽譏ッ蜷ヲ貊。雜ウ讓。蝮苓ヲ∵ア?
if (!item.requiredVersion) return true;
const versionHierarchy = ['basic', 'advanced', 'premium'];
const userLevel = versionHierarchy.indexOf(userVersion);
@@ -288,12 +288,12 @@ export const usePermission = () => {
hasAccess,
getFilteredNavigation,
userVersion,
versionConfig, // 返回当前版本配置,便于调试
versionConfig, // 霑泌屓蠖灘燕迚域悽驟咲スョ<EFBFBD>御セソ莠手ー<EFBFBD>ッ?
};
};
```
### 版本配置动态获取(推荐方案)
### 迚域悽驟咲スョ蜉ィ諤∬執蜿厄シ域耳闕先婿譯茨シ?
```typescript
// src/framework/permission/useVersionConfig.ts
@@ -311,16 +311,16 @@ export const useVersionConfig = () => {
refetchOnWindowFocus: false,
});
// 如果API请求失败回退到本地配置
// 螯よ棡API隸キ豎ょ、ア雍・<EFBFBD>悟屓騾€蛻ー譛ャ蝨ー驟咲ス?
return data || VERSION_CONFIG;
};
```
**优势:**
- ✅ 版本配置可在后端实时调整,无需前端发版
- ✅ 支持A/B测试不同版本配置
- ✅ 便于运营人员灵活调整产品策略
- ✅ 前端有本地配置作为兜底方案,保证可用性
**莨伜漢<EFBFBD>?*
- 笨?迚域悽驟咲スョ蜿ッ蝨ィ蜷守ォッ螳樊慮隹<E685AE><EFBFBD>梧裏髴€蜑咲ォッ蜿醍沿
- 笨?謾ッ謖、/B豬玖ッ穂ク榊酔迚域悽驟咲スョ
- 笨?萓ソ莠手ソ占是莠コ蜻倡<E89CBB>豢サ隹<EFBDBB>紛莠ァ蜩∫ュ也払
- 笨?蜑咲ォッ譛画悽蝨ー驟咲スョ菴應クコ蜈懷コ墓婿譯茨シ御ソ晁ッ∝庄逕ィ諤?
### 霍ッ逕ア螳亥梱
@@ -339,7 +339,7 @@ export const RouteGuard = ({ moduleId, children }) => {
---
## 🔌 模块独立性设计
## <EFBFBD>伯 讓。蝮礼峡遶区€ァ隶セ隶?
### 讓。蝮玲ウィ蜀梧惻蛻カ
@@ -350,9 +350,9 @@ interface ModuleDefinition {
name: string; // 讓。蝮怜錐遘ー
route: string; // 霍ッ逕ア霍ッ蠕<EFBDAF>
icon?: ReactNode; // 蝗セ譬<EFBDBE>
component: LazyComponent; // 懒加载组件
component: LazyComponent; // 諛貞刈霓ス扈<EFBFBD>サ?
sideNav?: SideNavConfig; // 蟾ヲ萓ァ蟇シ闊ェ驟咲スョ
version?: UserVersion[]; // 支持的版本
version?: UserVersion[]; // 謾ッ謖∫噪迚域<EFBFBD>?
standalone?: boolean; // 譏ッ蜷ヲ謾ッ謖∫峡遶玖ソ占。<E58DA0>
apiBaseUrl?: string; // 迢ャ遶玖ソ占。梧慮逧БPI蝨ー蝮€
}
@@ -366,7 +366,7 @@ const MODULES: ModuleDefinition[] = [
component: lazy(() => import('@/modules/literature')),
version: ['advanced', 'premium'],
standalone: true, // 謾ッ謖∫峡遶玖ソ占。<E58DA0>
apiBaseUrl: process.env.LITERATURE_API_URL, // 可配置
apiBaseUrl: process.env.LITERATURE_API_URL, // 蜿ッ驟咲ス?
},
// ... 蜈カ莉匁ィ。蝮<EFBDA1>
];
@@ -375,7 +375,7 @@ const MODULES: ModuleDefinition[] = [
### 迢ャ遶矩Κ鄂イ謾ッ謖<EFBDAF>
```typescript
// 模块加载器
// 讓。蝮怜刈霓ス蝎?
export const ModuleLoader = ({ moduleId }: { moduleId: string }) => {
const module = MODULES.find((m) => m.id === moduleId);
@@ -383,7 +383,7 @@ export const ModuleLoader = ({ moduleId }: { moduleId: string }) => {
return <NotFound />;
}
// 检查是否独立运行模式
// 譽€譟・譏ッ蜷ヲ迢ャ遶玖ソ占。梧ィ。蠑?
const isStandalone = module.standalone &&
window.location.hostname === module.apiBaseUrl;
@@ -397,7 +397,7 @@ export const ModuleLoader = ({ moduleId }: { moduleId: string }) => {
};
```
### 配置驱动的模块加载
### 驟咲スョ鬩ア蜉ィ逧<EFBFBD>ィ。蝮怜刈霓?
```typescript
// 邇ッ蠅<EFBDAF>序驥城<E9A9A5>鄂ョ
@@ -421,12 +421,12 @@ const getEnabledModules = () => {
```
MainLayout (荳サ蟶<EFBDBB>€)
笏懌楳笏€ Header (鬘カ驛ィ蟇シ闊ェ)
│ ├── Logo
│ ├── TopNavigation (导航项)
│ └── UserMenu (用户菜单)
笏? 笏懌楳笏€ Logo
笏? 笏懌楳笏€ TopNavigation (蟇シ闊ェ鬘?
笏? 笏披楳笏€ UserMenu (逕ィ謌キ闖懷黒)
笏?
笏披楳笏€ MainContent (荳サ蜀<EFBDBB>ョケ蛹コ)
├── SideNavigation (左侧导航) - 可选
笏懌楳笏€ SideNavigation (蟾ヲ萓ァ蟇シ闊ェ) - 蜿ッ騾?
笏披楳笏€ Content (蜀<>ョケ蛹コ蝓<EFBDBA>)
笏披楳笏€ ModuleLayout (讓。蝮怜ク<E6809C>€)
```
@@ -498,55 +498,55 @@ export const ModuleLayout = ({ module }: { module: ModuleDefinition }) => {
}
```
### 响应式设计
### 蜩榊コ泌シ剰ョセ隶?
- **桌面端 (>1024px)**: 完整显示所有导航项
- **平板端 (768-1024px)**: 显示前4个其余折叠到"更多"菜单
- **移动端 (<768px)**: 汉堡菜单 + 抽屉导航
- **譯碁擇遶?(>1024px)**: 螳梧紛譏セ遉コ謇€譛牙ッシ闊ェ鬘ケ
- **蟷ウ譚ソ遶?(768-1024px)**: 譏セ遉コ蜑?荳ェ<E88DB3><EFBFBD>菴呎釜蜿<E9879C>蛻?譖エ螟<EFBDB4>"闖懷黒
- **遘サ蜉ィ遶?(<768px)**: 豎牙<EFBFBD>。闖懷黒 + 謚ス螻牙ッシ闊ェ
---
## <20>統 螳樊命隶。蛻<EFBDA1>
### 第一阶段框架搭建Week 1
- [x] 创建新前端项目结构
### 隨ャ荳€髦カ谿オ<EFBFBD>壽。<EFBFBD>楔謳ュ蟒コ<EFBFBD><EFBFBD>eek 1<EFBFBD>?
- [x] 蛻帛サコ譁ー蜑咲ォッ鬘ケ逶ョ扈捺<EFBFBD>?
- [ ] 螳樒鴫鬘カ驛ィ蟇シ闊ェ扈<EFBDAA>サカ
- [ ] 螳樒鴫霍ッ逕ア邉サ扈<EFBDBB>
- [ ] 螳樒鴫譚<E9B4AB>剞謗ァ蛻カ蝓コ遑€
- [ ] 螳樒鴫蝓コ遑€<C280>€邉サ扈<EFBDBB>
### 第二阶段模块集成Week 2
### 隨ャ莠碁亳谿オ<EFBFBD>壽ィ。蝮鈴寔謌撰シ<EFBFBD>eek 2<EFBFBD>?
- [ ] 霑∫ァサAI髣ョ遲疲ィ。蝮<EFBDA1>
- [ ] 迁移知识库模块
- [ ] 霑∫ァサ遏・隸<EFBFBD>コ捺ィ。蝮?
- [ ] 螳樒鴫蜊<E9B4AB>菴肴ィ。蝮暦シ域匱閭ス謨ー謐ョ貂<EFBDAE>エ暦シ<E69AA6>
- [ ] 螳悟埋譚<E59F8B>剞謗ァ蛻カ
### 第三阶段AI智能文献开发Week 3+
### 隨ャ荳蛾亳谿オ<EFBFBD>哂I譎コ閭ス譁<EFBFBD>鍵蠑€蜿托シ<EFBFBD>eek 3+<EFBFBD>?
- [ ]€蜿羨I譎コ閭ス譁<EFBDBD>鍵讓。蝮<EFBDA1>
- [ ] 螳樒鴫讓。蝮礼峡遶玖ソ占。梧髪謖<E9ABAA>
- [ ] 完善文档和测试
- [ ] 螳悟埋譁<EFBFBD>。」蜥梧オ玖ッ?
---
## <20>売 譛ェ譚・謇ゥ螻戊€<E6888A>
### 1. 模块独立产品化
### 1. 讓。蝮礼峡遶倶コァ蜩∝<EFBFBD>?
- 謾ッ謖<EFBDAF>€夊ソ<E5A48A>識蠅<E8AD98>序驥城<E9A9A5>鄂ョ迢ャ遶玖ソ占。<E58DA0>
- 迢ャ遶狗噪API蝨ー蝮€驟咲スョ
- 独立的部署配置
- 迢ャ遶狗噪驛ィ鄂イ驟咲ス?
### 2. 迚域悽譚<E682BD>剞邂。逅<EFBDA1>
- 蜷守ォッAPI謠蝉セ帷畑謌キ迚域悽菫。諱ッ
- 版本配置完全可调整(无需改动代码)
- 迚域悽驟咲スョ螳悟<EFBFBD>蜿ッ隹<EFBFBD><EFBFBD>域裏髴€謾ケ蜉ィ莉」遐<EFBFBD>シ?
- 謗ィ闕蝉サ主錘遶ッAPI蜉ィ諤∬執蜿也沿譛ャ驟咲スョ<EFBDBD>梧髪謖∝ョ樊慮隹<E685AE>紛讓。蝮怜<E89DAE><EFBFBD>
- 前端根据版本动态显示/隐藏模块
- 蜑咲ォッ譬ケ謐ョ迚域悽蜉ィ諤∵仞遉?髫占酪讓。蝮<EFBDA1>
- 謾ッ謖∫沿譛ャ蜊<EFBDAC>コァ謠千、コ
- 版本权限分配策略可随时根据业务需求调整
- 迚域悽譚<EFBFBD>剞蛻<EFBFBD><EFBFBD>遲也払蜿ッ髫乗慮譬ケ謐ョ荳壼苅髴€豎りー<EFBFBD><EFBFBD>?
### 3. 新模块接入
### 3. 譁ー讓。蝮玲磁蜈?
- 驕オ蠕ェ讓。蝮玲磁蜿」隗<EFBDA3>
- 蝨ィ驟咲スョ譁<EFBDAE>サカ荳ュ豕ィ蜀梧ィ。蝮<EFBDA1>
- 自动集成到导航系统
- 閾ェ蜉ィ髮<EFBFBD><EFBFBD>蛻ー蟇シ闊ェ邉サ扈?
---
@@ -560,7 +560,7 @@ export const ModuleLayout = ({ module }: { module: ModuleDefinition }) => {
---
**文档版本:** v1.0
**<EFBFBD>。」迚域悽<EFBFBD>?* v1.0
**譛€蜷取峩譁ー<E8AD81><EFBDB0>** 2025-10-29

View File

@@ -1,23 +1,23 @@
# 蟇シ闊ェ扈捺桷隶セ隶。譁<EFBDA1>。」
> **文档版本:** v1.0
> **创建日期:** 2025-10-29
> **维护者:** 前端开发团队
> **<EFBFBD>。」迚域悽<EFBFBD>?* v1.0
> **蛻帛サコ譌・譛滂シ?* 2025-10-29
> **扈エ謚、閠<EFBFBD><EFBFBD>** 蜑咲ォッ蠑€蜿大屬髦?
> **譛€蜷取峩譁ー<E8AD81><EFBDB0>** 2025-10-29
---
## <20>搭 譁<>。」隸エ譏<EFBDB4>
本文档详细说明AI科研平台的导航结构设计包括顶部导航和左侧导航的设计规范。
譛ャ譁<EFBFBD>。」隸ヲ扈<EFBFBD>ッエ譏拶I遘醍<EFBFBD>泌ケウ蜿ー逧<EFBFBD>ッシ闊ェ扈捺桷隶セ隶。<EFBFBD>悟桁諡ャ鬘カ驛ィ蟇シ闊ェ蜥悟キヲ萓ァ蟇シ闊ェ逧<EFBFBD>ョセ隶。隗<EFBFBD>激縲?
> **重要提示:** 本文档中涉及的模块版本要求(`requiredVersion`)均为**初始配置**,可以根据业务需求随时调整。版本权限分配完全可配置,无需改动代码逻辑。
> **驥崎ヲ∵署遉コ<EFBFBD>?* 譛ャ譁<EFBDAC>。」荳ュ豸牙所逧<E68980>ィ。蝮礼沿譛ャ隕∵アゑシ<E38291>requiredVersion`<60>牙插荳?*蛻晏ァ矩<EFBDA7>鄂ョ**<2A>悟庄莉・譬ケ謐ョ荳壼苅髴€豎る囂譌カ隹<EFBDB6>紛縲ら沿譛ャ譚<EFBDAC>剞蛻<E5899E><E89BBB>螳悟<E89EB3>蜿ッ驟咲スョ<EFBDBD>梧裏髴€謾ケ蜉ィ莉」遐<EFBDA3>€サ霎代€?
---
## <20>ァュ 鬘カ驛ィ蟇シ闊ェ隶セ隶。
### 导航项配置
### 蟇シ闊ェ鬘ケ驟咲ス?
```typescript
// navigationConfig.ts
@@ -26,15 +26,15 @@ export interface NavigationItem {
label: string; // 譏セ遉コ蜷咲ァー
route: string; // 霍ッ逕ア霍ッ蠕<EFBDAF>
icon?: ReactNode; // 蝗セ譬<EFBDBE>シ亥庄騾会シ<E4BC9A>
requiredVersion?: UserVersion; // 最低版本要求(可配置,支持后期调整)
requiredVersion?: UserVersion; // €菴守沿譛ャ隕∵アゑシ亥庄驟咲スョ<EFBFBD>梧髪謖∝錘譛溯ー<EFBFBD><EFBFBD>?
standalone?: boolean; // 譏ッ蜷ヲ謾ッ謖∫峡遶玖ソ占。<E58DA0>
}
/**
* 鬘カ驛ィ蟇シ闊ェ驟咲スョ
*
* ⚠️ 重要说明:
* - requiredVersion 字段为初始配置,可根据业务需求随时调整
* <EFBFBD><EFBFBD><EFBFBD> 驥崎ヲ∬ッエ譏趣シ?
* - requiredVersion 蟄玲ョオ荳コ蛻晏ァ矩<EFBFBD>鄂ョ<EFBFBD>悟庄譬ケ謐ョ荳壼苅髴€豎る囂譌カ隹<EFBFBD><EFBFBD>?
* - 謗ィ闕宣€夊ソ<E5A48A>錘遶ッAPI蜉ィ諤∬執蜿也沿譛ャ驟咲スョ<EFBDBD>梧髪謖∝ョ樊慮隹<E685AE>
* - 菫ョ謾ケ迚域悽隕∵アよ裏髴€謾ケ蜉ィ莉」遐<EFBDA3>€サ霎托シ悟宵髴€譖エ譁ー驟咲スョ蜊ウ蜿ッ
*/
@@ -49,12 +49,12 @@ export const TOP_NAVIGATION_ITEMS: NavigationItem[] = [
id: 'literature-platform',
label: 'AI譎コ閭ス譁<EFBDBD>鍵',
route: '/literature',
requiredVersion: 'advanced', // 初始配置:高级版可用(可调整)
requiredVersion: 'advanced', // 蛻晏ァ矩<EFBFBD>鄂ョ<EFBFBD>夐ォ倡コァ迚亥庄逕ィ<EFBFBD>亥庄隹<EFBFBD><EFBFBD>?
standalone: true,
},
{
id: 'knowledge-base',
label: '知识库',
label: '遏・隸<EFBFBD>コ?,
route: '/knowledge-base',
requiredVersion: 'basic', // 蛻晏ァ矩<EFBDA7>鄂ョ<E98482>壼渕遑€迚亥庄逕ィ<E98095>亥庄隹<E5BA84><EFBFBD><E7B49B>
},
@@ -62,21 +62,21 @@ export const TOP_NAVIGATION_ITEMS: NavigationItem[] = [
id: 'data-cleaning',
label: '<EFBFBD><EFBFBD>',
route: '/data-cleaning',
requiredVersion: 'advanced', // 初始配置:高级版可用(可调整)
placeholder: true, // 占位,显示"开发中"
requiredVersion: 'advanced', // 蛻晏ァ矩<EFBDA7>鄂ョ<E98482>夐ォ倡コァ迚亥庄逕ィ<E98095>亥庄隹<E5BA84><EFBFBD>?
placeholder: true, // 蜊<>菴搾シ梧仞遉?蠑€蜿台クュ"
},
{
id: 'statistical-analysis',
label: '<EFBFBD>',
route: '/intelligent-analysis',
requiredVersion: 'premium', // 初始配置:旗舰版可用(可调整)
requiredVersion: 'premium', // 蛻晏ァ矩<EFBDA7>鄂ョ<E98482>壽覧闊ー迚亥庄逕ィ<E98095>亥庄隹<E5BA84><EFBFBD>?
external: true, // 逕アJava蝗「髦溷シ€蜿托シ悟宵蛛夐。カ驛ィ蟇シ闊ェ髮<EFBDAA><E9ABAE>
},
{
id: 'statistical-tools',
label: '<EFBFBD>',
route: '/statistical-tools',
requiredVersion: 'premium', // 初始配置:旗舰版可用(可调整)
requiredVersion: 'premium', // 蛻晏ァ矩<EFBFBD>鄂ョ<EFBFBD>壽覧闊ー迚亥庄逕ィ<EFBFBD>亥庄隹<EFBFBD><EFBFBD>?
external: true, // 逕アJava蝗「髦溷シ€蜿托シ悟宵蛛夐。カ驛ィ蟇シ闊ェ髮<EFBDAA><E9ABAE>
},
];
@@ -85,19 +85,19 @@ export const TOP_NAVIGATION_ITEMS: NavigationItem[] = [
### 鬘カ驛ィ蟇シ闊ェ蟶<EFBDAA>€
```
┌──────────────────────────────────────────────────────────────────────────┐
[Logo] [AI问答] [AI智能文献] [知识库] [智能数据清洗] [智能统计分析] [统计分析工具] [用户名] [用户菜单▼] │
└──────────────────────────────────────────────────────────────────────────┘
笏娯楳笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏?
笏? [Logo] [AI髣ョ遲脳 [AI譎コ閭ス譁<EFBDBD>鍵] [遏・隸<EFBDA5>コ転 [譎コ閭ス謨ー謐ョ貂<EFBDAE>エ余 [譎コ閭ス扈溯ョ。蛻<EFBDA1>梵] [扈溯ョ。蛻<EFBDA1>梵蟾・蜈キ] [逕ィ謌キ蜷江 [逕ィ謌キ闖懷黒笆シ] 笏?
笏披楳笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏?
160px 閾ェ騾ょコ泌ョス蠎ヲ 200px
```
### 隗<>ァ芽ョセ隶。隗<EFBDA1>
#### 导航项样式
- **正常状态**`color: #4b5563`, `font-weight: 500`
- **悬停状态**`color: #0ea5e9`, `background: rgba(14, 165, 233, 0.1)`
- **激活状态**`color: #0ea5e9`, `font-weight: 600`, `border-bottom: 2px solid #0ea5e9`
- **禁用状态**(无权限):`color: #9ca3af`, `cursor: not-allowed`
#### 蟇シ闊ェ鬘ケ譬キ蠑?
- **豁」蟶ク迥カ諤?*<2A>color: #4b5563`, `font-weight: 500`
- **謔ャ蛛懃憾諤?*<2A>color: #0ea5e9`, `background: rgba(14, 165, 233, 0.1)`
- **豼€豢サ迥カ諤?*<2A>color: #0ea5e9`, `font-weight: 600`, `border-bottom: 2px solid #0ea5e9`
- **遖∫畑迥カ諤?*<2A>域裏譚<E8A38F><EFBFBD>会シ啻color: #9ca3af`, `cursor: not-allowed`
#### 髣エ霍晁ァ<E69981>
- 蟇シ闊ェ鬘ケ荵矩龍<E79FA9>啻16px` 豌エ蟷ウ髣エ霍<EFBDB4>
@@ -108,26 +108,26 @@ export const TOP_NAVIGATION_ITEMS: NavigationItem[] = [
**菴咲スョ**<EFBFBD>夐。カ驛ィ蟇シ闊ェ譛€蜿ウ萓ァ
**显示内容**
- 用户名(手机号脱敏显示,如:`186****8738`
**譏セ遉コ蜀<EFBFBD>ョケ**<EFBFBD>?
- 逕ィ謌キ蜷搾シ域焔譛コ蜿キ閼ア謨乗仞遉コ<EFBFBD>悟ヲゑシ啻186****8738`<EFBFBD>?
- 逕ィ謌キ螟エ蜒<EFBDB4>/蝗セ譬<EFBDBE>シ育せ蜃サ隗ヲ蜿台ク区級闖懷黒<E687B7><E9BB92>
**下拉菜单选项**
**荳区級闖懷黒騾蛾。ケ**<EFBFBD>?
```
┌─────────────────────┐
│ 个人中心
│ 历史记录
│ ────────────────
│ 订阅管理
│ 退出账号
└─────────────────────┘
笏娯楳笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏?
笏?荳ェ莠コ荳ュ蠢<EFBDAD> 笏?
笏?蜴<>彰隶ー蠖<EFBDB0> 笏?
笏?笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€ 笏?
笏?隶「髦<EFBDA2>ョ。逅<EFBDA1> 笏?
笏?騾€蜃コ雍ヲ蜿? 笏?
笏披楳笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏?
```
**路由跳转**
- 个人中心 → `/user/profile`
- 历史记录 → `/user/history`
- 订阅管理 → `/user/subscription`
- 退出账号 → 登出操作
**霍ッ逕ア霍ウ霓ャ**<EFBFBD>?
- 荳ェ莠コ荳ュ蠢<EFBFBD> 竊?`/user/profile`
- <EFBFBD>彰隶ー蠖<EFBFBD> 竊?`/user/history`
- 隶「髦<EFBFBD>ョ。逅<EFBFBD> 竊?`/user/subscription`
- 騾€蜃コ雍ヲ蜿?竊?逋サ蜃コ謫堺ス<E5A0BA>
---
@@ -135,27 +135,27 @@ export const TOP_NAVIGATION_ITEMS: NavigationItem[] = [
### 隶セ隶。蜴溷<E89CB4>
1. **按需显示**:只有进入具体模块后才显示左侧导航
2. **模块独立**:每个模块有自己独立的左侧导航配置
1. **謖蛾怙譏セ遉コ**<EFBFBD>壼宵譛芽ソ帛<EFBFBD>蜈キ菴捺ィ。蝮怜錘謇肴仞遉コ蟾ヲ萓ァ蟇シ闊?
2. **讓。蝮礼峡遶<EFBFBD>**<EFBFBD>壽ッ丈クェ讓。蝮玲怏閾ェ蟾ア迢ャ遶狗噪蟾ヲ萓ァ蟇シ闊ェ驟咲ス?
3. **螻らコァ貂<EFBDA7>**<EFBFBD>壽髪謖∽ク€郤ァ蜥御コ檎コァ闖懷黒
### AI髣ョ遲疲ィ。蝮怜キヲ萓ァ蟇シ闊ェ
**布局方式**:卡片式布局(不使用左侧导航)
**<EFBFBD>€譁ケ蠑<EFBFBD>**<EFBFBD>壼今迚<EFBFBD>シ丞ク<EFBFBD>€<EFBFBD>井ク堺スソ逕ィ蟾ヲ萓ァ蟇シ闊ェ<EFBFBD>?
```
┌─────────────────────────────────────────┐
AI问答主界面
│ ┌───────────────────────────────────┐ │
│ │ 搜索框 + 提问按钮 │ │
│ └───────────────────────────────────┘ │
│ 或选择一个智能体开始:
│ ┌────┐ ┌────┐ ┌────┐ ┌────┐
│ │选题│ │PICO│ │研究│ │方法│ ...
│ │评价│ │梳理│ │方案│ │学 │
│ └────┘ └────┘ └────┘ └────┘
└─────────────────────────────────────────┘
笏娯楳笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏?
笏? AI髣ョ遲比クサ逡碁<EFBFBD>? 笏?
笏? 笏娯楳笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏? 笏?
笏? 笏? 謳懃エ「譯?+ 謠宣琉謖蛾聴 笏? 笏?
笏? 笏披楳笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏? 笏?
笏? 笏?
笏? 謌夜€画叫荳€荳ェ譎コ閭ス菴灘シ€蟋? 笏?
笏? 笏娯楳笏€笏€笏€笏?笏娯楳笏€笏€笏€笏?笏娯楳笏€笏€笏€笏?笏娯楳笏€笏€笏€笏? 笏?
笏? 笏る€蛾「倪<EFBDA2>?笏ICO笏?笏ら<E7AC8F>皮ゥカ笏<EFBDB6> 笏よ婿豕補狽 ... 笏?
笏? 笏りッ<E3828A>サキ笏<EFBDB7> 笏よ「ウ逅<EFBDB3>狽 笏よ婿譯遺狽 笏ょュヲ 笏? 笏?
笏? 笏披楳笏€笏€笏€笏?笏披楳笏€笏€笏€笏?笏披楳笏€笏€笏€笏?笏披楳笏€笏€笏€笏? 笏?
笏披楳笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏€笏?
```
### AI譎コ閭ス譁<EFBDBD>鍵讓。蝮怜キヲ萓ァ蟇シ闊ェ
@@ -170,7 +170,7 @@ const LITERATURE_SIDE_NAV = [
},
{
id: 'search',
label: '智能文献检索',
label: '譎コ閭ス譁<EFBFBD>鍵譽€邏?,
route: '/literature/search',
icon: '<EFBFBD>',
},
@@ -184,7 +184,7 @@ const LITERATURE_SIDE_NAV = [
id: 'screening',
label: '<EFBFBD><EFBFBD><EFBFBD>',
route: '/literature/screening',
icon: '✅',
icon: '?,
},
{
id: 'full-text',
@@ -194,37 +194,37 @@ const LITERATURE_SIDE_NAV = [
},
{
id: 'extraction',
label: '全文解析与数据提取',
label: '蜈ィ譁<EFBFBD>ァ」譫蝉ク取焚謐ョ謠仙<EFBFBD>?,
route: '/literature/extraction',
icon: '<EFBFBD>',
},
{
id: 'analysis',
label: '数据综合分析与报告',
label: '<EFBFBD>?,
route: '/literature/analysis',
icon: '<27>投',
},
];
```
**布局样式**
**<EFBFBD>€譬キ蠑<EFBFBD>**<EFBFBD>?
- 螳ス蠎ヲ<E8A08E>啻200px`
- 閭梧勹濶イ<E6BFB6>#f9fafb`
-€豢サ鬘ケ<E9AC98>啻background: #e0e7ff`, `border-left: 3px solid #4f46e5`
### 知识库模块左侧导航
### 遏・隸<EFBFBD>コ捺ィ。蝮怜キヲ萓ァ蟇シ闊?
```typescript
const KNOWLEDGE_BASE_SIDE_NAV = [
{
id: 'list',
label: '知识库列表',
label: '遏・隸<EFBFBD>コ灘<EFBFBD>陦?,
route: '/knowledge-base',
icon: '<EFBFBD>',
},
{
id: 'create',
label: '+ 新建知识库',
label: '+ <EFBFBD>?,
route: '/knowledge-base/create',
icon: '+',
},
@@ -233,23 +233,23 @@ const KNOWLEDGE_BASE_SIDE_NAV = [
### 譎コ閭ス扈溯ョ。蛻<EFBDA1>梵讓。蝮暦シ亥、夜Κ讓。蝮苓ッエ譏趣シ<E8B6A3>
**说明:** 智能统计分析模块由**Java团队**开发,采用**Java后端**技术栈。
**我们的职责:** 仅在顶部导航中集成该模块的入口点击后跳转到Java团队开发的页面。
**设计规范:** 不需要我们设计左侧导航Java团队已有自己的页面布局设计。
**隸エ譏趣シ?* 譎コ閭ス扈溯ョ。蛻<EFBDA1>梵讓。蝮礼<E89DAE>?*Java蝗「髦<EFBDA2>**蠑€蜿托シ碁㊦逕ィ**Java蜷守ォッ**謚€譛ッ譬医€?
**謌台サャ逧<EFBFBD>雍」<EFBFBD><EFBFBD>**<>惠鬘カ驛ィ蟇シ闊ェ荳ュ髮<EFBDAD><E9ABAE>隸・讓。蝮礼噪蜈・蜿」<E89CBF>檎せ蜃サ蜷手キウ霓ャ蛻ーJava蝗「髦溷シ€蜿醍噪鬘オ髱「縲?
**隶セ隶。隗<EFBFBD><EFBFBD>?* 荳埼怙隕∵<E99A95>莉ャ隶セ隶。蟾ヲ萓ァ蟇シ闊ェ<E9978A>繰ava蝗「髦溷キイ譛芽<E8AD9B>蟾ア逧<EFBDB1>。オ髱「蟶<EFBDA2>€隶セ隶。縲?
**集成方式:**
- 顶部导航点击后,直接跳转到 `/intelligent-analysis` 路由
**<EFBFBD><EFBFBD>譁ケ蠑擾シ?*
- 鬘カ驛ィ蟇シ闊ェ轤ケ蜃サ蜷趣シ檎峩謗・霍ウ霓ャ蛻?`/intelligent-analysis` 霍ッ逕ア
- 隸・霍ッ逕ア蜿ッ閭ス謖<EFBDBD>髄迢ャ遶狗噪Java蠎皮畑謌吠frame蠏悟<E8A08F>
- 蜈キ菴馴寔謌先婿蠑城怙荳捌ava蝗「髦溷刻蝠<E588BB>。ョ螳<EFBDAE>
### 扈溯ョ。蛻<EFBDA1>梵蟾・蜈キ讓。蝮暦シ亥、夜Κ讓。蝮苓ッエ譏趣シ<E8B6A3>
**说明:** 统计分析工具模块由**Java团队**开发,采用**Java后端**技术栈。
**我们的职责:** 仅在顶部导航中集成该模块的入口点击后跳转到Java团队开发的页面。
**设计规范:** 该模块**不是左侧导航设计**Java团队有自己的页面布局如顶部Tab导航等
**隸エ譏趣シ?* 扈溯ョ。蛻<EFBDA1>梵蟾・蜈キ讓。蝮礼<E89DAE>?*Java蝗「髦<EFBDA2>**蠑€蜿托シ碁㊦逕ィ**Java蜷守ォッ**謚€譛ッ譬医€?
**謌台サャ逧<EFBFBD>雍」<EFBFBD><EFBFBD>**<>惠鬘カ驛ィ蟇シ闊ェ荳ュ髮<EFBDAD><E9ABAE>隸・讓。蝮礼噪蜈・蜿」<E89CBF>檎せ蜃サ蜷手キウ霓ャ蛻ーJava蝗「髦溷シ€蜿醍噪鬘オ髱「縲?
**隶セ隶。隗<EFBFBD><EFBFBD>?* 隸・讓。蝮?*荳肴弍蟾ヲ萓ァ蟇シ闊ェ隶セ隶。**<EFBFBD>繰ava蝗「髦滓怏閾ェ蟾ア逧<EFBFBD>。オ髱「蟶<EFBFBD>€<EFBFBD>亥ヲる。カ驛ィTab蟇シ闊ェ遲会シ峨€?
**集成方式:**
- 顶部导航点击后,直接跳转到 `/statistical-tools` 路由
**<EFBFBD><EFBFBD>譁ケ蠑擾シ?*
- 鬘カ驛ィ蟇シ闊ェ轤ケ蜃サ蜷趣シ檎峩謗・霍ウ霓ャ蛻?`/statistical-tools` 霍ッ逕ア
- 隸・霍ッ逕ア蜿ッ閭ス謖<EFBDBD>髄迢ャ遶狗噪Java蠎皮畑謌吠frame蠏悟<E8A08F>
- 蜈キ菴馴寔謌先婿蠑城怙荳捌ava蝗「髦溷刻蝠<E588BB>。ョ螳<EFBDAE>
@@ -260,9 +260,9 @@ const KNOWLEDGE_BASE_SIDE_NAV = [
### 鬘カ驛ィ蟇シ闊ェ蛻<EFBDAA>
```typescript
// 点击顶部导航项
// 轤ケ蜃サ鬘カ驛ィ蟇シ闊ェ鬘?
const handleNavClick = (item: NavigationItem) => {
// 1. 检查权限
// 1. €譟・譚<EFBFBD><EFBFBD>?
if (!hasPermission(item.requiredVersion)) {
showUpgradePrompt(item);
return;
@@ -274,10 +274,10 @@ const handleNavClick = (item: NavigationItem) => {
return;
}
// 3. 导航到目标路由
// 3. 蟇シ闊ェ蛻ー逶ョ譬<EFBFBD>キッ逕?
navigate(item.route);
// 4. 更新激活状态
// 4. 譖エ譁ー豼€豢サ迥カ諤?
setActiveNavItem(item.id);
};
```
@@ -285,12 +285,12 @@ const handleNavClick = (item: NavigationItem) => {
### 蟾ヲ萓ァ蟇シ闊ェ蛻<EFBDAA>
```typescript
// 点击左侧导航项
// 轤ケ蜃サ蟾ヲ萓ァ蟇シ闊ェ鬘?
const handleSideNavClick = (item: SideNavItem) => {
// 导航到目标路由(模块内部路由)
// 蟇シ闊ェ蛻ー逶ョ譬<EFBFBD>キッ逕ア<EFBFBD>域ィ。蝮怜<EFBFBD>驛ィ霍ッ逕ア<EFBFBD>?
navigate(item.route);
// 更新激活状态
// 譖エ譁ー豼€豢サ迥カ諤?
setActiveSideNavItem(item.id);
};
```
@@ -300,24 +300,24 @@ const handleSideNavClick = (item: SideNavItem) => {
蟇ケ莠取キア螻らコァ鬘オ髱「<EFBFBD>悟サコ隶ョ豺サ蜉<EFBFBD>髱「蛹<EFBFBD>ア大ッシ闊ェ<EFBFBD><EFBFBD>
```
首页 > AI智能文献 > 标题摘要初筛 > 审核工作台
鬥夜。オ > AI譎コ閭ス譁<EFBFBD>鍵 > 譬<>「俶遭隕∝<E99A95><EFBFBD> > 螳。譬ク蟾・菴懷<E88FB4>?
```
---
## 📱 响应式设计
## <EFBFBD>導 蜩榊コ泌シ剰ョセ隶?
### 桌面端 (>1024px)
### 譯碁擇遶?(>1024px)
- 螳梧紛譏セ遉コ謇€譛蛾。カ驛ィ蟇シ闊ェ鬘ケ
- 显示完整的左侧导航
- 譏セ遉コ螳梧紛逧<EFBFBD>キヲ萓ァ蟇シ闊?
### 平板端 (768-1024px)
- 显示前4个顶部导航项
### 蟷ウ譚ソ遶?(768-1024px)
- 譏セ遉コ蜑?荳ェ鬘カ驛ィ蟇シ闊ェ鬘ケ
- 蜈カ菴吝ッシ闊ェ鬘ケ謚伜匠蛻ー"譖エ螟<EFBDB4>"闖懷黒
- 左侧导航可折叠为抽屉式
- 蟾ヲ萓ァ蟇シ闊ェ蜿ッ謚伜匠荳コ謚ス螻牙シ?
### 移动端 (<768px)
- 顶部导航采用汉堡菜单(☰)
### 遘サ蜉ィ遶?(<768px)
- 鬘カ驛ィ蟇シ闊ェ驥<EFBFBD>畑豎牙<EFBFBD>。闖懷黒<EFBFBD>遺于<EFBFBD>?
- 蟾ヲ萓ァ蟇シ闊ェ謾ケ荳コ蠎暮ΚTab蟇シ闊ェ謌匁歓螻牙シ<E78999>
---
@@ -336,7 +336,7 @@ const handleSideNavClick = (item: SideNavItem) => {
--nav-text-active: #0ea5e9;
--nav-active-border: #0ea5e9;
/* 侧边栏颜色 */
/* 萓ァ霎ケ譬城「懆<EFBFBD>?*/
--sidebar-bg: #f9fafb;
--sidebar-active-bg: #e0e7ff;
--sidebar-active-border: #4f46e5;
@@ -354,7 +354,7 @@ const handleSideNavClick = (item: SideNavItem) => {
## <20>統 螳樊命貂<E591BD>
### 组件开发
### <EFBFBD>サカ蠑€蜿?
- [ ] `TopNavigation.tsx` - 鬘カ驛ィ蟇シ闊ェ扈<EFBDAA>サカ
- [ ] `SideNavigation.tsx` - 蟾ヲ萓ァ蟇シ闊ェ扈<EFBDAA>サカ
- [ ] `UserMenu.tsx` - 逕ィ謌キ闖懷黒扈<E9BB92>サカ
@@ -364,16 +364,16 @@ const handleSideNavClick = (item: SideNavItem) => {
### 驟咲スョ譁<EFBDAE>サカ
- [ ] `navigationConfig.ts` - 蟇シ闊ェ驟咲スョ
- [ ] `moduleNavConfig.ts` - 讓。蝮怜ッシ闊ェ驟咲スョ
- [ ] `versionConfig.ts` - 版本配置(本地配置,作为兜底)
- [ ] `versionConfig.ts` - 迚域悽驟咲スョ<EFBFBD>域悽蝨ー驟咲スョ<EFBFBD>御ス應クコ蜈懷コ包シ?
- [ ] `useVersionConfig.ts` - 迚域悽驟咲スョHook<6F>井サ拶PI蜉ィ諤∬執蜿厄シ<E58E84>
### 譁<>。」
- [ ] 更新本文档
- [ ] 譖エ譁ー譛ャ譁<EFBFBD>。?
- [ ] 郛門<E9839B>蟇シ闊ェ扈<EFBDAA>サカ菴ソ逕ィ譁<EFBDA8>。」
---
**文档版本:** v1.0
**<EFBFBD>。」迚域悽<EFBFBD>?* v1.0
**譛€蜷取峩譁ー<E8AD81><EFBDB0>** 2025-10-29

View File

@@ -2,32 +2,32 @@
## 📋 目录
本目录包含平台前端的架构设计文档。
本ç®å½•包å<EFBFBD>«å¹³å<EFBFBD>°å‰<EFBFBD>ç«¯çš„æž¶æž„è®¾è®¡æ‡æ¡£ã€?
### 文档列表
- **[01-å‰<C3A5>端总体架构设计.md](./01-å‰<C3A5>端总体架构设计.md)** - å¹³å<C2B3>°çº§å‰<C3A5>端架构总体设计
- **[02-导航结构设计.md](./02-导航结构设计.md)** - 顶部导航和左侧导航的详细设计
- **[03-架构原型图.html](./03-架构原型图.html)** - 交互式前端架构原型图
- **[03-架构原型å›?html](./03-架构原型å›?html)** - 交äºå¼<C3A5>å‰<C3A5>端架构原åžå¾
---
## 🎯 设计原则
### 1. 模块化设计
- 每个功能模块独立开发、独立部署
### 1. 模å<EFBFBD>—åŒè®¾è®?
- æ¯<EFBFBD>个功能模å<EFBFBD>—ç¬ç«å¼€å<EFBFBD>ã€<EFBFBD>ç¬ç«éƒ¨ç½?
- 模å<C2A1>—é—´æ— ä¾<C3A4>èµå…³ç³»ï¼Œå<C592>¯ç¬ç«è¿<C3A8>行
- 支持模块独立产品化
- 支æŒ<EFBFBD>模å<EFBFBD>—ç¬ç«äº§å“<EFBFBD>åŒ?
### 2. æ<>ƒé™<C3A9>控制设计
- 基于用户版本的权限控制
- 灵活的功能模块开关机制
- 版本配置可动态调整
- 基于用户版本的æ<EFBFBD>ƒé™<EFBFBD>控åˆ?
- ç<EFBFBD>µæ´»çš„功能模å<EFBFBD>—开关机åˆ?
- 版本é…<EFBFBD>ç½®å<EFBFBD>¯åЍæ€<EFBFBD>è°ƒæ•?
### 3. 可扩展性设计
- 预留新模块接入接口
### 3. å<EFBFBD>¯æ‰©å±•性设è®?
- é¢„ç•™æ°æ¨¡å<EFBFBD>—接入接å<EFBFBD>?
- æ<>ä»¶åŒçš„æ¨¡å<C2A1>—加载机åˆ
- 配置驱动的功能开关
- é…<EFBFBD>置驱动的功能开å…?
---
@@ -38,7 +38,7 @@
---
**维护者:** 前端开发团队
**维护者:** å‰<C3A5>端开å<E282AC>å¢é˜?
**最å<E282AC>Žæ´æ°ï¼š** 2025-11-07