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:
@@ -1,8 +1,8 @@
|
||||
# 平台基础设施规划(Platform Infrastructure Plan)
|
||||
# 蟷ウ蜿ー蝓コ遑隶セ譁ス隗<EFBFBD><EFBFBD><EFBFBD><EFBFBD>latform Infrastructure Plan<EFBFBD>?
|
||||
|
||||
> **文档版本:** V1.0
|
||||
> **创建日期:** 2025-11-16
|
||||
> **适用对象:** 架构师、后端开发、运维
|
||||
> **譁<EFBFBD>。」迚域悽<EFBFBD>?* V1.0
|
||||
> **蛻帛サコ譌・譛滂シ?* 2025-11-16
|
||||
> **騾ら畑蟇ケ雎。<EFBFBD>?* 譫カ譫<EFBDB6>ク医∝錘遶ッ蠑蜿代∬ソ千サ?
|
||||
> **譁<>。」迥カ諤<EFBDB6>シ<EFBFBD>** 螳樊命隗<E591BD><E99A97>
|
||||
> **扈エ謚、閠<EFBDA4>シ<EFBFBD>** 譫カ譫<EFBDB6>屬髦<E5B1AC>
|
||||
|
||||
@@ -10,81 +10,81 @@
|
||||
|
||||
## <20>搭 譁<>。」隸エ譏<EFBDB4>
|
||||
|
||||
本文档是壹证循AI科研平台的**平台基础设施规划文档**,定义了:
|
||||
譛ャ譁<EFBFBD>。」譏ッ螢ケ隸∝セェAI遘醍<EFBFBD>泌ケウ蜿ー逧?*蟷ウ蜿ー蝓コ遑隶セ譁ス隗<EFBDBD><E99A97>譁<EFBFBD>。」**<2A>悟ョ壻ケ我コ<E68891>シ?
|
||||
|
||||
1. **核心需求**:平台基础设施需要解决的问题
|
||||
1. **譬ク蠢<EFBFBD>怙豎?*<2A>壼ケウ蜿ー蝓コ遑隶セ譁ス髴隕∬ァ」蜀ウ逧<EFBDB3>琉鬚<E79089>
|
||||
2. **隶セ隶。譁ケ譯<EFBDB9>**<EFBFBD>壽橿譛ッ譫カ譫<EFBFBD>柱螳樒鴫譁ケ譯<EFBFBD>
|
||||
3. **螳樊命隶。蛻<EFBDA1>**<EFBFBD>壼<EFBFBD>髦カ谿オ逧<EFBFBD>ョ樊命霍ッ郤ソ蝗セ
|
||||
4. **鬪梧噺譬<E599BA>㊥**<EFBFBD>壽ッ丈クェ讓。蝮礼噪鬪梧噺譬<EFBFBD>㊥
|
||||
|
||||
**核心目标:**
|
||||
- ✅ 支持本地开发和云端部署无缝切换
|
||||
- ✅ 支持PRD定义的4种部署形态(云端SaaS、私有化、单机版、混合)
|
||||
- ✅ 支持模块化组合售卖(专业版、高级版、旗舰版)
|
||||
- ✅ 提供通用能力,所有业务模块直接复用
|
||||
**譬ク蠢<EFBFBD>岼譬<EFBFBD>シ?*
|
||||
- 笨?謾ッ謖∵悽蝨ー蠑蜿大柱莠醍ォッ驛ィ鄂イ譌<EFBDB2>郛晏<E9839B>謐「
|
||||
- 笨?謾ッ謖 ̄RD螳壻ケ臥<EFBDB9>?遘埼Κ鄂イ蠖「諤<EFBDA2>シ井コ醍ォッSaaS縲∫ァ∵怏蛹悶∝黒譛コ迚医∵キキ蜷茨シ<E88CA8>
|
||||
- 笨?謾ッ謖∵ィ。蝮怜喧扈<E596A7>粋蜚ョ蜊厄シ井ク謎ク夂沿縲<E6B2BF>ォ倡コァ迚医∵覧闊ー迚茨シ?
|
||||
- 笨?謠蝉セ幃夂畑閭ス蜉幢シ梧園譛我ク壼苅讓。蝮礼峩謗・螟咲<E89E9F>?
|
||||
|
||||
---
|
||||
|
||||
## 🎯 需求背景
|
||||
## <EFBFBD>識 髴豎りレ譎?
|
||||
|
||||
### 1. 业务需求(来自PRD)
|
||||
### 1. 荳壼苅髴豎ゑシ域擂閾ェPRD<EFBFBD>?
|
||||
|
||||
根据 [09-总体需求文档(PRD).md](../00-系统总体设计/09-总体需求文档(PRD).md),平台必须支持:
|
||||
譬ケ謐ョ [09-諤サ菴馴怙豎よ枚譯?PRD).md](../00-邉サ扈滓サ菴楢ョセ隶。/09-諤サ菴馴怙豎よ枚譯?PRD).md)<29>悟ケウ蜿ー蠢<EFBDB0>。サ謾ッ謖<EFBDAF>シ<EFBFBD>
|
||||
|
||||
| 需求ID | 需求描述 | 技术挑战 |
|
||||
| 髴豎<EFBFBD>D | 髴豎よ緒霑?| 謚譛ッ謖第<E8AC96>?|
|
||||
|--------|---------|---------|
|
||||
| **NFR-1.1** | 云端SaaS版(多租户、高可用) | Serverless架构、自动扩缩容 |
|
||||
| **NFR-1.2** | 私有化部署(数据不出内网) | 本地存储、本地数据库 |
|
||||
| **NFR-1.3** | 单机版(100%本地化) | 离线运行、本地文件系统 |
|
||||
| **NFR-1.4** | 混合部署(部分本地+部分云端) | 灵活的配置切换 |
|
||||
| **NFR-2.1** | SaaS多版本(专业版、高级版、旗舰版) | Feature Flag、模块化 |
|
||||
| **NFR-1.1** | 莠醍ォッSaaS迚茨シ亥、夂ァ滓姐縲<EFBFBD>ォ伜庄逕ィ<EFBFBD>?| Serverless譫カ譫<EFBDB6>∬<C280>蜉ィ謇ゥ郛ゥ螳ケ |
|
||||
| **NFR-1.2** | 遘∵怏蛹夜Κ鄂イ<EFBFBD>域焚謐ョ荳榊<EFBFBD>蜀<EFBFBD>ス托シ?| 譛ャ蝨ー蟄伜お縲∵悽蝨ー謨ー謐ョ蠎<EFBDAE> |
|
||||
| **NFR-1.3** | 蜊墓惻迚茨シ<EFBFBD>100%譛ャ蝨ー蛹厄シ<E58E84> | 遖サ郤ソ霑占。後∵悽蝨ー譁<EFBDB0>サカ邉サ扈?|
|
||||
| **NFR-1.4** | 豺キ蜷磯Κ鄂イ<EFBFBD>磯Κ蛻<EFBFBD>悽蝨?驛ィ蛻<EFBDA8>コ醍ォッ<EFBDAB>?| 轣オ豢サ逧<EFBDBB><E980A7>鄂ョ蛻<EFBDAE><E89BBB>?|
|
||||
| **NFR-2.1** | SaaS螟夂沿譛ャ<EFBFBD>井ク謎ク夂沿縲<EFBFBD>ォ倡コァ迚医∵覧闊ー迚茨シ?| Feature Flag縲∵ィ。蝮怜喧 |
|
||||
| **NFR-2.2** | 讓。蝮怜喧蜚ョ蜊厄シ井ササ菴墓ィ。蝮怜庄迢ャ遶句醗蜊厄シ<E58E84> | 譚セ閠ヲ蜷域楔譫<E6A594> |
|
||||
| **NFR-2.3** | AI成本可控(动态切换LLM) | 适配器模式 |
|
||||
| **NFR-2.3** | AI謌先悽蜿ッ謗ァ<EFBFBD>亥勘諤∝<EFBFBD>謐「LLM<EFBFBD>?| 騾る<E9A8BE>蝎ィ讓。蠑?|
|
||||
|
||||
### 2. 謚譛ッ髴豎ゑシ域擂閾ェ莠大次逕滓楔譫<E6A594>シ<EFBFBD>
|
||||
|
||||
根据云原生部署架构(阿里云 Serverless + RDS + OSS),平台必须:
|
||||
譬ケ謐ョ莠大次逕滄Κ鄂イ譫カ譫<EFBFBD>シ磯仭驥御コ?Serverless + RDS + OSS<EFBFBD>会シ悟ケウ蜿ー蠢<EFBFBD>。サ<EFBFBD>?
|
||||
|
||||
| 技术需求 | 说明 | 优先级 |
|
||||
| 謚譛ッ髴豎?| 隸エ譏<EFBDB4> | 莨伜<E88EA8>郤?|
|
||||
|---------|------|--------|
|
||||
| **无状态应用** | 不依赖本地文件系统或内存状态 | P0 |
|
||||
| **譌<EFBFBD>迥カ諤∝コ皮<EFBFBD>?* | 荳堺セ晁オ匁悽蝨ー譁<EFBDB0>サカ邉サ扈滓<E68988>蜀<EFBFBD>ュ倡憾諤?| P0 |
|
||||
| **蟄伜お謚ス雎。** | 謾ッ謖∵悽蝨ー蟄伜お蜥薫SS譌<53>郛晏<E9839B>謐「 | P0 |
|
||||
| **数据库连接池** | 防止Serverless扩容导致连接数超限 | P0 |
|
||||
| **标准化日志** | 输出到stdout,支持集中收集 | P0 |
|
||||
| **异步任务** | 长时间任务必须异步处理(避免超时) | P0 |
|
||||
| **分布式缓存** | 多实例共享缓存 | P1 |
|
||||
| **健康检查** | SAE存活和就绪检查 | P1 |
|
||||
| **謨ー謐ョ蠎楢ソ樊磁豎<EFBFBD>** | 髦イ豁「Serverless謇ゥ螳ケ蟇シ閾エ霑樊磁謨ー雜<EFBFBD><EFBFBD>?| P0 |
|
||||
| **譬<EFBFBD>㊥蛹匁律蠢?* | 霎灘<E99C8E>蛻ーstdout<75>梧髪謖<E9ABAA>寔荳ュ謾カ髮?| P0 |
|
||||
| **蠑よュ・莉サ蜉。** | 髟ソ譌カ髣エ莉サ蜉。蠢<EFBDA1>。サ蠑よュ・螟<EFBDA5>炊<EFBFBD>磯∩蜈崎カ<E5B48E>慮<EFBFBD>?| P0 |
|
||||
| **蛻<EFBFBD>ク<EFBFBD>シ冗シ灘ュ?* | 螟壼ョ樔セ句<EFBDBE>莠ォ郛灘ュ?| P1 |
|
||||
| **蛛・蠎キ譽譟?* | SAE蟄俶エサ蜥悟ーア扈ェ譽譟?| P1 |
|
||||
| **逶第而謖<E8808C><E8AC96><EFBFBD>** | 謨ー謐ョ蠎楢ソ樊磁謨ー縲∽ササ蜉。髦溷<E9ABA6>遲<EFBFBD> | P1 |
|
||||
|
||||
---
|
||||
|
||||
## 🏗️ 设计方案
|
||||
## <EFBFBD>女<EFBFBD>?隶セ隶。譁ケ譯<EFBDB9>
|
||||
|
||||
### 譬ク蠢<EFBDB8>ョセ隶。蜴溷<E89CB4>
|
||||
|
||||
> **蟷ウ蜿ー蝓コ遑隶セ譁ス騾夊ソ<E5A48A>る<C280>蝎ィ讓。蠑擾シ<E693BE>dapter Pattern<72>牙ョ樒鴫螟夂識蠅<E8AD98>髪謖<E9ABAA>**
|
||||
|
||||
```
|
||||
┌─────────────────────────────────────────────────────────┐
|
||||
│ 业务模块层 │
|
||||
│ ASL | AIA | PKB | DC | SSA | ST | UAM │
|
||||
│ 只关注业务逻辑,复用平台能力 │
|
||||
└─────────────────────────────────────────────────────────┘
|
||||
↓ import from '@/common/'
|
||||
┌─────────────────────────────────────────────────────────┐
|
||||
│ 平台基础设施层(Adapter Pattern) │
|
||||
├─────────────────────────────────────────────────────────┤
|
||||
│ 存储:LocalAdapter ←→ OSSAdapter │
|
||||
│ 缓存:MemoryCacheAdapter ←→ RedisCacheAdapter │
|
||||
│ 任务:MemoryQueueAdapter ←→ DatabaseQueueAdapter │
|
||||
│ 日志:ConsoleLogger ←→ 阿里云SLS │
|
||||
│ 数据库:本地PostgreSQL ←→ 阿里云RDS(连接池) │
|
||||
└─────────────────────────────────────────────────────────┘
|
||||
↓ 环境变量切换
|
||||
┌─────────────────────────────────────────────────────────┐
|
||||
│ 部署环境(零代码改动) │
|
||||
│ 本地开发 | 云端SaaS | 私有化部署 | 单机版 │
|
||||
└─────────────────────────────────────────────────────────┘
|
||||
笏娯楳笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏?
|
||||
笏? 荳壼苅讓。蝮怜ア? 笏?
|
||||
笏? ASL | AIA | PKB | DC | SSA | ST | UAM 笏?
|
||||
笏? 蜿ェ蜈ウ豕ィ荳壼苅騾サ霎托シ悟、咲畑蟷ウ蜿ー閭ス蜉? 笏?
|
||||
笏披楳笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏?
|
||||
竊?import from '@/common/'
|
||||
笏娯楳笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏?
|
||||
笏? 蟷ウ蜿ー蝓コ遑隶セ譁ス螻ゑシ<EFBFBD>dapter Pattern<EFBFBD>? 笏?
|
||||
笏懌楳笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏?
|
||||
笏?蟄伜お<E4BC9C>哭ocalAdapter 竊絶<EFBFBD> OSSAdapter 笏?
|
||||
笏?郛灘ュ假シ哺emoryCacheAdapter 竊絶<EFBFBD> RedisCacheAdapter 笏?
|
||||
笏?莉サ蜉。<E89C89>哺emoryQueueAdapter 竊絶<EFBFBD> DatabaseQueueAdapter 笏?
|
||||
笏?譌・蠢暦シ咾onsoleLogger 竊絶<EFBFBD> 髦ソ驥御コ全LS 笏?
|
||||
笏?謨ー謐ョ蠎難シ壽悽蝨ーPostgreSQL 竊絶<E7AB8A> 髦ソ驥御コ然DS<44>郁ソ樊磁豎<E7A381><E8B18E>? 笏?
|
||||
笏披楳笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏?
|
||||
竊?邇ッ蠅<EFBDAF>序驥丞<E9A9A5>謐「
|
||||
笏娯楳笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏?
|
||||
笏? 驛ィ鄂イ邇ッ蠅<EFBFBD>シ磯峺莉」遐∵隼蜉ィ<EFBFBD>? 笏?
|
||||
笏? 譛ャ蝨ー蠑蜿?| 莠醍ォッSaaS | 遘∵怏蛹夜Κ鄂?| 蜊墓惻迚? 笏?
|
||||
笏披楳笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏笏?
|
||||
```
|
||||
|
||||
---
|
||||
@@ -93,27 +93,27 @@
|
||||
|
||||
### 讓。蝮玲サ隗<EFBDBB>
|
||||
|
||||
| 模块 | 路径 | 优先级 | 说明 |
|
||||
| 讓。蝮<EFBFBD> | 霍ッ蠕<EFBDAF> | 莨伜<E88EA8>郤?| 隸エ譏<EFBDB4> |
|
||||
|------|------|--------|------|
|
||||
| **存储服务** | `common/storage/` | P0 | 文件上传下载(本地/OSS) |
|
||||
| **数据库连接池** | `config/database.ts` | P0 | Prisma连接池配置 |
|
||||
| **日志系统** | `common/logging/` | P0 | 标准化日志输出 |
|
||||
| **蟄伜お譛榊苅** | `common/storage/` | P0 | 譁<EFBFBD>サカ荳贋シ<EFBFBD>荳玖スス<EFBFBD>域悽蝨?OSS<EFBFBD>?|
|
||||
| **謨ー謐ョ蠎楢ソ樊磁豎<EFBFBD>** | `config/database.ts` | P0 | Prisma霑樊磁豎<EFBFBD>驟咲ス?|
|
||||
| **譌・蠢礼ウサ扈<EFBFBD>** | `common/logging/` | P0 | 譬<EFBFBD>㊥蛹匁律蠢苓セ灘<EFBFBD>?|
|
||||
| **邇ッ蠅<EFBDAF><E8A085>鄂ョ** | `config/env.ts` | P0 | 邇ッ蠅<EFBDAF>序驥冗ョ。逅<EFBDA1> |
|
||||
| **异步任务** | `common/jobs/` | P0 | 长时间任务异步处理 |
|
||||
| **缓存服务** | `common/cache/` | P1 | 分布式缓存 |
|
||||
| **健康检查** | `common/health/` | P1 | SAE健康检查端点 |
|
||||
| **蠑よュ・莉サ蜉。** | `common/jobs/` | P0 | 髟ソ譌カ髣エ莉サ蜉。蠑よュ・螟<EFBFBD><EFBFBD>?|
|
||||
| **郛灘ュ俶恪蜉。** | `common/cache/` | P1 | 蛻<EFBFBD>ク<EFBFBD>シ冗シ灘ュ?|
|
||||
| **蛛・蠎キ譽譟?* | `common/health/` | P1 | SAE蛛・蠎キ譽譟・遶ッ轤?|
|
||||
| **逶第而謖<E8808C><E8AC96><EFBFBD>** | `common/monitoring/` | P1 | 蜈ウ髞ョ謖<EFBDAE><E8AC96><EFBFBD>尅謗ァ |
|
||||
|
||||
---
|
||||
|
||||
## <20>盗 隸ヲ扈<EFBDA6>ョセ隶。
|
||||
|
||||
### 1. 存储服务(Storage Service)
|
||||
### 1. 蟄伜お譛榊苅<EFBFBD><EFBFBD>torage Service<EFBFBD>?
|
||||
|
||||
#### 隶セ隶。逶ョ譬<EFBDAE>
|
||||
- ✅ 支持本地开发(LocalAdapter)
|
||||
- ✅ 支持云端部署(OSSAdapter)
|
||||
- ✅ 业务代码零改动切换
|
||||
- 笨?謾ッ謖∵悽蝨ー蠑蜿托シ<E68998>ocalAdapter<EFBFBD>?
|
||||
- 笨?謾ッ謖∽コ醍ォッ驛ィ鄂イ<E98482><EFBDB2>SSAdapter<EFBFBD>?
|
||||
- 笨?荳壼苅莉」遐<EFBDA3>峺謾ケ蜉ィ蛻<EFBDA8><E89BBB>?
|
||||
|
||||
#### 逶ョ蠖慕サ捺桷
|
||||
```
|
||||
@@ -121,7 +121,7 @@ backend/src/common/storage/
|
||||
笏懌楳笏 StorageAdapter.ts # 謗・蜿」螳壻ケ<E5A3BB>
|
||||
笏懌楳笏 LocalAdapter.ts # 譛ャ蝨ー螳樒鴫
|
||||
笏懌楳笏 OSSAdapter.ts # OSS螳樒鴫
|
||||
├── StorageFactory.ts # 工厂类
|
||||
笏懌楳笏 StorageFactory.ts # 蟾・蜴らア?
|
||||
笏披楳笏 index.ts # 扈滉ク蟇シ蜃コ
|
||||
```
|
||||
|
||||
@@ -138,7 +138,7 @@ export interface StorageAdapter {
|
||||
|
||||
#### 邇ッ蠅<EFBDAF><E8A085>謐「
|
||||
```bash
|
||||
# 本地开发
|
||||
# 譛ャ蝨ー蠑蜿?
|
||||
STORAGE_TYPE=local
|
||||
|
||||
# 逕滉コァ邇ッ蠅<EFBDAF>
|
||||
@@ -151,28 +151,28 @@ OSS_BUCKET=aiclinical-prod
|
||||
```typescript
|
||||
import { storage } from '@/common/storage'
|
||||
|
||||
// 使用(不关心本地还是OSS)
|
||||
// 菴ソ逕ィ<EFBFBD>井ク榊<EFBFBD>蠢<EFBFBD>悽蝨ー霑俶弍OSS<EFBFBD>?
|
||||
const url = await storage.upload('literature/123.pdf', buffer)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### 2. 数据库连接池(Database Connection Pool)
|
||||
### 2. 謨ー謐ョ蠎楢ソ樊磁豎<EFBFBD><EFBFBD><EFBFBD>atabase Connection Pool<EFBFBD>?
|
||||
|
||||
#### 隶セ隶。逶ョ譬<EFBDAE>
|
||||
- ✅ 防止Serverless扩容导致连接数超限
|
||||
- ✅ 优雅关闭连接
|
||||
- ✅ 连接数监控
|
||||
- 笨?髦イ豁「Serverless謇ゥ螳ケ蟇シ閾エ霑樊磁謨ー雜<EFBFBD><EFBFBD>?
|
||||
- 笨?莨倬寉蜈ウ髣ュ霑樊磁
|
||||
- 笨?霑樊磁謨ー逶第<E980B6>?
|
||||
|
||||
#### 譁<>サカ菴咲スョ
|
||||
```
|
||||
backend/src/config/database.ts
|
||||
```
|
||||
|
||||
#### 连接池配置
|
||||
#### 霑樊磁豎<EFBFBD>驟咲ス?
|
||||
```typescript
|
||||
// 计算公式:每实例连接数 = RDS最大连接数 / SAE最大实例数
|
||||
// 示例:400连接 / 20实例 = 20连接/实例
|
||||
// 隶。邂怜<EFBFBD>蠑擾シ壽ッ丞ョ樔セ玖ソ樊磁謨?= RDS譛螟ァ霑樊磁謨ー / SAE譛螟ァ螳樔セ区焚
|
||||
// 遉コ萓具シ?00霑樊磁 / 20螳樔セ<EFBFBD> = 20霑樊磁/螳樔セ<E6A894>
|
||||
|
||||
import { PrismaClient } from '@prisma/client'
|
||||
|
||||
@@ -201,12 +201,12 @@ DATABASE_URL=postgresql://...
|
||||
|
||||
---
|
||||
|
||||
### 3. 日志系统(Logging)
|
||||
### 3. 譌・蠢礼ウサ扈滂シ<EFBFBD>ogging<EFBFBD>?
|
||||
|
||||
#### 隶セ隶。逶ョ譬<EFBDAE>
|
||||
- ✅ 云原生:只输出到stdout(不写本地文件)
|
||||
- ✅ JSON格式(便于阿里云SLS解析)
|
||||
- ✅ 统一的日志格式
|
||||
- 笨?莠大次逕滂シ壼宵霎灘<E99C8E>蛻ーstdout<75>井ク榊<EFBDB8>譛ャ蝨ー譁<EFBDB0>サカ<EFBDBB><EFBDB6>
|
||||
- 笨?JSON譬シ蠑擾シ井セソ莠朱仭驥御コ全LS隗」譫撰シ?
|
||||
- 笨?扈滉ク逧<C280>律蠢玲<E8A0A2>シ蠑?
|
||||
|
||||
#### 逶ョ蠖慕サ捺桷
|
||||
```
|
||||
@@ -234,7 +234,7 @@ export const logger = winston.createLogger({
|
||||
},
|
||||
transports: [
|
||||
new winston.transports.Console({
|
||||
format: winston.format.json() // ⭐ JSON格式
|
||||
format: winston.format.json() // 箝?JSON譬シ蠑<EFBFBD>
|
||||
})
|
||||
]
|
||||
})
|
||||
@@ -250,13 +250,13 @@ logger.error('LLM API failed', { error: err.message })
|
||||
|
||||
---
|
||||
|
||||
### 4. 环境配置(Environment Config)
|
||||
### 4. 邇ッ蠅<EFBFBD><EFBFBD>鄂ョ<EFBFBD><EFBFBD>nvironment Config<EFBFBD>?
|
||||
|
||||
#### 隶セ隶。逶ョ譬<EFBDAE>
|
||||
- ✅ 统一的配置管理
|
||||
- ✅ 本地开发:.env文件
|
||||
- ✅ 生产环境:SAE环境变量
|
||||
- ✅ 启动时验证必需配置
|
||||
- 笨?扈滉ク逧<C280><E980A7>鄂ョ邂。逅?
|
||||
- 笨?譛ャ蝨ー蠑蜿托シ<E68998>.env譁<76>サカ
|
||||
- 笨?逕滉コァ邇ッ蠅<EFBDAF>シ售AE邇ッ蠅<EFBDAF>序驥<E5BA8F>
|
||||
- 笨?蜷ッ蜉ィ譌カ鬪瑚ッ∝ソ<E2889D>怙驟咲スョ
|
||||
|
||||
#### 譁<>サカ菴咲スョ
|
||||
```
|
||||
@@ -268,7 +268,7 @@ backend/src/config/env.ts
|
||||
// backend/src/config/env.ts
|
||||
import { config } from 'dotenv'
|
||||
|
||||
// 只在本地开发加载 .env 文件
|
||||
// 蜿ェ蝨ィ譛ャ蝨ー蠑蜿大刈霓?.env 譁<EFBFBD>サカ
|
||||
if (process.env.NODE_ENV !== 'production') {
|
||||
config()
|
||||
}
|
||||
@@ -278,7 +278,7 @@ export const env = {
|
||||
NODE_ENV: process.env.NODE_ENV || 'development',
|
||||
PORT: Number(process.env.PORT) || 3001,
|
||||
|
||||
// 数据库配置
|
||||
// 謨ー謐ョ蠎馴<EFBFBD>鄂?
|
||||
DATABASE_URL: process.env.DATABASE_URL!,
|
||||
DB_MAX_CONNECTIONS: Number(process.env.DB_MAX_CONNECTIONS) || 400,
|
||||
MAX_INSTANCES: Number(process.env.MAX_INSTANCES) || 20,
|
||||
@@ -296,11 +296,11 @@ export const env = {
|
||||
DEEPSEEK_API_KEY: process.env.DEEPSEEK_API_KEY,
|
||||
QWEN_API_KEY: process.env.QWEN_API_KEY,
|
||||
|
||||
// 功能开关
|
||||
// 蜉溯<EFBFBD>蠑蜈?
|
||||
ENABLED_MODULES: process.env.ENABLED_MODULES?.split(',') || [],
|
||||
}
|
||||
|
||||
// 启动时验证
|
||||
// 蜷ッ蜉ィ譌カ鬪瑚ッ?
|
||||
export function validateEnv() {
|
||||
const required = ['DATABASE_URL']
|
||||
for (const key of required) {
|
||||
@@ -313,20 +313,20 @@ export function validateEnv() {
|
||||
|
||||
---
|
||||
|
||||
### 5. 异步任务(Async Jobs)
|
||||
### 5. 蠑よュ・莉サ蜉。<EFBFBD><EFBFBD>sync Jobs<EFBFBD>?
|
||||
|
||||
#### 隶セ隶。逶ョ譬<EFBDAE>
|
||||
- ✅ 长时间任务(>10秒)异步处理
|
||||
- ✅ 避免Serverless超时(30秒)
|
||||
- ✅ 支持进度查询
|
||||
- 笨?髟ソ譌カ髣エ莉サ蜉。<E89C89><EFBDA1>>10遘抵シ牙シよュ・螟<EFBDA5>炊
|
||||
- 笨?驕ソ蜈拘erverless雜<EFBFBD>慮<EFBFBD>?0遘抵シ<E68AB5>
|
||||
- 笨?謾ッ謖∬ソ帛コヲ譟・隸「
|
||||
|
||||
#### 逶ョ蠖慕サ捺桷
|
||||
```
|
||||
backend/src/common/jobs/
|
||||
笏懌楳笏 JobQueue.ts # 莉サ蜉。髦溷<E9ABA6>謗・蜿」
|
||||
├── MemoryQueue.ts # 本地开发(内存队列)
|
||||
├── DatabaseQueue.ts # 生产环境(数据库队列)
|
||||
├── JobProcessor.ts # 任务处理器
|
||||
笏懌楳笏 MemoryQueue.ts # 譛ャ蝨ー蠑蜿托シ亥<EFBFBD>蟄倬弌蛻暦シ?
|
||||
笏懌楳笏 DatabaseQueue.ts # 逕滉コァ邇ッ蠅<EFBFBD>シ域焚謐ョ蠎馴弌蛻暦シ?
|
||||
笏懌楳笏 JobProcessor.ts # 莉サ蜉。螟<EFBFBD>炊蝎?
|
||||
笏披楳笏 index.ts
|
||||
```
|
||||
|
||||
@@ -353,7 +353,7 @@ export interface JobQueue {
|
||||
}
|
||||
```
|
||||
|
||||
#### 业务模块使用(ASL模块示例)
|
||||
#### 荳壼苅讓。蝮嶺スソ逕ィ<EFBFBD><EFBFBD>SL讓。蝮礼、コ萓具シ?
|
||||
```typescript
|
||||
import { jobQueue } from '@/common/jobs'
|
||||
|
||||
@@ -364,7 +364,7 @@ app.post('/screening/start', async (req, res) => {
|
||||
literatureIds: req.body.literatureIds
|
||||
})
|
||||
|
||||
res.send({ jobId: job.id }) // ⭐ 立即返回,不等待完成
|
||||
res.send({ jobId: job.id }) // 箝?遶句叉霑泌屓<E6B38C>御ク咲ュ牙セ<E78999>ョ梧<EFBDAE>
|
||||
})
|
||||
|
||||
// 2. 譟・隸「霑帛コヲ
|
||||
@@ -390,12 +390,12 @@ jobQueue.process('asl:screening', async (job) => {
|
||||
|
||||
---
|
||||
|
||||
### 6. 缓存服务(Cache Service)
|
||||
### 6. 郛灘ュ俶恪蜉。<EFBFBD><EFBFBD>ache Service<EFBFBD>?
|
||||
|
||||
#### 隶セ隶。逶ョ譬<EFBDAE>
|
||||
- ✅ 支持本地开发(MemoryCacheAdapter)
|
||||
- ✅ 支持生产环境(RedisCacheAdapter)
|
||||
- ✅ 多实例共享缓存
|
||||
- 笨?謾ッ謖∵悽蝨ー蠑蜿托シ<E68998>emoryCacheAdapter<EFBFBD>?
|
||||
- 笨?謾ッ謖∫函莠ァ邇ッ蠅<EFBDAF>シ<EFBFBD>edisCacheAdapter<EFBFBD>?
|
||||
- 笨?螟壼ョ樔セ句<EFBDBE>莠ォ郛灘ュ?
|
||||
|
||||
#### 逶ョ蠖慕サ捺桷
|
||||
```
|
||||
@@ -403,7 +403,7 @@ backend/src/common/cache/
|
||||
笏懌楳笏 CacheAdapter.ts # 謗・蜿」螳壻ケ<E5A3BB>
|
||||
笏懌楳笏 MemoryCacheAdapter.ts # 譛ャ蝨ー螳樒鴫
|
||||
笏懌楳笏 RedisCacheAdapter.ts # Redis螳樒鴫
|
||||
├── CacheFactory.ts # 工厂类
|
||||
笏懌楳笏 CacheFactory.ts # 蟾・蜴らア?
|
||||
笏披楳笏 index.ts
|
||||
```
|
||||
|
||||
@@ -419,7 +419,7 @@ export interface CacheAdapter {
|
||||
|
||||
#### 邇ッ蠅<EFBDAF><E8A085>謐「
|
||||
```bash
|
||||
# 本地开发
|
||||
# 譛ャ蝨ー蠑蜿?
|
||||
CACHE_TYPE=memory
|
||||
|
||||
# 逕滉コァ邇ッ蠅<EFBDAF>
|
||||
@@ -429,12 +429,12 @@ REDIS_HOST=r-***.redis.aliyuncs.com
|
||||
|
||||
---
|
||||
|
||||
### 7. 健康检查(Health Check)
|
||||
### 7. 蛛・蠎キ譽譟・<EFBFBD><EFBFBD>ealth Check<EFBFBD>?
|
||||
|
||||
#### 隶セ隶。逶ョ譬<EFBDAE>
|
||||
- ✅ SAE存活检查(/health/liveness)
|
||||
- ✅ SAE就绪检查(/health/readiness)
|
||||
- ✅ 检查依赖服务(数据库)
|
||||
- 笨?SAE蟄俶エサ譽譟・<EFBFBD><EFBFBD>/health/liveness<EFBFBD>?
|
||||
- 笨?SAE蟆ア扈ェ譽譟・<EFBFBD><EFBFBD>/health/readiness<EFBFBD>?
|
||||
- 笨?譽譟・萓晁オ匁恪蜉。<E89C89>域焚謐ョ蠎難シ<E99BA3>
|
||||
|
||||
#### 逶ョ蠖慕サ捺桷
|
||||
```
|
||||
@@ -449,12 +449,12 @@ import { FastifyInstance } from 'fastify'
|
||||
import { prisma } from '@/config/database'
|
||||
|
||||
export async function registerHealthRoutes(app: FastifyInstance) {
|
||||
// 存活检查
|
||||
// 蟄俶エサ譽譟?
|
||||
app.get('/health/liveness', async () => {
|
||||
return { status: 'ok', timestamp: Date.now() }
|
||||
})
|
||||
|
||||
// 就绪检查
|
||||
// 蟆ア扈ェ譽譟?
|
||||
app.get('/health/readiness', async () => {
|
||||
try {
|
||||
await prisma.$queryRaw`SELECT 1`
|
||||
@@ -474,11 +474,11 @@ export async function registerHealthRoutes(app: FastifyInstance) {
|
||||
|
||||
---
|
||||
|
||||
### 8. 监控指标(Monitoring)
|
||||
### 8. 逶第而謖<EFBFBD><EFBFBD><EFBFBD>シ<EFBFBD>onitoring<EFBFBD>?
|
||||
|
||||
#### 隶セ隶。逶ョ譬<EFBDAE>
|
||||
- ✅ 数据库连接数监控
|
||||
- ✅ 关键指标告警
|
||||
- 笨?謨ー謐ョ蠎楢ソ樊磁謨ー逶第而
|
||||
- 笨?蜈ウ髞ョ謖<EFBDAE><E8AC96><EFBFBD>相隴ヲ
|
||||
|
||||
#### 逶ョ蠖慕サ捺桷
|
||||
```
|
||||
@@ -523,162 +523,162 @@ export class Metrics {
|
||||
|
||||
### 諤サ菴捺慮髣エ隗<EFBDB4><E99A97>
|
||||
|
||||
**预计总耗时:2.5天(20小时)**
|
||||
**鬚<EFBFBD>ョ。諤サ閠玲慮<EFBFBD>?.5螟ゥ<EFBFBD><EFBFBD>20蟆乗慮<EFBFBD>?*
|
||||
|
||||
```
|
||||
Day 1: 核心基础设施(P0模块) 8小时
|
||||
Day 2: 辅助基础设施(P1模块)+ 测试 8小时
|
||||
Day 1: 譬ク蠢<EFBFBD>渕遑隶セ譁ス<EFBFBD><EFBFBD>0讓。蝮暦シ? 8蟆乗慮
|
||||
Day 2: 霎<EFBFBD>勧蝓コ遑隶セ譁ス<EFBFBD><EFBFBD>1讓。蝮暦シ? 豬玖ッ<E78E96> 8蟆乗慮
|
||||
Day 3: 譁<>。」譖エ譁ー 4蟆乗慮
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### Day 1:核心基础设施(P0模块)
|
||||
### Day 1<EFBFBD>壽<EFBFBD>ク蠢<EFBFBD>渕遑隶セ譁ス<EFBFBD><EFBFBD>0讓。蝮暦シ?
|
||||
|
||||
#### 上午(4小时)
|
||||
#### 荳雁壕<EFBFBD>?蟆乗慮<E4B997>?
|
||||
|
||||
**Task 1.1:存储服务(2小时)**
|
||||
**Task 1.1<EFBFBD>壼ュ伜お譛榊苅<EFBFBD><EFBFBD>2蟆乗慮<EFBFBD>?*
|
||||
- [ ] 蛻帛サコ `backend/src/common/storage/` 逶ョ蠖<EFBDAE>
|
||||
- [ ] 螳樒鴫 `StorageAdapter.ts`<EFBFBD>域磁蜿」螳壻ケ会シ<EFBFBD>
|
||||
- [ ] 螳樒鴫 `LocalAdapter.ts`<EFBFBD>域悽蝨ー螳樒鴫<EFBFBD><EFBFBD>
|
||||
- [ ] 螳樒鴫 `OSSAdapter.ts`<EFBFBD><EFBFBD>SS螳樒鴫<EFBFBD>碁「<EFBFBD>蕗<EFBFBD><EFBFBD>
|
||||
- [ ] 实现 `StorageFactory.ts`(工厂类)
|
||||
- [ ] 创建 `index.ts`(统一导出)
|
||||
- [ ] 螳樒鴫 `StorageFactory.ts`<EFBFBD>亥キ・蜴らアサ<EFBFBD>?
|
||||
- [ ] 蛻帛サコ `index.ts`<EFBFBD>育サ滉ク蟇シ蜃コ<EFBFBD>?
|
||||
|
||||
**验收标准**:
|
||||
- ✅ LocalAdapter 可正常 upload/download
|
||||
- ✅ 通过环境变量 `STORAGE_TYPE` 切换
|
||||
- ✅ 单元测试通过
|
||||
**鬪梧噺譬<EFBFBD>㊥**<EFBFBD>?
|
||||
- 笨?LocalAdapter 蜿ッ豁」蟶?upload/download
|
||||
- 笨?騾夊ソ<E5A48A>識蠅<E8AD98>序驥<E5BA8F> `STORAGE_TYPE` 蛻<EFBFBD>困
|
||||
- 笨?蜊募<E89C8A>豬玖ッ暮夊ソ<E5A48A>
|
||||
|
||||
**Task 1.2:数据库连接池(2小时)**
|
||||
**Task 1.2<EFBFBD>壽焚謐ョ蠎楢ソ樊磁豎<EFBFBD><EFBFBD><EFBFBD>2蟆乗慮<EFBFBD>?*
|
||||
- [ ] 譖エ譁ー `backend/src/config/database.ts`
|
||||
- [ ] 添加连接池配置
|
||||
- [ ] 豺サ蜉<EFBFBD>霑樊磁豎<EFBFBD>驟咲ス?
|
||||
- [ ] 豺サ蜉<EFBDBB>莨倬寉蜈ウ髣ュ騾サ霎<EFBDBB>
|
||||
- [ ] 豺サ蜉<EFBDBB>邇ッ蠅<EFBDAF>序驥城ェ瑚ッ<E7919A>
|
||||
|
||||
**验收标准**:
|
||||
- ✅ Prisma Client 正确配置连接池
|
||||
- ✅ 启动时验证环境变量
|
||||
- ✅ SIGTERM信号优雅关闭
|
||||
**鬪梧噺譬<EFBFBD>㊥**<EFBFBD>?
|
||||
- 笨?Prisma Client 豁」遑ョ驟咲スョ霑樊磁豎?
|
||||
- 笨?蜷ッ蜉ィ譌カ鬪瑚ッ∫識蠅<E8AD98>序驥?
|
||||
- 笨?SIGTERM菫。蜿キ莨倬寉蜈ウ髣ュ
|
||||
|
||||
---
|
||||
|
||||
#### 下午(4小时)
|
||||
#### 荳句壕<EFBFBD>?蟆乗慮<E4B997>?
|
||||
|
||||
**Task 1.3:日志系统(2小时)**
|
||||
**Task 1.3<EFBFBD>壽律蠢礼ウサ扈滂シ<EFBFBD>2蟆乗慮<EFBFBD>?*
|
||||
- [ ] 蛻帛サコ `backend/src/common/logging/` 逶ョ蠖<EFBDAE>
|
||||
- [ ] 实现 `logger.ts`(winston配置)
|
||||
- [ ] 螳樒鴫 `logger.ts`<EFBFBD><EFBFBD>inston驟咲スョ<EFBFBD>?
|
||||
- [ ] 驟咲スョJSON譬シ蠑剰セ灘<EFBDBE>
|
||||
- [ ] 蛻帛サコ `index.ts`<EFBFBD>亥ッシ蜃コ<EFBFBD><EFBFBD>
|
||||
|
||||
**验收标准**:
|
||||
- ✅ 日志输出到stdout(JSON格式)
|
||||
- ✅ 包含timestamp、service、env等元信息
|
||||
- ✅ 支持不同日志级别(info/warn/error)
|
||||
**鬪梧噺譬<EFBFBD>㊥**<EFBFBD>?
|
||||
- 笨?譌・蠢苓セ灘<EFBDBE>蛻ーstdout<EFBFBD><EFBFBD>SON譬シ蠑擾シ?
|
||||
- 笨?蛹<>性timestamp縲《ervice縲‘nv遲牙<EFBFBD>菫。諱ッ
|
||||
- 笨?謾ッ謖∽ク榊酔譌・蠢礼コァ蛻ォ<E89BBB><EFBDAB>nfo/warn/error<EFBFBD>?
|
||||
|
||||
**Task 1.4:异步任务(2小时)**
|
||||
**Task 1.4<EFBFBD>壼シよュ・莉サ蜉。<EFBFBD><EFBFBD>2蟆乗慮<EFBFBD>?*
|
||||
- [ ] 蛻帛サコ `backend/src/common/jobs/` 逶ョ蠖<EFBDAE>
|
||||
- [ ] 螳樒鴫 `JobQueue.ts`<EFBFBD>域磁蜿」螳壻ケ会シ<EFBFBD>
|
||||
- [ ] 螳樒鴫 `MemoryQueue.ts`<EFBFBD>亥<EFBFBD>蟄倬弌蛻暦シ<EFBFBD>
|
||||
- [ ] 螳樒鴫 `DatabaseQueue.ts`<EFBFBD>域焚謐ョ蠎馴弌蛻暦シ碁「<EFBFBD>蕗<EFBFBD><EFBFBD>
|
||||
- [ ] 实现 `JobProcessor.ts`(任务处理器)
|
||||
- [ ] 螳樒鴫 `JobProcessor.ts`<EFBFBD>井ササ蜉。螟<EFBFBD>炊蝎ィ<EFBFBD>?
|
||||
|
||||
**验收标准**:
|
||||
- ✅ 可创建任务并立即返回
|
||||
- ✅ 可查询任务进度
|
||||
- ✅ 可在后台处理任务
|
||||
**鬪梧噺譬<EFBFBD>㊥**<EFBFBD>?
|
||||
- 笨?蜿ッ蛻帛サコ莉サ蜉。蟷カ遶句叉霑泌屓
|
||||
- 笨?蜿ッ譟・隸「莉サ蜉。霑帛コ?
|
||||
- 笨?蜿ッ蝨ィ蜷主床螟<E5BA8A>炊莉サ蜉。
|
||||
|
||||
---
|
||||
|
||||
### Day 2:辅助基础设施(P1模块)+ 测试
|
||||
### Day 2<EFBFBD>夊セ<EFBFBD>勧蝓コ遑隶セ譁ス<EFBFBD><EFBFBD>1讓。蝮暦シ? 豬玖ッ<E78E96>
|
||||
|
||||
#### 上午(4小时)
|
||||
#### 荳雁壕<EFBFBD>?蟆乗慮<E4B997>?
|
||||
|
||||
**Task 2.1:环境配置(1小时)**
|
||||
**Task 2.1<EFBFBD>夂識蠅<EFBFBD><EFBFBD>鄂ョ<EFBFBD><EFBFBD>1蟆乗慮<EFBFBD>?*
|
||||
- [ ] 譖エ譁ー `backend/src/config/env.ts`
|
||||
- [ ] 扈滉ク邇ッ蠅<EFBDAF>序驥丞ョ壻ケ<E5A3BB>
|
||||
- [ ] 豺サ蜉<EFBDBB>蜷ッ蜉ィ鬪瑚ッ∝<EFBDAF>謨ー
|
||||
|
||||
**验收标准**:
|
||||
- ✅ 所有环境变量集中管理
|
||||
- ✅ 启动时自动验证必需配置
|
||||
- ✅ 支持本地开发和生产环境
|
||||
**鬪梧噺譬<EFBFBD>㊥**<EFBFBD>?
|
||||
- 笨?謇譛臥識蠅<E8AD98>序驥城寔荳ュ邂。逅?
|
||||
- 笨?蜷ッ蜉ィ譌カ閾ェ蜉ィ鬪瑚ッ∝ソ<E2889D>怙驟咲スョ
|
||||
- 笨?謾ッ謖∵悽蝨ー蠑蜿大柱逕滉コァ邇ッ蠅<EFBDAF>
|
||||
|
||||
**Task 2.2:缓存服务(2小时)**
|
||||
**Task 2.2<EFBFBD>夂シ灘ュ俶恪蜉。<EFBFBD><EFBFBD>2蟆乗慮<EFBFBD>?*
|
||||
- [ ] 蛻帛サコ `backend/src/common/cache/` 逶ョ蠖<EFBDAE>
|
||||
- [ ] 螳樒鴫 `CacheAdapter.ts`<EFBFBD>域磁蜿」螳壻ケ会シ<EFBFBD>
|
||||
- [ ] 螳樒鴫 `MemoryCacheAdapter.ts`<EFBFBD>亥<EFBFBD>蟄伜ョ樒鴫<EFBFBD><EFBFBD>
|
||||
- [ ] 螳樒鴫 `RedisCacheAdapter.ts`<EFBFBD><EFBFBD>edis螳樒鴫<EFBFBD>碁「<EFBFBD>蕗<EFBFBD><EFBFBD>
|
||||
- [ ] 实现 `CacheFactory.ts`(工厂类)
|
||||
- [ ] 螳樒鴫 `CacheFactory.ts`<EFBFBD>亥キ・蜴らアサ<EFBFBD>?
|
||||
|
||||
**验收标准**:
|
||||
- ✅ MemoryCacheAdapter 可正常 get/set
|
||||
- ✅ 通过环境变量切换
|
||||
- ✅ 支持TTL过期
|
||||
**鬪梧噺譬<EFBFBD>㊥**<EFBFBD>?
|
||||
- 笨?MemoryCacheAdapter 蜿ッ豁」蟶?get/set
|
||||
- 笨?騾夊ソ<E5A48A>識蠅<E8AD98>序驥丞<E9A9A5>謐「
|
||||
- 笨?謾ッ謖ゝTL霑<4C>悄
|
||||
|
||||
**Task 2.3:健康检查(1小时)**
|
||||
**Task 2.3<EFBFBD>壼▼蠎キ譽譟・<EFBFBD><EFBFBD>1蟆乗慮<EFBFBD>?*
|
||||
- [ ] 蛻帛サコ `backend/src/common/health/` 逶ョ蠖<EFBDAE>
|
||||
- [ ] 螳樒鴫 `healthCheck.ts`
|
||||
- [ ] 豕ィ蜀<EFBDA8> `/health/liveness` 遶ッ轤ケ
|
||||
- [ ] 豕ィ蜀<EFBDA8> `/health/readiness` 遶ッ轤ケ
|
||||
|
||||
**验收标准**:
|
||||
- ✅ liveness端点正常返回
|
||||
- ✅ readiness端点检查数据库连接
|
||||
- ✅ 错误时返回正确状态
|
||||
**鬪梧噺譬<EFBFBD>㊥**<EFBFBD>?
|
||||
- 笨?liveness遶ッ轤ケ豁」蟶ク霑泌屓
|
||||
- 笨?readiness遶ッ轤ケ譽譟・謨ー謐ョ蠎楢ソ樊磁
|
||||
- 笨?髞呵ッッ譌カ霑泌屓豁」遑ョ迥カ諤?
|
||||
|
||||
---
|
||||
|
||||
#### 下午(4小时)
|
||||
#### 荳句壕<EFBFBD>?蟆乗慮<E4B997>?
|
||||
|
||||
**Task 2.4:监控指标(1小时)**
|
||||
**Task 2.4<EFBFBD>夂尅謗ァ謖<EFBFBD><EFBFBD><EFBFBD>シ<EFBFBD>1蟆乗慮<EFBFBD>?*
|
||||
- [ ] 蛻帛サコ `backend/src/common/monitoring/` 逶ョ蠖<EFBDAE>
|
||||
- [ ] 螳樒鴫 `metrics.ts`
|
||||
- [ ] 螳樒鴫謨ー謐ョ蠎楢ソ樊磁謨ー逶第而
|
||||
- [ ] 螳樒鴫蜻願ュヲ騾サ霎<EFBDBB>
|
||||
|
||||
**验收标准**:
|
||||
- ✅ 可查询数据库连接数
|
||||
- ✅ 连接数超过80%时告警
|
||||
- ✅ 日志输出正确
|
||||
**鬪梧噺譬<EFBFBD>㊥**<EFBFBD>?
|
||||
- 笨?蜿ッ譟・隸「謨ー謐ョ蠎楢ソ樊磁謨?
|
||||
- 笨?霑樊磁謨ー雜<EFBDB0>ソ?0%譌カ蜻願ュ?
|
||||
- 笨?譌・蠢苓セ灘<EFBDBE>豁」遑ョ
|
||||
|
||||
**Task 2.5:集成测试(3小时)**
|
||||
**Task 2.5<EFBFBD>夐寔謌先オ玖ッ包シ<EFBFBD>3蟆乗慮<EFBFBD>?*
|
||||
- [ ] 郛門<E9839B>蟄伜お譛榊苅蜊募<E89C8A>豬玖ッ<E78E96>
|
||||
- [ ] 郛門<E9839B>譌・蠢礼ウサ扈溷黒蜈<E9BB92>オ玖ッ<E78E96>
|
||||
- [ ] 郛門<E9839B>郛灘ュ俶恪蜉。蜊募<E89C8A>豬玖ッ<E78E96>
|
||||
- [ ] 郛門<E9839B>蠑よュ・莉サ蜉。蜊募<E89C8A>豬玖ッ<E78E96>
|
||||
- [ ] 髮<><E9ABAE>豬玖ッ包シ域園譛画ィ。蝮暦シ<E69AA6>
|
||||
|
||||
**验收标准**:
|
||||
- ✅ 所有单元测试通过
|
||||
- ✅ 集成测试通过
|
||||
- ✅ 代码覆盖率 > 80%
|
||||
**鬪梧噺譬<EFBFBD>㊥**<EFBFBD>?
|
||||
- 笨?謇譛牙黒蜈<E9BB92>オ玖ッ暮夊ソ<E5A48A>
|
||||
- 笨?髮<><E9ABAE>豬玖ッ暮夊ソ<E5A48A>
|
||||
- 笨?莉」遐∬ヲ<E288AC>尠邇?> 80%
|
||||
|
||||
---
|
||||
|
||||
### Day 3:文档更新
|
||||
### Day 3<EFBFBD>壽枚譯」譖エ譁?
|
||||
|
||||
#### 上午(4小时)
|
||||
#### 荳雁壕<EFBFBD>?蟆乗慮<E4B997>?
|
||||
|
||||
**Task 3.1:更新架构文档(2小时)**
|
||||
**Task 3.1<EFBFBD>壽峩譁ー譫カ譫<EFBFBD>枚譯」<EFBFBD><EFBFBD>2蟆乗慮<EFBFBD>?*
|
||||
- [ ] 譖エ譁ー `01-邉サ扈滓楔譫<E6A594><E8ADAB>螻りョセ隶。.md`
|
||||
- 在"平台基础层"章节中详细化各服务
|
||||
- 添加适配器模式说明
|
||||
- 蝨?蟷ウ蜿ー蝓コ遑螻?遶<>闃ゆクュ隸ヲ扈<EFBDA6>喧蜷<E596A7>恪蜉?
|
||||
- 豺サ蜉<EFBFBD>騾る<EFBFBD>蝎ィ讓。蠑剰ッエ譏?
|
||||
- [ ] 譖エ譁ー `蜑榊錘遶ッ讓。蝮怜喧譫カ譫<EFBDB6>ョセ隶。-V2.md`
|
||||
- 譖エ譁ー backend 逶ョ蠖慕サ捺桷
|
||||
- 体现新增的 common/ 子模块
|
||||
- 菴鍋鴫譁ー蠅樒<EFBFBD>?common/ 蟄先ィ。蝮?
|
||||
|
||||
**Task 3.2:更新实施文档(1小时)**
|
||||
- [ ] 更新 `09-架构实施/03-云原生部署架构指南.md`
|
||||
**Task 3.2<EFBFBD>壽峩譁ー螳樊命譁<EFBFBD>。」<EFBFBD><EFBFBD>1蟆乗慮<EFBFBD>?*
|
||||
- [ ] 譖エ譁ー `09-譫カ譫<EFBFBD>ョ樊命/03-莠大次逕滄Κ鄂イ譫カ譫<EFBDB6>欠蜊?md`
|
||||
- 豺サ蜉<EFBDBB>蟷ウ蜿ー蝓コ遑隶セ譁ス遶<EFBDBD>闃<EFBFBD>
|
||||
- 譖エ譁ー邇ッ蠅<EFBDAF>序驥城<E9A9A5>鄂ョ遉コ萓<EFBDBA>
|
||||
|
||||
**Task 3.3:简化ASL文档(1小时)**
|
||||
- [ ] 更新 `03-业务模块/ASL-AI智能文献/04-开发计划/02-标题摘要初筛开发计划.md`
|
||||
- 移除"创建存储抽象层"任务
|
||||
**Task 3.3<EFBFBD>夂ョ蛹泡SL譁<EFBFBD>。」<EFBFBD>?蟆乗慮<E4B997>?*
|
||||
- [ ] 譖エ譁ー `03-荳壼苅讓。蝮<EFBFBD>/ASL-AI譎コ閭ス譁<EFBDBD>鍵/04-蠑蜿題ョ。蛻?02-譬<>「俶遭隕∝<E99A95>遲帛シ蜿題ョ。蛻?md`
|
||||
- 遘サ髯、"蛻帛サコ蟄伜お謚ス雎。螻?莉サ蜉。
|
||||
- 豺サ蜉<EFBDBB>"蜑咲スョ譚。莉カ<E88E89>壼ケウ蜿ー蟾イ謠蝉セ<E89D89>"
|
||||
- [ ] 更新 `03-业务模块/ASL-AI智能文献/04-开发计划/03-任务分解.md`
|
||||
- 移除存储抽象层任务
|
||||
- [ ] 譖エ譁ー `03-荳壼苅讓。蝮<EFBFBD>/ASL-AI譎コ閭ス譁<EFBDBD>鍵/04-蠑蜿題ョ。蛻?03-莉サ蜉。蛻<EFBDA1>ァ」.md`
|
||||
- 遘サ髯、蟄伜お謚ス雎。螻ゆササ蜉?
|
||||
- 譖エ譁ー鬪梧噺譬<E599BA>㊥
|
||||
|
||||
---
|
||||
@@ -687,75 +687,75 @@ Day 3: 文档更新 4小时
|
||||
|
||||
### 諤サ菴馴ェ梧噺譬<E599BA>㊥
|
||||
|
||||
- [ ] **功能完整性**:所有P0模块实现完成
|
||||
- [ ] **蜉溯<EFBFBD>螳梧紛諤?*<2A>壽園譛臼0讓。蝮怜ョ樒鴫螳梧<E89EB3>
|
||||
- [ ] **豬玖ッ戊ヲ<E6888A>尠**<EFBFBD>壼黒蜈<EFBFBD>オ玖ッ戊ヲ<EFBFBD>尠邇<EFBFBD> > 80%
|
||||
- [ ] **文档完整性**:所有架构文档更新完成
|
||||
- [ ] **多环境支持**:本地开发和云端部署验证通过
|
||||
- [ ] **业务模块验证**:ASL模块可正常使用平台能力
|
||||
- [ ] **譁<EFBFBD>。」螳梧紛諤?*<2A>壽園譛画楔譫<E6A594>枚譯」譖エ譁ー螳梧<E89EB3>?
|
||||
- [ ] **螟夂識蠅<EFBFBD>髪謖?*<2A>壽悽蝨ー蠑蜿大柱莠醍ォッ驛ィ鄂イ鬪瑚ッ<E7919A>夊ソ<E5A48A>
|
||||
- [ ] **荳壼苅讓。蝮鈴ェ瑚ッ<EFBFBD>**<EFBFBD>哂SL讓。蝮怜庄豁」蟶ク菴ソ逕ィ蟷ウ蜿ー閭ス蜉?
|
||||
|
||||
### 邇ッ蠅<EFBDAF>ェ瑚ッ∫洸髦オ
|
||||
|
||||
| 验证项 | 本地开发 | 云端SaaS | 私有化部署 | 单机版 |
|
||||
| 鬪瑚ッ<EFBFBD>。?| 譛ャ蝨ー蠑蜿?| 莠醍ォッSaaS | 遘∵怏蛹夜Κ鄂?| 蜊墓惻迚?|
|
||||
|-------|---------|---------|-----------|--------|
|
||||
| 存储服务 | ✅ LocalAdapter | ✅ OSSAdapter | ✅ LocalAdapter | ✅ LocalAdapter |
|
||||
| 数据库连接 | ✅ 本地PostgreSQL | ✅ 阿里云RDS | ✅ 内网PostgreSQL | ✅ SQLite |
|
||||
| 缓存服务 | ✅ Memory | ✅ Redis | ✅ 内网Redis | ✅ Memory |
|
||||
| 日志系统 | ✅ Console | ✅ 阿里云SLS | ✅ Console | ✅ Console |
|
||||
| 异步任务 | ✅ MemoryQueue | ✅ DatabaseQueue | ✅ DatabaseQueue | ✅ MemoryQueue |
|
||||
| 健康检查 | ✅ OK | ✅ OK | ✅ OK | N/A |
|
||||
| 蟄伜お譛榊苅 | 笨?LocalAdapter | 笨?OSSAdapter | 笨?LocalAdapter | 笨?LocalAdapter |
|
||||
| 謨ー謐ョ蠎楢ソ樊<EFBFBD>?| 笨?譛ャ蝨ーPostgreSQL | 笨?髦ソ驥御コ然DS | 笨?蜀<>ス善ostgreSQL | 笨?SQLite |
|
||||
| 郛灘ュ俶恪蜉。 | 笨?Memory | 笨?Redis | 笨?蜀<>ス然edis | 笨?Memory |
|
||||
| 譌・蠢礼ウサ扈<EFBFBD> | 笨?Console | 笨?髦ソ驥御コ全LS | 笨?Console | 笨?Console |
|
||||
| 蠑よュ・莉サ蜉。 | 笨?MemoryQueue | 笨?DatabaseQueue | 笨?DatabaseQueue | 笨?MemoryQueue |
|
||||
| 蛛・蠎キ譽譟?| 笨?OK | 笨?OK | 笨?OK | N/A |
|
||||
|
||||
---
|
||||
|
||||
## <20>噫 螳樊命蜷守噪謾カ逶<EFBDB6>
|
||||
|
||||
### 1. 开发效率提升
|
||||
### 1. 蠑蜿第譜邇<EFBFBD>署蜊?
|
||||
|
||||
| 謖<><E8AC96><EFBFBD> | 謾ケ騾<EFBDB9>蜑<EFBFBD> | 謾ケ騾<EFBDB9>蜷<EFBFBD> | 謠仙合 |
|
||||
|------|-------|-------|------|
|
||||
| 业务模块开发时间 | 需要实现存储等基础设施 | 直接使用平台能力 | **节省30%** |
|
||||
| 新模块上手时间 | 需要学习基础设施 | 只需关注业务逻辑 | **节省50%** |
|
||||
| 代码复用率 | 每个模块重复实现 | 所有模块复用 | **提升80%** |
|
||||
| 荳壼苅讓。蝮怜シ蜿第慮髣?| 髴隕∝ョ樒鴫蟄伜お遲牙渕遑隶セ譁ス | 逶エ謗・菴ソ逕ィ蟷ウ蜿ー閭ス蜉<EFBDBD> | **闃ら怐30%** |
|
||||
| 譁ー讓。蝮嶺ク頑焔譌カ髣?| 髴隕∝ュヲ荵<EFBDA6>蝓コ遑隶セ譁ス | 蜿ェ髴蜈ウ豕ィ荳壼苅騾サ霎<EFBDBB> | **闃ら怐50%** |
|
||||
| 莉」遐∝、咲畑邇?| 豈丈クェ讓。蝮鈴㍾螟榊ョ樒鴫 | 謇譛画ィ。蝮怜、咲<EFBDA4>?| **謠仙合80%** |
|
||||
|
||||
### 2. 部署灵活性
|
||||
### 2. 驛ィ鄂イ轣オ豢サ諤?
|
||||
|
||||
| 部署形态 | 支持情况 | 切换成本 |
|
||||
| 驛ィ鄂イ蠖「諤?| 謾ッ謖∵ュ蜀オ | 蛻<>困謌先悽 |
|
||||
|---------|---------|---------|
|
||||
| 云端SaaS | ✅ 完全支持 | 修改环境变量 |
|
||||
| 私有化部署 | ✅ 完全支持 | 修改环境变量 |
|
||||
| 单机版 | ✅ 完全支持 | 修改环境变量 |
|
||||
| 混合部署 | ✅ 完全支持 | 按模块配置 |
|
||||
| 莠醍ォッSaaS | 笨?螳悟<E89EB3>謾ッ謖<EFBDAF> | 菫ョ謾ケ邇ッ蠅<EFBDAF>序驥<E5BA8F> |
|
||||
| 遘∵怏蛹夜Κ鄂?| 笨?螳悟<E89EB3>謾ッ謖<EFBDAF> | 菫ョ謾ケ邇ッ蠅<EFBDAF>序驥<E5BA8F> |
|
||||
| 蜊墓惻迚?| 笨?螳悟<E89EB3>謾ッ謖<EFBDAF> | 菫ョ謾ケ邇ッ蠅<EFBDAF>序驥<E5BA8F> |
|
||||
| 豺キ蜷磯Κ鄂イ | 笨?螳悟<E89EB3>謾ッ謖<EFBDAF> | 謖画ィ。蝮鈴<E89DAE>鄂?|
|
||||
|
||||
### 3. 商业模式灵活性
|
||||
### 3. 蝠<EFBFBD>ク壽ィ。蠑冗<EFBFBD>豢サ諤?
|
||||
|
||||
| 蝠<>ク壽ィ。蠑<EFBDA1> | 謾ッ謖∵ュ蜀オ |
|
||||
|---------|---------|
|
||||
| 专业版(部分模块) | ✅ Feature Flag控制 |
|
||||
| 高级版(组合模块) | ✅ Feature Flag控制 |
|
||||
| 旗舰版(全部模块) | ✅ Feature Flag控制 |
|
||||
| 单模块售卖 | ✅ Docker镜像分层 |
|
||||
| 荳謎ク夂沿<EFBFBD>磯Κ蛻<EFBFBD>ィ。蝮暦シ?| 笨?Feature Flag謗ァ蛻カ |
|
||||
| 鬮倡コァ迚茨シ育サ<EFBFBD>粋讓。蝮暦シ?| 笨?Feature Flag謗ァ蛻カ |
|
||||
| 譌苓芦迚茨シ亥<EFBFBD>驛ィ讓。蝮暦シ?| 笨?Feature Flag謗ァ蛻カ |
|
||||
| 蜊墓ィ。蝮怜醗蜊?| 笨?Docker髟懷ワ蛻<E383AF>ア<EFBFBD> |
|
||||
|
||||
### 4. 謚譛ッ蛟コ蜉。髯堺ス<E5A0BA>
|
||||
|
||||
- ✅ 避免重复代码
|
||||
- ✅ 统一的架构风格
|
||||
- ✅ 易于维护和升级
|
||||
- ✅ 新人快速上手
|
||||
- 笨?驕ソ蜈埼㍾螟堺サ」遐<EFBDA3>
|
||||
- 笨?扈滉ク逧<C280>楔譫<E6A594>」取<EFBDA3>?
|
||||
- 笨?譏謎コ守サエ謚、蜥悟合郤?
|
||||
- 笨?譁ー莠コ蠢ォ騾滉ク頑<EFBDB8>?
|
||||
|
||||
---
|
||||
|
||||
## <20>答 逶ク蜈ウ譁<EFBDB3>。」
|
||||
|
||||
- [09-总体需求文档(PRD).md](../00-系统总体设计/09-总体需求文档(PRD).md) - 业务需求来源
|
||||
- [09-諤サ菴馴怙豎よ枚譯?PRD).md](../00-邉サ扈滓サ菴楢ョセ隶。/09-諤サ菴馴怙豎よ枚譯?PRD).md) - 荳壼苅髴豎よ擂貅?
|
||||
- [01-邉サ扈滓楔譫<E6A594><E8ADAB>螻りョセ隶。.md](../00-邉サ扈滓サ菴楢ョセ隶。/01-邉サ扈滓楔譫<E6A594><E8ADAB>螻りョセ隶。.md) - 諤サ菴捺楔譫<E6A594>ョセ隶。
|
||||
- [蜑榊錘遶ッ讓。蝮怜喧譫カ譫<EFBFBD>ョセ隶。-V2.md](../00-邉サ扈滓サ菴楢ョセ隶。/蜑榊錘遶ッ讓。蝮怜喧譫カ譫<EFBDB6>ョセ隶。-V2.md) - 莉」遐∫サ<E288AB>サ<EFBFBD>楔譫<E6A594>
|
||||
- [03-云原生部署架构指南.md](./03-云原生部署架构指南.md) - 云原生部署详细指南
|
||||
- [08-云原生开发规范.md](../04-开发规范/08-云原生开发规范.md) - 开发规范
|
||||
- [03-莠大次逕滄Κ鄂イ譫カ譫<EFBFBD>欠蜊?md](./03-莠大次逕滄Κ鄂イ譫カ譫<EFBDB6>欠蜊?md) - 莠大次逕滄Κ鄂イ隸ヲ扈<EFBDA6>欠蜊?
|
||||
- [08-莠大次逕溷シ蜿題ァ<EFBFBD><EFBFBD>?md](../04-蠑蜿題ァ<E9A18C><EFBDA7>?08-莠大次逕溷シ蜿題ァ<E9A18C><EFBDA7>?md) - 蠑蜿題ァ<E9A18C><EFBDA7>?
|
||||
|
||||
---
|
||||
|
||||
## <20>統 蜿俶峩隶ー蠖<EFBDB0>
|
||||
|
||||
| 日期 | 版本 | 变更内容 | 变更人 |
|
||||
| 譌・譛<EFBFBD> | 迚域悽 | 蜿俶峩蜀<E5B3A9>ョケ | 蜿俶峩莠?|
|
||||
|------|------|---------|--------|
|
||||
| 2025-11-16 | V1.0 | 蛻晏ァ狗沿譛ャ<E8AD9B>悟ョ壻ケ牙ケウ蜿ー蝓コ遑隶セ譁ス隗<EFBDBD><E99A97> | 譫カ譫<EFBDB6>屬髦<E5B1AC> |
|
||||
|
||||
|
||||
Reference in New Issue
Block a user