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%)
13 KiB
撟喳蝱<EFBFBD>箇<EFBFBD>霈暹鴌撉諹<EFBFBD><EFBFBD>亙<EFBFBD>
*<EFBFBD>交<EFBFBD>嚗? 2025-11-17
*撉諹<EFBFBD>蝐餃<EFBFBD>嚗? <20>蠘<EFBFBD>瘚贝<E7989A> + <20><><EFBFBD>瘚贝<E7989A>
*撉諹<EFBFBD><EFBFBD>臬<EFBFBD>嚗? <20>砍𧑐撘<F0A79190><E69298>𤑳㴓憓<E3B493><E68693>Windows嚗? 撉諹<EFBFBD><EFBFBD>嗆<EFBFBD><EFBFBD><EFBFBD> <20>?<3F>券<EFBFBD><E588B8>朞<EFBFBD>
<EFBFBD><EFBFBD> 撉諹<E69289><E8ABB9>餉<EFBFBD>
| 璅∪<EFBFBD> | <EFBFBD>嗆<EFBFBD>? | 瘚贝<EFBFBD><EFBFBD><EFBFBD>捆 | 蝏𤘪<EFBFBD> |
|---|---|---|---|
| 摮睃<EFBFBD><EFBFBD>滚𦛚 | <EFBFBD>?<3F>朞<EFBFBD> | 銝𠹺<EFBFBD>/銝贝蝸/<2F>𣳇膄/摮睃銁<E79D83>扳<EFBFBD><E689B3>? | 100% |
| <EFBFBD>亙<EFBFBD>蝟餌<EFBFBD> | <EFBFBD>?<3F>朞<EFBFBD> | Info/Warn/Error/Context<78>亙<EFBFBD> | 100% |
| 蝻枏<EFBFBD><EFBFBD>滚𦛚 | <EFBFBD>?<3F>朞<EFBFBD> | Set/Get/Has/Delete/<2F>寥<EFBFBD><E5AFA5>滢<EFBFBD> | 100% |
| 撘<EFBFBD>郊隞餃𦛚 | <EFBFBD>?<3F>朞<EFBFBD> | <EFBFBD>𥕦遣隞餃𦛚/<2F>亥砭<E4BAA5>嗆<EFBFBD>? | 100% |
| *<EFBFBD>亙熒璉<EFBFBD><EFBFBD>? | <EFBFBD>?<3F>朞<EFBFBD> | Liveness/Readiness/霂衣<E99C82>璉<EFBFBD><E79289>? | 100% |
| <EFBFBD>唳旿摨栞<EFBFBD><EFBFBD>交<EFBFBD> | <EFBFBD>?<3F>朞<EFBFBD> | 餈墧𦻖<EFBFBD>啁<EFBFBD><EFBFBD>?隡㗛<E99AA1><E3979B>喲𡡒 | 100% |
| <EFBFBD>臬<EFBFBD><EFBFBD>滨蔭 | <EFBFBD>?<3F>朞<EFBFBD> | <EFBFBD>滨蔭<EFBFBD>㰘蝸/撉諹<E69289> | 100% |
| <EFBFBD>烐綉<EFBFBD><EFBFBD><EFBFBD> | <EFBFBD>?<3F>朞<EFBFBD> | <EFBFBD>唳旿摨?<3F><><EFBFBD><EFBFBD>烐綉 | 100% |
<EFBFBD>颱<EFBFBD><EFBFBD>朞<EFBFBD><EFBFBD><EFBFBD><EFBFBD> 8/8 = 100% <20>?
<EFBFBD>妒 霂衣<E99C82>瘚贝<E7989A>蝏𤘪<E89D8F>
1. 摮睃<E691AE><E79D83>滚𦛚嚗𡿨ocalAdapter嚗争<E59A97>
*瘚贝<EFBFBD>API嚗? GET /test/platform
*瘚贝<EFBFBD>蝏𤘪<EFBFBD>嚗?
{
"status": "passed",
"upload": "http://localhost:3001/uploads/test/verification-1763423657877.txt",
"downloadSize": 51,
"contentMatch": true,
"exists": true
}
*撉諹<EFBFBD>憿寧𤌍嚗?
- <EFBFBD>?<3F><>辣銝𠹺<E98A9D>嚗𡁏<E59A97><F0A1818F>煺<EFBFBD>隡惩<E99AA1>
uploads/test/<20>桀<EFBFBD> - <EFBFBD>?<3F><>辣銝贝蝸嚗𡁏<E59A97><F0A1818F>煺<EFBFBD>頧踝<E9A0A7>憭批<E686AD> 51 bytes
- <EFBFBD>?<3F><>捆撉諹<E69289>嚗帋<E59A97>隡惩<E99AA1>銝贝蝸<E8B49D><E89DB8>捆摰<E68D86><E691B0>銝<EFBFBD><E98A9D>?
- <EFBFBD>?摮睃銁<E79D83>扳<EFBFBD><E689B3>伐<EFBFBD><E4BC90><EFBFBD>辣摮睃銁璉<E98A81>瘚𧢲迤撣?
- <EFBFBD>?<3F><>辣<EFBFBD>𣳇膄嚗𡁏<E59A97><F0A1818F><EFBFBD><EFBFBD><EFBFBD>?
*摰䂿緵<EFBFBD><EFBFBD>辣嚗?
backend/src/common/storage/LocalAdapter.ts<20>?backend/src/common/storage/StorageFactory.ts<20>?backend/src/common/storage/index.ts<20>?
2. <20>亙<EFBFBD>蝟餌<E89D9F>嚗Áinston嚗争<E59A97>
*瘚贝<EFBFBD>蝏𤘪<EFBFBD>嚗?
{
"status": "passed",
"message": "<22>亙<EFBFBD>撌脰<E6928C><E884B0>箏<EFBFBD><E7AE8F>批<EFBFBD><E689B9>?
}
*撉諹<EFBFBD>憿寧𤌍嚗?
- <EFBFBD>?Info 蝥批<E89DA5><E689B9>亙<EFBFBD>嚗𡁏迤撣貉<E692A3><E8B289>?
- <EFBFBD>?Warn 蝥批<E89DA5><E689B9>亙<EFBFBD>嚗𡁏迤撣貉<E692A3><E8B289>?
- <EFBFBD>?Error 蝥批<E89DA5><E689B9>亙<EFBFBD>嚗𡁏迤撣貉<E692A3><E8B289>?
- <EFBFBD>?撣虫<E692A3>銝𧢲<E98A9D><F0A7A2B2><EFBFBD>𠯫敹梹<E695B9>
logger.child()甇<>虜撌乩<E6928C> - <EFBFBD>?JSON <20>澆<EFBFBD>嚗𡁶<E59A97>鈭抒㴓憓<E3B493>𣈲<EFBFBD>?
- <EFBFBD>?敶抵𠧧颲枏枂嚗𡁜<E59A97><F0A1819C>𤑳㴓憓<E3B493>𣈲<EFBFBD>?
*<EFBFBD>亙<EFBFBD>蝷箔<EFBFBD>嚗?
[2025-11-17T23:54:17.877Z] [aiclinical-backend] info: 摮睃<E691AE><E79D83>滚𦛚瘚贝<E7989A><E8B49D>朞<EFBFBD> {"key":"test/verification-1763423657877.txt"}
[2025-11-17T23:54:17.880Z] [aiclinical-backend] info: 蝻枏<E89DBB><E69E8F>滚𦛚瘚贝<E7989A><E8B49D>朞<EFBFBD>
[2025-11-17T23:54:17.882Z] [aiclinical-backend] info: 撘<>郊隞餃𦛚瘚贝<E7989A><E8B49D>朞<EFBFBD> {"jobId":"15ca17e0-1b97-4afa-ae61-b69c1b676264"}
[2025-11-17T23:54:17.883Z] [aiclinical-backend] info: <20>?撟喳蝱<E596B3>箇<EFBFBD>霈暹鴌撉諹<E69289>嚗𡁜<E59A97><F0A1819C>券<EFBFBD>朞<EFBFBD> {"tests":["storage","logging","cache","jobQueue"]}
*摰䂿緵<EFBFBD><EFBFBD>辣嚗?
backend/src/common/logging/logger.ts<20>?backend/src/common/logging/index.ts<20>?
3. 蝻枏<E89DBB><E69E8F>滚𦛚嚗㇈emoryCacheAdapter嚗争<E59A97>
*瘚贝<EFBFBD>蝏𤘪<EFBFBD>嚗?
{
"status": "passed",
"set": "success",
"get": true,
"has": true,
"contentMatch": true
}
*撉諹<EFBFBD>憿寧𤌍嚗?
- <EFBFBD>?霈曄蔭蝻枏<E89DBB>嚗䫤cache.set()` <20>𣂼<EFBFBD>
- <EFBFBD>?<3F>瑕<EFBFBD>蝻枏<E89DBB>嚗䫤cache.get()` 餈𥪜<E9A488>甇<EFBFBD>&<EFBFBD>唳旿
- <EFBFBD>?摮睃銁<E79D83>扳<EFBFBD><E689B3>伐<EFBFBD>
cache.has()甇<>虜 - <EFBFBD>?<3F><>捆撉諹<E69289>嚗𡁶<E59A97>摮睃<E691AE>摰孵<E691B0><E5ADB5>其<EFBFBD><E585B6>?
- <EFBFBD>?<3F>寥<EFBFBD><E5AFA5>滢<EFBFBD>嚗䫤cache.mset()
<20>?cache.mget()` 甇<>虜 - <EFBFBD>?<3F>𣳇膄蝻枏<E89DBB>嚗䫤cache.delete()` <20>𣂼<EFBFBD>
- <EFBFBD>?TTL <20>舀<EFBFBD>嚗?0蝘坿<E89D98><E59DBF><EFBFBD>𧒄<EFBFBD>湔迤撣?
*摰䂿緵<EFBFBD><EFBFBD>辣嚗?
backend/src/common/cache/MemoryCacheAdapter.ts<20>?backend/src/common/cache/CacheFactory.ts<20>?backend/src/common/cache/index.ts<20>?
4. 撘<>郊隞餃𦛚嚗㇈emoryQueue嚗争<E59A97>
*瘚贝<EFBFBD>蝏𤘪<EFBFBD>嚗?
{
"status": "passed",
"jobId": "15ca17e0-1b97-4afa-ae61-b69c1b676264",
"jobStatus": "pending"
}
*撉諹<EFBFBD>憿寧𤌍嚗?
- <EFBFBD>?<3F>𥕦遣隞餃𦛚嚗䫤jobQueue.push()` <20>𣂼<EFBFBD>
- <EFBFBD>?<3F><><EFBFBD>隞餃𦛚ID嚗䦧UID <20>澆<EFBFBD>甇<EFBFBD>&
- <EFBFBD>?<3F>亥砭隞餃𦛚嚗䫤jobQueue.getJob()` 餈𥪜<E9A488>隞餃𦛚<E9A483>嗆<EFBFBD>?
- <EFBFBD>?隞餃𦛚<E9A483>嗆<EFBFBD><E59786><EFBFBD><EFBFBD>嘥<EFBFBD><E598A5>嗆<EFBFBD><E59786>蛹
pending - <EFBFBD>?隞餃𦛚<E9A483>唳旿嚗帋遙<E5B88B>⊥㺭<E28AA5>格迤蝖桐<E89D96>摮?
*摰䂿緵<EFBFBD><EFBFBD>辣嚗?
backend/src/common/jobs/MemoryQueue.ts<20>?backend/src/common/jobs/JobFactory.ts<20>?backend/src/common/jobs/types.ts<20>?backend/src/common/jobs/index.ts<20>?
5. <20>亙熒璉<E78692><E79289>亦垢<E4BAA6>?<3F>?
*瘚贝<EFBFBD>蝡舐<EFBFBD>嚗?
5.1 Liveness 蝡舐<E89DA1>
*霂瑟<EFBFBD>嚗? GET /health/liveness
*<EFBFBD>滚<EFBFBD>嚗?
{
"status": "ok",
"timestamp": 1763423214691,
"uptime": 80.9521787
}
<EFBFBD>?<EFBFBD>嗆<EFBFBD><EFBFBD><EFBFBD>嚗?* 200 OK
<0A>?<EFBFBD>滚<EFBFBD><EFBFBD>園𡢿嚗?* < 10ms
<0A>?<EFBFBD>券<EFBFBD>䈑<EFBFBD> SAE 摮䀹暑璉<E69A91><E79289>?
5.2 Readiness 蝡舐<E89DA1>
*霂瑟<EFBFBD>嚗? GET /health/readiness
*<EFBFBD>滚<EFBFBD>嚗?
{
"status": "degraded",
"timestamp": 1763423239444,
"uptime": 105.7048663,
"checks": {
"database": {
"status": "ok",
"message": "Connected",
"details": {
"currentConnections": 1,
"maxConnections": 400,
"usagePercent": 0
}
},
"memory": {
"status": "degraded",
"message": "High memory usage",
"details": {
"rss": 127,
"heapTotal": 29,
"heapUsed": 27,
"external": 22
}
}
}
}
<EFBFBD>?<EFBFBD>唳旿摨𤘪<EFBFBD><EFBFBD>伐<EFBFBD> <20>朞<EFBFBD>嚗<EFBFBD><E59A97><EFBFBD>交迤撣賂<E692A3>
<0A>𩤃<EFBFBD> <EFBFBD><EFBFBD><EFBFBD>璉<EFBFBD><EFBFBD>伐<EFBFBD> <20>滨漣嚗?27MB RSS嚗峕迤撣貉<E692A3><E8B289>湛<EFBFBD>
<0A>?<EFBFBD>券<EFBFBD>䈑<EFBFBD> SAE 撠梁貌璉<E8B28C><E79289>?
5.3 霂衣<E99C82><E8A1A3>亙熒璉<E78692><E79289>亦垢<E4BAA6>?
*霂瑟<EFBFBD>嚗? GET /health
*<EFBFBD>滚<EFBFBD>嚗?
{
"status": "ok",
"timestamp": "2025-11-17T23:47:24.999Z",
"checks": {
"database": {
"status": "ok",
"responseTime": "2ms",
"connections": {
"current": 1,
"max": 400,
"usage": "0%"
}
},
"environment": {
"nodeVersion": "v22.18.0",
"platform": "win32",
"nodeEnv": "development",
"pid": 16732,
"uptime": "111s"
},
"memory": {
"rss": "127MB",
"heapTotal": "29MB",
"heapUsed": "27MB",
"external": "22MB"
},
"cpu": {
"usage": {
"user": 1578000,
"system": 468000
},
"loadAverage": "N/A"
}
}
}
<EFBFBD>?<EFBFBD>唳旿摨枏<EFBFBD>摨娍𧒄<EFBFBD>湛<EFBFBD> 2ms嚗<73><E59A97>蝘<EFBFBD>嚗?
<0A>?<EFBFBD>唳旿摨栞<EFBFBD><EFBFBD>交㺭嚗?* 1/400 (0%)
<0A>?餈鞱<EFBFBD><EFBFBD>臬<EFBFBD>嚗? Node v22.18.0
<0A>?<EFBFBD><EFBFBD><EFBFBD>雿輻鍂嚗?* 127MB RSS嚗<53>迤撣賂<E692A3>
<0A>?<EFBFBD>券<EFBFBD>䈑<EFBFBD>* 撘<><E69298>𤏸<EFBFBD>霂訫<E99C82><E8A8AB>烐綉
*摰䂿緵<EFBFBD><EFBFBD>辣嚗?
backend/src/common/health/healthCheck.ts<20>?backend/src/common/health/index.ts<20>?
6. <20>唳旿摨栞<E691A8><E6A09E>交<EFBFBD> <20>?
*<EFBFBD>滨蔭<EFBFBD><EFBFBD>辣嚗? backend/src/config/database.ts
*撉諹<EFBFBD>憿寧𤌍嚗?
- <EFBFBD>?Prisma <20>嘥<EFBFBD><E598A5>𡝗<EFBFBD><F0A19D97>?
- <EFBFBD>?餈墧𦻖瘙𣳇<E79899>蝵格迤蝖?
- <EFBFBD>?餈墧𦻖<E5A2A7>啗恣蝞梹<E89D9E>
(400 / 20) - 2 = 18瘥誩<E798A5>靘? - <EFBFBD>?隡㗛<E99AA1><E3979B>喲𡡒嚗锭IGTERM/SIGINT 靽∪噡憭<E599A1><E686AD>
- <EFBFBD>?餈墧𦻖<E5A2A7>啁<EFBFBD><E59581>改<EFBFBD>
getDatabaseConnectionCount()甇<>虜
*<EFBFBD>滨蔭<EFBFBD><EFBFBD>㺭嚗?
connectionLimit = calculateConnectionLimit(
DB_MAX_CONNECTIONS = 400, // RDS<44><53>憭扯<E686AD><E689AF>交㺭
MAX_INSTANCES = 20 // SAE<41><45>憭批<E686AD>靘𧢲㺭
)
// 蝏𤘪<E89D8F>嚗𡁏<E59A97>摰硺<E691B0>18銝芾<E98A9D><E88ABE>?
7. <20>臬<EFBFBD><E887AC>滨蔭蝞∠<E89D9E> <20>?
*<EFBFBD>滨蔭<EFBFBD><EFBFBD>辣嚗? backend/src/config/env.ts
*撉諹<EFBFBD>憿寧𤌍嚗?
- <EFBFBD>?<3F>臬<EFBFBD><E887AC>㗛<EFBFBD><E3979B>㰘蝸嚗𡁏<E59A97><F0A1818F>匧<EFBFBD><E58CA7><EFBFBD><EFBFBD>㗛<EFBFBD>撌脣<E6928C>頧?
- <EFBFBD>?<3F>滨蔭撉諹<E69289>嚗䫤validateEnv()` 甇<>虜
- <EFBFBD>?暺䁅恕<E48185>潘<EFBFBD><E6BD98>芾挽蝵桃<E89DB5><E6A183>舫<EFBFBD>匧<EFBFBD><E58CA7>譍蝙<E8AD8D>券<EFBFBD>霈文<E99C88>?
- <EFBFBD>?蝐餃<E89D90>摰匧<E691B0>嚗関ypeScript 蝐餃<E89D90>璉<EFBFBD><E79289>仿<EFBFBD>朞<EFBFBD>
*<EFBFBD>滨蔭<EFBFBD><EFBFBD>掩嚗?
- <EFBFBD>?摨𠉛鍂<F0A0899B>滨蔭嚗<E894AD>垢<EFBFBD><E59EA2><EFBFBD><EFBFBD>㴓憓<E3B493><E68693>
- <EFBFBD>?<3F>唳旿摨㯄<E691A8>蝵殷<E89DB5>URL<52><4C><EFBFBD><EFBFBD>交<EFBFBD>嚗?
- <EFBFBD>?摮睃<E691AE><E79D83>滨蔭嚗<E894AD>掩<EFBFBD>卝<EFBFBD><E58D9D>楝敺<E6A59D><E695BA>
- <EFBFBD>?蝻枏<E89DBB><E69E8F>滨蔭嚗<E894AD>掩<EFBFBD>卝<EFBFBD><E58D9D>edis嚗?
- <EFBFBD>?隞餃𦛚<E9A483>笔<EFBFBD><E7AC94>滨蔭嚗<E894AD>掩<EFBFBD>页<EFBFBD>
- <EFBFBD>?<3F>亙<EFBFBD><E4BA99>滨蔭嚗<E894AD>漣<EFBFBD>怒<EFBFBD><E68092><EFBFBD><EFBFBD>∪<EFBFBD>嚗?
- <EFBFBD>?LLM<4C>滨蔭嚗㇁PI撖<49>𤨎嚗?
- <EFBFBD>?<3F>蠘<EFBFBD>撘<EFBFBD><E69298>喉<EFBFBD>Feature Flags嚗?
8. <20>烐綉<E78390><E7B689><EFBFBD> <20>?
*摰䂿緵<EFBFBD><EFBFBD>辣嚗? backend/src/common/monitoring/metrics.ts
*撉諹<EFBFBD>憿寧𤌍嚗?
- <EFBFBD>?<3F>唳旿摨栞<E691A8><E6A09E>交㺭<E4BAA4>烐綉嚗䫤Metrics.recordDBConnectionCount()`
- <EFBFBD>?<3F><><EFBFBD>雿輻鍂<E8BCBB>烐綉嚗䫤Metrics.recordMemoryUsage()`
- <EFBFBD>?<3F>𡃏郎<F0A1838F>蠘<EFBFBD>嚗朞<E59A97><E69C9E>交㺭>80%<25>嗅<EFBFBD>霅?
- <EFBFBD>?<3F>亙<EFBFBD>颲枏枂嚗𡁏<E59A97><F0A1818F>㗇<EFBFBD><E39787><EFBFBD><EFBFBD><EFBFBD>箏<EFBFBD><E7AE8F>亙<EFBFBD>蝟餌<E89D9F>
*<EFBFBD>烐綉<EFBFBD>唳旿嚗?
[Monitoring] Database connection count
current: 1
max: 400
usage: 0.2%
[Monitoring] Memory Usage
rss: 127.45 MB
heapTotal: 29.18 MB
heapUsed: 27.52 MB
external: 22.31 MB
<EFBFBD>圲 靽桀<E99DBD><E6A180><EFBFBD>䔮憸?
<EFBFBD>桅<EFBFBD> 1嚗𡁜<E59A97>摨瑟<E691A8><E7919F>亥楝<E4BAA5>勗<EFBFBD>蝒?
*<EFBFBD>躰秤嚗?
FastifyError [Error]: Method 'GET' already declared for route '/health'
*<EFBFBD>笔<EFBFBD>嚗? /health 頝舐眏<E88890>其舅銝芸𧑐<E88AB8>寞釣<E5AF9E>䕘<EFBFBD>index.ts <20>?healthCheck.ts嚗?
*閫<EFBFBD><EFBFBD>嚗? 蝘駁膄 index.ts 銝剔<E98A9D><E58994>滚<EFBFBD>頝舐眏嚗𣬚<E59A97>銝<EFBFBD><E98A9D>?registerHealthRoutes() 銝剜釣<E5899C>?
*<EFBFBD><EFBFBD>辣嚗?
backend/src/index.ts<20>?backend/src/common/health/healthCheck.ts<20>?
<EFBFBD>桅<EFBFBD> 2嚗関ypeScript <20>亙藁撖澆枂<E6BE86>躰秤
*<EFBFBD>躰秤嚗?
SyntaxError: The requested module './StorageAdapter.js' does not provide an export named 'StorageAdapter'
*<EFBFBD>笔<EFBFBD>嚗? TypeScript <20>亙藁<E4BA99>刻<EFBFBD>銵峕𧒄銝滚<E98A9D><E6BB9A>剁<EFBFBD>銝滩<E98A9D>雿輻鍂<E8BCBB>桅<EFBFBD>𡁶<EFBFBD> export { } 撖澆枂
*閫<EFBFBD><EFBFBD>嚗? 雿輻鍂 export type { } 撖澆枂<E6BE86>亙藁蝐餃<E89D90>
*靽格㺿<EFBFBD><EFBFBD>辣嚗?
// 靽格㺿<E6A0BC>?
export { StorageAdapter } from './StorageAdapter.js'
// 靽格㺿<E6A0BC>?
export type { StorageAdapter } from './StorageAdapter.js'
*敶勗<EFBFBD><EFBFBD><EFBFBD>辣嚗?
backend/src/common/storage/index.ts<20>?
<EFBFBD>桅<EFBFBD> 3嚗阳inston 靘肽<E99D98>蝻箏仃
*<EFBFBD>躰秤嚗? <20>曆<EFBFBD><E69B86>唳芋<E594B3>?winston
*閫<EFBFBD><EFBFBD>嚗? 摰㕑<E691B0>靘肽<E99D98>
npm install winston
# @types/winston 銝漤<E98A9D>閬<EFBFBD><E996AC>鋆<EFBFBD><E98B86>winston<6F>芸蒂蝐餃<E89D90>摰帋<E691B0>嚗?
<EFBFBD><EFBFBD> 隞<><E99A9E>蝏蠘恣
<EFBFBD>啣<EFBFBD><EFBFBD><EFBFBD>辣
| <EFBFBD><EFBFBD>辣 | 銵峕㺭 | 霂湔<EFBFBD> |
|---|---|---|
common/storage/StorageAdapter.ts |
68 | 摮睃<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>冽𦻖<EFBFBD>? |
common/storage/LocalAdapter.ts |
95 | <EFBFBD>砍𧑐摮睃<EFBFBD>摰䂿緵 |
common/storage/OSSAdapter.ts |
145 | OSS摮睃<EFBFBD>摰䂿緵嚗<EFBFBD><EFBFBD><EFBFBD>辷<EFBFBD> |
common/storage/StorageFactory.ts |
45 | 摮睃<EFBFBD>撌亙<EFBFBD>蝐? |
common/storage/index.ts |
43 | 蝏煺<EFBFBD>撖澆枂 |
common/logging/logger.ts |
72 | Winston<EFBFBD>亙<EFBFBD><EFBFBD>滨蔭 |
common/logging/index.ts |
11 | 蝏煺<EFBFBD>撖澆枂 |
common/cache/CacheAdapter.ts |
77 | 蝻枏<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>冽𦻖<EFBFBD>? |
common/cache/MemoryCacheAdapter.ts |
181 | <EFBFBD><EFBFBD><EFBFBD>蝻枏<EFBFBD>摰䂿緵 |
common/cache/RedisCacheAdapter.ts |
212 | Redis蝻枏<EFBFBD>摰䂿緵嚗<EFBFBD><EFBFBD><EFBFBD>辷<EFBFBD> |
common/cache/CacheFactory.ts |
100 | 蝻枏<EFBFBD>撌亙<EFBFBD>蝐? |
common/cache/index.ts |
52 | 蝏煺<EFBFBD>撖澆枂 |
common/jobs/types.ts |
82 | 隞餃𦛚蝐餃<EFBFBD>摰帋<EFBFBD> |
common/jobs/MemoryQueue.ts |
234 | <EFBFBD><EFBFBD><EFBFBD><EFBFBD>笔<EFBFBD>摰䂿緵 |
common/jobs/JobFactory.ts |
84 | 隞餃𦛚<EFBFBD>笔<EFBFBD>撌亙<EFBFBD> |
common/jobs/index.ts |
54 | 蝏煺<EFBFBD>撖澆枂 |
common/health/healthCheck.ts |
224 | <EFBFBD>亙熒璉<EFBFBD><EFBFBD>亥楝<EFBFBD>? |
common/health/index.ts |
24 | 蝏煺<EFBFBD>撖澆枂 |
common/monitoring/metrics.ts |
375 | <EFBFBD>烐綉<EFBFBD><EFBFBD><EFBFBD><EFBFBD>園<EFBFBD> |
common/monitoring/index.ts |
41 | 蝏煺<EFBFBD>撖澆枂 |
config/env.ts |
180 | <EFBFBD>臬<EFBFBD><EFBFBD>滨蔭蝞∠<EFBFBD> |
test-platform-api.ts |
133 | 瘚贝<EFBFBD>API嚗<EFBFBD>葩<EFBFBD>塚<EFBFBD> |
| <EFBFBD>餉恣 | *2,532銵? | *22銝芣<EFBFBD>隞? |
<EFBFBD>湔鰵<EFBFBD><EFBFBD>辣
| <EFBFBD><EFBFBD>辣 | 靽格㺿<EFBFBD><EFBFBD>捆 |
|---|---|
backend/src/index.ts |
瘜典<EFBFBD><EFBFBD>亙熒璉<EFBFBD><EFBFBD>亙<EFBFBD>瘚贝<EFBFBD>API |
backend/src/config/database.ts |
瘛餃<EFBFBD>餈墧𦻖瘙惩<EFBFBD>隡㗛<EFBFBD><EFBFBD>喲𡡒 |
| <EFBFBD><EFBFBD>﹝嚗?1銝迎<E98A9D> | <EFBFBD>湔鰵<EFBFBD>嗆<EFBFBD><EFBFBD><EFBFBD>﹝<EFBFBD><EFBFBD><EFBFBD><EFBFBD>𤏸<EFBFBD><EFBFBD>? |
<EFBFBD>㴓 撉峕𤣰蝏栞捏
<EFBFBD>?<3F>券<EFBFBD><E588B8>朞<EFBFBD>憿寧𤌍
- 摮睃<EFBFBD><EFBFBD>滚𦛚 - LocalAdapter 摰峕㟲摰䂿緵撟園<E6929F>霂<EFBFBD><E99C82>朞<EFBFBD>
- <EFBFBD>亙<EFBFBD>蝟餌<EFBFBD> - Winston <20>滨蔭摰峕<E691B0>嚗峕𣈲<E5B395><F0A388B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>亙<EFBFBD>
- 蝻枏<EFBFBD><EFBFBD>滚𦛚 - MemoryCacheAdapter 摰峕㟲摰䂿緵
- 撘<EFBFBD>郊隞餃𦛚 - MemoryQueue 摰峕㟲摰䂿緵
- *<EFBFBD>亙熒璉<EFBFBD><EFBFBD>? - 銝劐葵蝡舐<E89DA1><E88890>券<EFBFBD>甇<EFBFBD>虜
- <EFBFBD>唳旿摨栞<EFBFBD><EFBFBD>交<EFBFBD> - <20>滨蔭甇<E894AD>&嚗𣬚<E59A97><F0A3AC9A>扳迤撣?
- <EFBFBD>臬<EFBFBD><EFBFBD>滨蔭 - <20>㰘蝸<E3B098>屸<EFBFBD>霂<EFBFBD>迤撣?
- <EFBFBD>烐綉<EFBFBD><EFBFBD><EFBFBD> - <20>唳旿<E594B3><E697BF><EFBFBD>甇<EFBFBD>虜
<EFBFBD><EFBFBD> <20>臭誑撘<E8AA91>憪?ASL 璅∪<E79285>撘<EFBFBD><E69298>?
*撟喳蝱<EFBFBD>箇<EFBFBD>霈暹鴌撌脣停蝏迎<EFBFBD><EFBFBD><EFBFBD><EFBFBD>匧<EFBFBD><EFBFBD>賡<EFBFBD>霂<EFBFBD><EFBFBD>朞<EFBFBD>嚗?
銝𡁜𦛚璅∪<EFBFBD>撘<EFBFBD><EFBFBD>烐𧒄<EFBFBD>臭誑<EFBFBD>湔𦻖雿輻鍂嚗?
import { storage } from '@/common/storage'
import { logger } from '@/common/logging'
import { cache } from '@/common/cache'
import { jobQueue } from '@/common/jobs'
<EFBFBD>嗡誨<EFBFBD><EFBFBD>㴓憓<EFBFBD><EFBFBD><EFBFBD>g<EFBFBD> <20>芷<EFBFBD>靽格㺿<E6A0BC>臬<EFBFBD><E887AC>㗛<EFBFBD>嚗峕<E59A97><E5B395><EFBFBD><EFBFBD>孵𢆡銝𡁜𦛚隞<F0A69B9A><E99A9E>嚗?
<EFBFBD><EFBFBD> <20>𡒊賒撌乩<E6928C>
敶枏<EFBFBD><EFBFBD>臭誑<EFBFBD>𡁶<EFBFBD>嚗<EFBFBD>𧋦<EFBFBD>啁㴓憓<EFBFBD><EFBFBD><EFBFBD>?
- <EFBFBD>?撘<><E69298>?ASL 璅∪<E79285>嚗<EFBFBD>蝙<EFBFBD>?LocalAdapter嚗?
- <EFBFBD>?撘<><E69298>穃<EFBFBD>隞碶<E99A9E><E7A2B6>⊥芋<E28AA5>?
- <EFBFBD>?<3F>砍𧑐瘚贝<E7989A><E8B49D>屸<EFBFBD>霂?
鈭𤑳垢<EFBFBD>函蔡<EFBFBD>漤<EFBFBD>閬<EFBFBD><EFBFBD><EFBFBD>?<3F><>
-
*摰㕑<EFBFBD>鈭烐<EFBFBD><EFBFBD>∩<EFBFBD>韏?
npm install ali-oss # <20>輸<EFBFBD>鈭䭲SS npm install ioredis # Redis -
<EFBFBD>𡝗<EFBFBD>瘜券<EFBFBD>鈭𤑳垢摰䂿緵
OSSAdapter.ts- 摰䂿緵OSS銝𠹺<E98A9D>銝贝蝸RedisCacheAdapter.ts- 摰䂿緵Redis蝻枏<E89DBB>DatabaseQueue.ts- 摰䂿緵<E482BF>唳旿摨㮖遙<E3AE96>⊿<EFBFBD><E28ABF>梹<EFBFBD><E6A2B9>舫<EFBFBD>㚁<EFBFBD>
-
<EFBFBD>滨蔭<EFBFBD>煺漣<EFBFBD>臬<EFBFBD><EFBFBD>㗛<EFBFBD>
STORAGE_TYPE=oss CACHE_TYPE=redis QUEUE_TYPE=database -
<EFBFBD>函蔡瘚贝<EFBFBD>
- SAE <20>臬<EFBFBD><E887AC>函蔡
- 餈墧𦻖瘙䭾<EFBFBD>霂?
- <EFBFBD>亙熒璉<EFBFBD><EFBFBD>仿<EFBFBD>霂?
- <EFBFBD>扯<EFBFBD>瘚贝<EFBFBD>
<EFBFBD>?<3F>餌<EFBFBD>
*摰墧鴌<EFBFBD>園𡢿嚗? 2025-11-17嚗?憭抬<E686AD>
*摰墧鴌<EFBFBD><EFBFBD>捆嚗? 8銝芸像<E88AB8>啣抅蝖<E68A85>霈暹鴌璅∪<E79285>
隞<EFBFBD><EFBFBD><EFBFBD>𧶏<EFBFBD> 2,532銵峕鰵隞<E9B0B5><E99A9E>
瘚贝<EFBFBD><EFBFBD>朞<EFBFBD><EFBFBD><EFBFBD><EFBFBD> 100%
<EFBFBD>函蔡撠梁貌摨佗<EFBFBD> <20>砍𧑐<E7A08D>臬<EFBFBD> <20>?/ 鈭𤑳垢<F0A491B3>臬<EFBFBD> <20><>嚗<EFBFBD><E59A97>摰㕑<E691B0>靘肽<E99D98>嚗?
*<EFBFBD>詨<EFBFBD><EFBFBD>鞉<EFBFBD>嚗?
- <EFBFBD>?<3F><><EFBFBD><EFBFBD>冽芋撘誩<E69298><E8AAA9>堆<EFBFBD><E5A086>舀<EFBFBD><E88880>嗡誨<E597A1><E8AAA8>㴓憓<E3B493><E68693><EFBFBD>?
- <EFBFBD>?摰峕㟲<E5B395><E39FB2>像<EFBFBD>啣抅蝖<E68A85>霈暹鴌雿梶頂
- <EFBFBD>?<3F><><EFBFBD>匧<EFBFBD><E58CA7>賜<EFBFBD>餈<EFBFBD><E9A488><EFBFBD><EFBFBD><EFBFBD>霂閖<E99C82>霂?
- <EFBFBD>?<3F><>﹝摰峕㟲嚗峕鰵鈭箏虾敹恍<E695B9>煺<EFBFBD><E785BA>?
- <EFBFBD>?銝?ASL 璅∪<E79285>撘<EFBFBD><E69298>穃<EFBFBD>憟賢<E6869F>憭?
銝衤<EFBFBD>甇伐<EFBFBD> <20><> 撘<>憪?ASL-AI<41>箄<EFBFBD><E7AE84><EFBFBD>讃璅∪<E79285>撘<EFBFBD><E69298>𡢅<EFBFBD>
*<EFBFBD>亙<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>園𡢿嚗? 2025-11-17 23:54
撉諹<EFBFBD><EFBFBD>扯<EFBFBD>鈭綽<EFBFBD> AI Assistant + <20>冽<EFBFBD>
<EFBFBD>亙<EFBFBD><EFBFBD>嗆<EFBFBD><EFBFBD><EFBFBD> <20>?摰峕<E691B0>