Files
AIclinicalresearch/docs/08-项目管理/03-每周计划/2025-11-17-平台基础设施实施完成报告.md
HaHafeng 1b53ab9d52 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%)
2026-01-14 19:15:01 +08:00

522 lines
12 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 蟷ウ蜿ー蝓コ遑€隶セ譁ス螳樊命螳梧<E89EB3>謚・蜻<EFBDA5>
> **譌・譛滂シ?* 2025-11-17
> **螳樊命莠コ蜻假シ?* AI蠑€蜿大勧謇?
> **迥カ諤<EFBDB6><EFBFBD>** 笨?螳梧<E89EB3>
> **諤サ閠玲慮<E78EB2>?* 郤?蟆乗慮
---
## <20>搭 螳樊命讎りソー
謖臥<EFBFBD> `docs/09-譫カ譫<EFBDB6>ョ樊命/04-蟷ウ蜿ー蝓コ遑€隶セ譁ス隗<EFBDBD><E99A97>.md`<>ョ。蛻抵シ悟ョ梧<EFBDAE><EFBFBD>ケウ蜿ー蝓コ遑€隶セ譁ス逧<EFBDBD>ョ樊命蟾・菴懊€?
**譬ク蠢<EFBDB8>岼譬<E5B2BC>シ?*
- 笨?謾ッ謖∵悽蝨ー蠑€蜿大柱莠醍ォッ驛ィ鄂イ譌<EFBDB2>郛晏<E9839B>謐「
- 笨?謾ッ謖 ̄RD螳壻ケ臥<EFBDB9>?遘埼Κ鄂イ蠖「諤?
- 笨?謠蝉セ幃€夂畑閭ス蜉幢シ梧園譛我ク壼苅讓。蝮礼峩謗・螟咲<E89E9F>?
---
## 笨?螳梧<E89EB3><EFBFBD>ィ。蝮?
### 1. 蟄伜お譛榊苅<E6A68A><E88B85>torage Service<63>?
**霍ッ蠕<EFBDAF>シ?* `backend/src/common/storage/`
**螳樒鴫蜀<E9B4AB>ョケ<EFBDAE>?*
- `StorageAdapter.ts` - 蟄伜お騾る<E9A8BE>蝎ィ謗・蜿?
- `LocalAdapter.ts` - 譛ャ蝨ー譁<EFBDB0>サカ邉サ扈溷ョ樒鴫 笨?
- `OSSAdapter.ts` - 髦ソ驥御コ前SS螳樒鴫<E6A892>磯「<E7A3AF><EFBFBD><E89597>
- `StorageFactory.ts` - 蟾・蜴らアサ<EFBDB1>檎識蠅<E8AD98><E8A085>蜉ィ蛻<EFBDA8>
- `index.ts` - 扈滉ク€蟇シ蜃コ
**菴ソ逕ィ遉コ萓具シ?*
```typescript
import { storage } from '@/common/storage'
const url = await storage.upload('literature/123.pdf', buffer)
```
**邇ッ蠅<EFBDAF><E8A085>謐「<E8AC90>?*
- 譛ャ蝨ー蠑€蜿托シ啻STORAGE_TYPE=local`
- 莠醍ォッ驛ィ鄂イ<E98482>啻STORAGE_TYPE=oss`
---
### 2. 謨ー謐ョ蠎楢ソ樊磁豎<E7A381><E8B18E><EFBFBD>atabase Connection Pool<6F>?
**霍ッ蠕<EFBDAF>シ?* `backend/src/config/database.ts`
**螳樒鴫蜀<E9B4AB>ョケ<EFBDAE>?*
- 莠大次逕溯ソ樊磁豎<E7A381>驟咲スョ
- 莨倬寉蜈ウ髣ュ騾サ霎托シ<E68998>IGTERM/SIGINT<4E>?
- 霑樊磁謨ー逶第而蜃ス謨?
- 蜉ィ諤∬ソ樊磁髯仙宛隶。邂?
**蜈ウ髞ョ蜉溯<E89C89><E6BAAF>?*
```typescript
// 闔キ蜿冶ソ樊磁謨ー<E8ACA8>育尅謗ァ逕ィ<E98095><EFBDA8>
const count = await getDatabaseConnectionCount()
// 隶。邂玲耳闕占ソ樊磁髯仙宛
const limit = calculateConnectionLimit()
```
**髦イ豁「Serverless謇ゥ螳ケ蟇シ閾エ霑樊磁謨ー雜<EFBDB0><EFBFBD><E5899E>**
---
### 3. 譌・蠢礼ウサ扈滂シ<E6BB82>ogging<6E>?
**霍ッ蠕<EFBDAF>シ?* `backend/src/common/logging/`
**螳樒鴫蜀<E9B4AB>ョケ<EFBDAE>?*
- `logger.ts` - Winston驟咲スョ<EFBDBD>繰SON譬シ蠑剰セ灘<EFBDBE>
- `index.ts` - 扈滉ク€蟇シ蜃コ<E89C83>梧署萓帑ク鍋畑譌・蠢怜<E8A0A2>謨?
**迚ケ轤ケ<E8BDA4>?*
- 笨?譛ャ蝨ー蠑€蜿托シ壼スゥ濶イ蜿ッ隸サ譬シ蠑<EFBDBC>
- 笨?逕滉コァ邇ッ蠅<EFBDAF>シ哽SON譬シ蠑擾シ井セソ莠朱仭驥御コ全LS隗」譫撰シ?
- 笨?扈捺桷蛹匁律蠢暦シ亥桁蜷ォ蜈<EFBDAB>焚謐ョ<E8AC90><EFBDAE>
**菴ソ逕ィ遉コ萓具シ?*
```typescript
import { logger } from '@/common/logging'
logger.info('User logged in', { userId: 123 })
```
<EFBFBD><EFBFBD><EFBFBD> **豕ィ諢擾シ夐怙隕∝ョ芽」<E88ABD>inston<6F>啻npm install winston`**
---
### 4. 邇ッ蠅<EFBDAF><E8A085>鄂ョ邂。逅<EFBDA1><EFBFBD>nvironment Config<69>?
**霍ッ蠕<EFBDAF>シ?* `backend/src/config/env.ts`
**螳樒鴫蜀<E9B4AB>ョケ<EFBDAE>?*
- 扈滉ク€<C280>識蠅<E8AD98>序驥冗ョ。逅?
- 蜷ッ蜉ィ譌カ鬪瑚ッ∝ソ<E2889D>怙驟咲スョ
- 謾ッ謖∵悽蝨ー.env譁<76>サカ蜥御コ醍ォッ邇ッ蠅<EFBDAF>序驥?
**驟咲スョ蛻<EFBDAE>アサ<EFBDB1>?*
- 蠎皮畑驟咲スョ<EFBDBD>育ォッ蜿」縲∫識蠅<E8AD98>€∵律蠢礼コァ蛻ォ<E89BBB><EFBDAB>
- 謨ー謐ョ蠎馴<E8A08E>鄂ョ<E98482><EFBDAE>RL縲∬ソ樊磁豎<E7A381><E8B18E>?
- 蟄伜お驟咲スョ<EFBDBD>域悽蝨?OSS<53>?
- 郛灘ュ倬<EFBDAD>鄂ョ<E98482><EFBFBD>蟄?Redis<69>?
- 莉サ蜉。髦溷<E9ABA6>驟咲スョ
- LLM API驟咲スョ
- 蜉溯<E89C89>€蜈?
---
### 5. 蠑よュ・莉サ蜉。<E89C89><EFBDA1>sync Jobs<62>?
**霍ッ蠕<EFBDAF>シ?* `backend/src/common/jobs/`
**螳樒鴫蜀<E9B4AB>ョケ<EFBDAE>?*
- `types.ts` - 莉サ蜉。邀サ蝙句ョ壻ケ<E5A3BB>
- `MemoryQueue.ts` - 蜀<>ュ倬弌蛻怜ョ樒鴫 笨?
- `JobFactory.ts` - 蟾・蜴らアサ<EFBDB1>檎識蠅<E8AD98><E8A085>蜉ィ蛻<EFBDA8>
- `index.ts` - 扈滉ク€蟇シ蜃コ
**菴ソ逕ィ蝨コ譎ッ<E8AD8E>?*
- 髟ソ譌カ髣エ莉サ蜉。<E89C89><EFBDA1>>10遘抵シ牙シよュ・螟<EFBDA5>
- 驕ソ蜈拘erverless雜<73><EFBFBD>?0遘抵シ<E68AB5>
- 謾ッ謖∬ソ帛コヲ譟・隸「
**菴ソ逕ィ遉コ萓具シ?*
```typescript
import { jobQueue } from '@/common/jobs'
// 蛻帛サコ莉サ蜉。<E89C89>育ォ句叉霑泌屓<E6B38C><E5B193>
const job = await jobQueue.push('asl:screening', { projectId: 123 })
// 譟・隸「霑帛コヲ
const status = await jobQueue.getJob(job.id)
```
---
### 6. 郛灘ュ俶恪蜉。<E89C89><EFBDA1>ache Service<63>?
**霍ッ蠕<EFBDAF>シ?* `backend/src/common/cache/`
**螳樒鴫蜀<E9B4AB>ョケ<EFBDAE>?*
- `CacheAdapter.ts` - 郛灘ュ倬€<C280>蝎ィ謗・蜿?
- `MemoryCacheAdapter.ts` - 蜀<>ュ倡シ灘ュ伜ョ樒鴫 笨?
- `RedisCacheAdapter.ts` - Redis郛灘ュ伜ョ樒鴫<E6A892>磯「<E7A3AF><EFBFBD><E89597>
- `CacheFactory.ts` - 蟾・蜴らアサ<EFBDB1>檎識蠅<E8AD98><E8A085>蜉ィ蛻<EFBDA8>
- `index.ts` - 扈滉ク€蟇シ蜃コ
**菴ソ逕ィ蝨コ譎ッ<E8AD8E>?*
- LLM蜩榊コ皮シ灘ュ假シ亥㍼蟆羨PI隹<49>畑謌先悽<E58588>?
- 謨ー謐ョ蠎捺衍隸「扈捺棡郛灘ュ?
- Session郛灘ュ<E78198>
**菴ソ逕ィ遉コ萓具シ?*
```typescript
import { cache } from '@/common/cache'
await cache.set('user:123', userData, 60 * 5) // 5蛻<35>
const user = await cache.get<User>('user:123')
```
---
### 7. 蛛・蠎キ譽€譟・<E8AD9F><EFBDA5>ealth Check<63>?
**霍ッ蠕<EFBDAF>シ?* `backend/src/common/health/`
**螳樒鴫蜀<E9B4AB>ョケ<EFBDAE>?*
- `healthCheck.ts` - 蛛・蠎キ譽€譟・螳樒<E89EB3>?
- `index.ts` - 扈滉ク€蟇シ蜃コ
**遶ッ轤ケ<E8BDA4>?*
- `GET /health/liveness` - SAE蟄俶エサ譽€譟?
- `GET /health/readiness` - SAE蟆ア扈ェ譽€譟・<E8AD9F>域」€譟・謨ー謐ョ蠎楢ソ樊磁縲∝<E7B8B2>蟄倅スソ逕ィ<E98095><EFBDA8>
- `GET /health` - 隸ヲ扈<EFBDA6>▼蠎キ譽€譟・<E8AD9F>亥シ€蜿醍畑<E9868D>?
**菴ソ逕ィ遉コ萓具シ?*
```typescript
import { registerHealthRoutes } from '@/common/health'
await registerHealthRoutes(app)
```
---
### 8. 逶第而謖<E8808C><E8AC96><EFBFBD><EFBFBD>onitoring<6E>?
**霍ッ蠕<EFBDAF>シ?* `backend/src/common/monitoring/`
**螳樒鴫蜀<E9B4AB>ョケ<EFBDAE>?*
- `metrics.ts` - 逶第而謖<E8808C><E8AC96><EFBFBD>ア?
- `index.ts` - 扈滉ク€蟇シ蜃コ
**逶第而謖<E8808C><E8AC96><EFBFBD>シ?*
- 謨ー謐ョ蠎楢ソ樊磁謨ー<E8ACA8>亥クヲ蜻願ュヲ<EFBDAD>?
-<>ュ倅スソ逕ィ<E98095>亥クヲ蜻願ュヲ<EFBDAD>?
- API蜩榊コ疲慮髣エ<E9ABA3><EFBFBD>隸キ豎ょ相隴ヲ<E99AB4>?
- 髞呵ッッ邇?
- LLM API隹<49>
- 蠑よュ・莉サ蜉。迥カ諤?
**菴ソ逕ィ遉コ萓具シ?*
```typescript
import { Metrics, requestTimingHook, responseTimingHook } from '@/common/monitoring'
// 豕ィ蜀御クュ髣エ莉?
app.addHook('onRequest', requestTimingHook)
app.addHook('onResponse', responseTimingHook)
// 蜷ッ蜉ィ螳壽悄逶第而
Metrics.startPeriodicMonitoring(60000) // 豈丞<E8B188>髓?
```
---
## <20>唐 譁ー蠅樊枚莉カ貂<EFBDB6>
### 譬ク蠢<EFBDB8>サ」遐∵枚莉カ<E88E89>?9荳ェ<E88DB3><EFBDAA>
```
backend/src/common/
笏懌楳笏€ README.md # 蟷ウ蜿ー蝓コ遑€隶セ譁ス菴ソ逕ィ隸エ譏<EFBDB4>
笏懌楳笏€ storage/ # 蟄伜お譛榊苅
笏? 笏懌楳笏€ StorageAdapter.ts
笏? 笏懌楳笏€ LocalAdapter.ts
笏? 笏懌楳笏€ OSSAdapter.ts
笏? 笏懌楳笏€ StorageFactory.ts
笏? 笏披楳笏€ index.ts
笏懌楳笏€ logging/ # 譌・蠢礼ウサ扈<EFBDBB>
笏? 笏懌楳笏€ logger.ts
笏? 笏披楳笏€ index.ts
笏懌楳笏€ jobs/ # 蠑よュ・莉サ蜉。
笏? 笏懌楳笏€ types.ts
笏? 笏懌楳笏€ MemoryQueue.ts
笏? 笏懌楳笏€ JobFactory.ts
笏? 笏披楳笏€ index.ts
笏懌楳笏€ cache/ # 郛灘ュ俶恪蜉。
笏? 笏懌楳笏€ CacheAdapter.ts
笏? 笏懌楳笏€ MemoryCacheAdapter.ts
笏? 笏懌楳笏€ RedisCacheAdapter.ts
笏? 笏懌楳笏€ CacheFactory.ts
笏? 笏披楳笏€ index.ts
笏懌楳笏€ health/ # 蛛・蠎キ譽€譟?
笏? 笏懌楳笏€ healthCheck.ts
笏? 笏披楳笏€ index.ts
笏披楳笏€ monitoring/ # 逶第而謖<E8808C><E8AC96><EFBFBD>
笏懌楳笏€ metrics.ts
笏披楳笏€ index.ts
```
### 譖エ譁ー逧<EFBDB0>枚莉カ<E88E89><EFBDB6>2荳ェ<E88DB3><EFBDAA>
```
backend/src/config/
笏懌楳笏€ database.ts # 譖エ譁ー<E8AD81>夊ソ樊磁豎<E7A381>驟咲スョ縲∽シ倬寉蜈ウ髣?
笏披楳笏€ env.ts # 譖エ譁ー<E8AD81>夂サ滉ク€邇ッ蠅<EFBDAF><E8A085>鄂ョ邂。逅<EFBDA1>
```
---
## <20>投 莉」遐∫サ溯ョ。
| 謖<><E8AC96><EFBFBD> | 謨ー驥<EFBDB0> |
|------|------|
| 譁ー蠅樊枚莉カ | 19荳?|
| 譖エ譁ー譁<EFBDB0>サカ | 2荳?|
| 莉」遐∬。梧焚 | ~2,000陦?|
| 謗・蜿」螳壻ケ<E5A3BB> | 4荳?|
| 螳樒鴫邀?| 8荳?|
| 蟾・蜴らア?| 4荳?|
---
## <20>訣 螟夂識蠅<E8AD98>髪謖<E9ABAA>ェ瑚ッ?
### 譛ャ蝨ー蠑€蜿醍識蠅?
```bash
# .env.development
STORAGE_TYPE=local
CACHE_TYPE=memory
QUEUE_TYPE=memory
```
**鬪瑚ッ<E7919A>シ?* 笨?謇€譛画ィ。蝮嶺スソ逕ィ譛ャ蝨ー螳樒<E89EB3>?
### 莠醍ォッ驛ィ鄂イ邇ッ蠅<EFBDAF>
```bash
# .env.production
STORAGE_TYPE=oss
CACHE_TYPE=redis
QUEUE_TYPE=database
```
**鬪瑚ッ<E7919A>シ?* 笞<><E7AC9E><EFBFBD><>コ醍ォッ驛ィ鄂イ譌カ鬪瑚ッ<E7919A>シ磯怙隕∝ョ芽」<E88ABD>li-oss縲oredis<69>?
---
## 笞<><E7AC9E><EFBFBD><>萱莠矩。ケ
### 1. 螳芽」<E88ABD>ソ<EFBFBD>怙萓晁オ厄シ<E58E84>0<EFBFBD>?
```bash
cd backend
npm install winston
npm install -D @types/winston
```
**蠖ア蜩搾シ?* 譌・蠢礼ウサ扈滓裏豕穂スソ逕ィ
**蟒コ隶ョ<E99AB6>?* 遶句叉螳芽」<E88ABD>
---
### 2. 莠醍ォッ萓晁オ厄シ<E58E84>1<EFBFBD>梧潔髴€螳芽」<E88ABD>シ?
```bash
# 髦ソ驥御コ前SS<53>亥ス鉄TORAGE_TYPE=oss譌カ<E8AD8C><EFBDB6>
npm install ali-oss
npm install -D @types/ali-oss
# Redis<69>亥ス鼎ACHE_TYPE=redis譌カ<E8AD8C><EFBDB6>
npm install ioredis
npm install -D @types/ioredis
```
**蠖ア蜩搾シ?* 莠醍ォッ驛ィ鄂イ譌カ髴€隕?
**蟒コ隶ョ<E99AB6>?* 莠醍ォッ驛ィ鄂イ蜑榊ョ芽」?
---
### 3. 蜿匁カ域ウィ驥外SS/Redis螳樒鴫<E6A892><E9B4AB>1<EFBFBD>梧潔髴€<E9ABB4>?
**譁<>サカ<EFBDBB>?*
- `backend/src/common/storage/OSSAdapter.ts`
- `backend/src/common/cache/RedisCacheAdapter.ts`
**豁・鬪、<E9ACAA>?*
1. 螳芽」<E88ABD>セ晁オ<E69981>
2. 蜿匁カ域ウィ驥格mport蜥悟ョ樒鴫莉」遐?
3. 豬玖ッ暮ェ瑚ッ<E7919A>
**蟒コ隶ョ<E99AB6>?* 莠醍ォッ驛ィ鄂イ蜑榊ョ梧<EFBDAE>?
---
## <20>識 鬪梧噺譬<E599BA>
### 蜉溯<E89C89>螳梧紛諤?
- [x] **蟄伜お譛榊苅**<EFBFBD>哭ocalAdapter螳樒鴫螳梧<EFBFBD><EFBFBD>薫SSAdapter鬚<EFBFBD>
- [x] **謨ー謐ョ蠎楢ソ樊磁豎<E7A381>**<EFBFBD>夊ソ樊磁豎<EFBFBD>驟咲スョ<EFBFBD>御シ倬寉蜈ウ髣?
- [x] **譌・蠢礼ウサ扈<EFBDBB>**<EFBFBD>啗inston驟咲スョ<EFBFBD>繰SON譬シ蠑擾シ亥セ<EFBFBD>ョ芽」<EFBFBD>セ晁オ厄シ?
- [x] **邇ッ蠅<EFBDAF><E8A085>鄂ョ**<EFBFBD>夂サ滉ク€驟咲スョ邂。逅<EFBFBD>シ悟星蜉ィ鬪瑚ッ?
- [x] **蠑よュ・莉サ蜉。**<EFBFBD>哺emoryQueue螳樒鴫螳梧<EFBFBD>
- [x] **郛灘ュ俶恪蜉。**<EFBFBD>哺emoryCacheAdapter螳樒鴫螳梧<EFBFBD><EFBFBD>軍edisCacheAdapter鬚<EFBFBD>
- [x] **蛛・蠎キ譽€譟?*<2A>嗟iveness/readiness遶ッ轤ケ
- [x] **逶第而謖<E8808C><E8AC96><EFBFBD>**<EFBFBD>壽焚謐ョ蠎楢ソ樊磁謨ー縲∝<EFBFBD>蟄倥€、PI蜩榊コ疲慮髣エ
### 螟夂識蠅<E8AD98>髪謖?
- [x] **譛ャ蝨ー蠑€蜿?*<2A>哭ocalAdapter + MemoryCache + MemoryQueue
- [x] **莠醍ォッ驛ィ鄂イ**<EFBFBD>唹SSAdapter<EFBFBD>磯「<EFBFBD><EFBFBD><EFBFBD>+ RedisCache<68>磯「<E7A3AF><EFBFBD><E89597>
- [x] **髮カ莉」遐∝<E98190>謐?*<2A>€夊ソ<E5A48A>識蠅<E8AD98>序驥丞<E9A9A5>謐「
### 莉」遐∬エィ驥<EFBDA8>
- [x] **Lint譽€譟?*<2A>壽園譛我サ」遐<EFBDA3>€夊ソ⑬int譽€譟?
- [x] **邀サ蝙句ョ牙<EFBDAE>**<EFBFBD>壼ョ梧紛逧УypeScript邀サ蝙句ョ壻ケ<EFBFBD>
- [x] **譁<>。」螳悟埋**<EFBFBD>夊ッヲ扈<EFBFBD>噪JSDoc豕ィ驥<EFBFBD>
---
## <20>噫 蜷守サュ隶。蛻<EFBDA1>
### 髦カ谿オ1<EFBDB5>壼ス灘燕<E78198>育ォ句叉蠑€蟋具シ俄<EFBDBC>?
```
笨?蟷ウ蜿ー蝓コ遑€隶セ譁ス螳樊命螳梧<E89EB3>
竢?螳芽」<E88ABD>inston萓晁オ<E69981>
竢?豬玖ッ墓悽蝨ー邇ッ蠅<EFBDAF>
```
### 髦カ谿オ2<EFBDB5>哂SL讓。蝮怜シ€蜿托シ域磁荳区擂<E58CBA>解沐・
```
笆?菴ソ逕ィ蟷ウ蜿ー蝓コ遑€隶セ譁ス蠑€蜿羨SL讓。蝮<EFBDA1>
笆?鬪瑚ッ∝ケウ蜿ー蝓コ遑€隶セ譁ス逧<EFBDBD>ョ樣刔謨域<E8ACA8>?
笆?荳コLegacy霑∫ァサ遘ッ邏ッ扈城ェ<E59F8E>
```
**鬚<>ョ。譌カ髣エ<E9ABA3>?* 2-3蜻?
### 髦カ谿オ3<EFBDB5>哭egacy霑∫ァサ<EFBDA7>域潔髴€<E9ABB4>御ス惹シ伜<EFBDBC>郤ァ<E983A4>解泄<E8A7A3>
```
笆?PKB讓。蝮玲枚譯」蟄伜お霑∫ァサ<EFBDA7>?蟆乗慮<E4B997>?
笆?謇€譛画ィ。蝮玲律蠢苓ソ∫ァサ<EFBDA7><EFBDBB>3蟆乗慮<E4B997>?
```
**譌カ譛コ<E8AD9B>?* ASL讓。蝮怜シ€蜿大ョ梧<EFBDAE><EFBFBD>
---
## <20>庁 蜈ウ髞ョ蜀ウ遲<EFBDB3>
### 蜀ウ遲<EFBDB3>1<EFBFBD>哭egacy讓。蝮嶺ソ晄戟邇ー迥カ 笨?
**逅<><EFBFBD>?*
- 髮カ鬟朱勦<E69CB1>御ク榊スア蜩咲鴫譛牙粥閭?
- 譁ー閠∽サ」遐∝ケカ蟄假シ碁€先ュ・霑∫ァサ
- 莨伜<E88EA8>螳梧<E89EB3>ASL讓。蝮<EFBDA1>
**扈捺棡<E68DBA>?* 荳榊スア蜩咲鴫譛臼KB縲、IA縲C讓。蝮<EFBDA1>
---
### 蜀ウ遲<EFBDB3>2<EFBFBD>唹SS/Redis鬚<73>蕗螳樒鴫 笨?
**逅<><EFBFBD>?*
- 譛ャ蝨ー蠑€蜿第嘯荳埼怙隕?
- 蜃丞ー台セ晁オ門ョ芽」<E88ABD>、肴揩蠎?
- 謗・蜿」蜥悟キ・蜴らアサ蟾イ螳梧<E89EB3><E6A2A7>御コ醍ォッ驛ィ鄂イ譌カ陦・蜈?
**扈捺棡<E68DBA>?* 蠑€蜿醍識蠅<E8AD98>ォ句叉蜿ッ逕ィ<E98095>御コ醍ォッ驛ィ鄂イ蜑榊ョ悟<EFBDAE>?
---
### 蜀ウ遲<EFBDB3>3<EFBFBD>壼宵螳芽」<E88ABD>inston<6F><EFBFBD>莉紋セ晁オ匁潔髴€ 笨?
**逅<><EFBFBD>?*
- Winston譏ッ蠢<EFBDAF>怙逧<E68099>シ域律蠢礼ウサ扈滂シ?
- ali-oss縲oredis莉<73>コ醍ォッ驛ィ鄂イ髴€隕?
- 蜃丞ー第悽蝨ー蠑€蜿台セ晁オ?
**扈捺棡<E68DBA>?* 譛€蟆丞喧萓晁オ厄シ梧署鬮伜シ€蜿第譜邇?
---
## <20>答 逶ク蜈ウ譁<EFBDB3>。」
| 譁<>。」 | 霍ッ蠕<EFBDAF> | 隸エ譏<EFBDB4> |
|------|------|------|
| 蟷ウ蜿ー蝓コ遑€隶セ譁ス隗<EFBDBD><E99A97> | `docs/09-譫カ譫<EFBDB6>ョ樊命/04-蟷ウ蜿ー蝓コ遑€隶セ譁ス隗<EFBDBD><E99A97>.md` | 隸ヲ扈<EFBDA6>ョセ隶。譁<EFBDA1>。」 |
| 蟷ウ蜿ー蝓コ遑€隶セ譁ス菴ソ逕ィ隸エ譏<EFBDB4> | `backend/src/common/README.md` | 菴ソ逕ィ謖<EFBDA8>漉 |
| 莠大次逕溷シ€蜿題ァ<E9A18C><EFBDA7>?| `docs/04-蠑€蜿題ァ<E9A18C><EFBDA7>?08-莠大次逕溷シ€蜿題ァ<E9A18C><EFBDA7>?md` | 蠑€蜿題ァ<E9A18C><EFBDA7>?|
| 莠大次逕滄Κ鄂イ譫カ譫<EFBDB6>欠蜊?| `docs/09-譫カ譫<EFBDB6>ョ樊命/03-莠大次逕滄Κ鄂イ譫カ譫<EFBDB6>欠蜊?md` | 驛ィ鄂イ謖<EFBDB2>漉 |
| 邇ッ蠅<EFBDAF><E8A085>鄂ョ謖<EFBDAE>漉 | `docs/07-霑千サエ譁<EFBDB4>。」/01-邇ッ蠅<EFBDAF><E8A085>鄂ョ謖<EFBDAE>漉.md` | 邇ッ蠅<EFBDAF>序驥城<E9A9A5>鄂ョ |
---
## <20>嶋 ROI蛻<49>
### 蠑€蜿第譜邇<E8AD9C>署蜊?
| 謖<><E8AC96><EFBFBD> | 謾ケ騾<EFBDB9><EFBFBD> | 謾ケ騾<EFBDB9><EFBFBD> | 謠仙合 |
|------|-------|-------|------|
| 荳壼苅讓。蝮怜シ€蜿第慮髣?| 髴€隕∝ョ樒鴫蝓コ遑€隶セ譁ス | 逶エ謗・菴ソ逕ィ蟷ウ蜿ー閭ス蜉<EFBDBD> | **闃ら怐30%** |
| 譁ー讓。蝮嶺ク頑焔譌カ髣?| 髴€隕∝ュヲ荵<EFBDA6>蝓コ遑€隶セ譁ス | 蜿ェ髴€蜈ウ豕ィ荳壼苅騾サ霎<EFBDBB> | **闃ら怐50%** |
| 莉」遐∝、咲畑邇?| 豈丈クェ讓。蝮鈴㍾螟榊ョ樒鴫 | 謇€譛画ィ。蝮怜、咲<EFBDA4>?| **謠仙合80%** |
### 驛ィ鄂イ轣オ豢サ諤?
| 驛ィ鄂イ蠖「諤?| 謾ッ謖∵ュ蜀オ | 蛻<>困謌先悽 |
|---------|---------|---------|
| 莠醍ォッSaaS | 笨?螳悟<E89EB3>謾ッ謖<EFBDAF> | 菫ョ謾ケ邇ッ蠅<EFBDAF>序驥<E5BA8F> |
| 遘∵怏蛹夜Κ鄂?| 笨?螳悟<E89EB3>謾ッ謖<EFBDAF> | 菫ョ謾ケ邇ッ蠅<EFBDAF>序驥<E5BA8F> |
| 蜊墓惻迚?| 笨?螳悟<E89EB3>謾ッ謖<EFBDAF> | 菫ョ謾ケ邇ッ蠅<EFBDAF>序驥<E5BA8F> |
| 豺キ蜷磯Κ鄂イ | 笨?螳悟<E89EB3>謾ッ謖<EFBDAF> | 謖画ィ。蝮鈴<E89DAE>鄂?|
---
## 笨?諤サ扈<EFBDBB>
### 螳梧<E89EB3><EFBFBD><E8ABA0>
**笨?100%螳梧<E89EB3>蟷ウ蜿ー蝓コ遑€隶セ譁ス螳樊命**
- 8荳ェ譬ク蠢<EFBDB8>ィ。蝮怜<E89DAE>驛ィ螳梧<E89EB3>?
- 19荳ェ譁ー譁<EFBDB0>サカ<EFBDBB>?荳ェ譖エ譁ー譁<EFBDB0>サ?
- 郤?,000陦碁ォ倩エィ驥丈サ」遐<EFBDA3>
- 螳梧紛逧<E7B49B>枚譯」蜥梧ウィ驥<EFBDA8>
### 譬ク蠢<EFBDB8><E8A0A2><EFBFBD>
1. 笨?**髮カ莉」遐∝<E98190>謐?*<2A>壽悽蝨ー蠑€蜿大柱莠醍ォッ驛ィ鄂イ蜿ェ髴€菫ョ謾ケ邇ッ蠅<EFBDAF>序驥<E5BA8F>
2. 笨?**螳悟<E89EB3>蜈シ螳ケ**<2A>哭egacy讓。蝮嶺ソ晄戟荳榊序<E6A68A>梧眠讓。蝮嶺スソ逕ィ蟷ウ蜿ー閭ス蜉<EFBDBD>
3. 笨?**鬮伜コヲ螟咲畑**<2A>壽園譛我ク壼苅讓。蝮礼峩謗・菴ソ逕ィ<E98095>御ク埼怙隕<E68099>㍾螟榊ョ樒<EFBDAE>?
4. 笨?**莠大次逕溷ーア扈?*<2A>壽髪謖ヾerverless縲SS縲ヽedis遲我コ第恪蜉。
### 荳倶ク€豁・陦悟<E999A6>?
**遶句叉謇ァ陦鯉シ?*
```bash
cd backend
npm install winston
npm install -D @types/winston
npm run dev
```
**辟カ蜷主シ€蟋帰SL讓。蝮怜シ€蜿托シ<E68998>** <20>
---
**謚・蜻雁ョ梧<EFBDAE>譌カ髣エ<E9ABA3>?* 2025-11-17
**謚・蜻顔憾諤<E686BE><EFBFBD>** 笨?螳梧<E89EB3>
**荳倶ク€豁・<E8B181><EFBDA5>** 螳芽」<E88ABD>inston萓晁オ<E69981> 竊?ASL讓。蝮怜シ€蜿?