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%)
305 lines
9.4 KiB
Markdown
305 lines
9.4 KiB
Markdown
# ASL璅∪<E79285> - Week 2 Day 1 摰峕<E691B0><E5B395>亙<EFBFBD>
|
||
|
||
**<EFBFBD>交<EFBFBD>**: 2025-11-18
|
||
**撘<><E69298>煾𧫴畾?*: Week 2 - <20>滨垢撘<E59EA2><E69298>?
|
||
**隞餃𦛚**: Day 1 - 憿寧𤌍蝞∠<E89D9E>憿?
|
||
**<EFBFBD>嗆<EFBFBD>?*: <20>?摰峕<E691B0>
|
||
|
||
---
|
||
|
||
## <20><> 摰峕<E691B0><E5B395><EFBFBD><EFBFBD>
|
||
|
||
### <20>?撌脣<E6928C><E884A3>𣂷遙<F0A382B7>?
|
||
|
||
#### 1. <20>桀<EFBFBD>蝏𤘪<E89D8F><F0A498AA>𥕦遣
|
||
```
|
||
frontend-v2/src/modules/asl/
|
||
<EFBFBD>鎿<EFBFBD><EFBFBD><EFBFBD> pages/ # 憿菟𢒰蝏<F0A292B0>辣
|
||
<EFBFBD>鎿<EFBFBD><EFBFBD><EFBFBD> components/ # <20>𡁶鍂蝏<E98D82>辣
|
||
<EFBFBD>鎿<EFBFBD><EFBFBD><EFBFBD> api/ # API摰X<E691B0>蝡?
|
||
<EFBFBD>鎿<EFBFBD><EFBFBD><EFBFBD> hooks/ # React Hooks
|
||
<EFBFBD>鎿<EFBFBD><EFBFBD><EFBFBD> types/ # TypeScript蝐餃<E89D90>
|
||
<EFBFBD>鎿<EFBFBD><EFBFBD><EFBFBD> utils/ # 撌亙<E6928C><E4BA99>賣㺭
|
||
<EFBFBD>鎿<EFBFBD><EFBFBD><EFBFBD> index.tsx # 璅∪<E79285><E288AA>亙藁
|
||
<EFBFBD>婙<EFBFBD><EFBFBD><EFBFBD> routes.tsx # 頝舐眏<E88890>滨蔭
|
||
```
|
||
|
||
#### 2. TypeScript蝐餃<E89D90>摰帋<E691B0> (224銵?
|
||
**<2A><>辣**: `types/index.ts`
|
||
|
||
摰帋<EFBFBD>鈭<EFBFBD>誑銝𧢲瓲敹<EFBFBD>掩<EFBFBD>页<EFBFBD>
|
||
- `PICOSCriteria` - PICOS<4F><53><EFBFBD>
|
||
- `ScreeningConfig` - 蝑偦<E89D91>厰<EFBFBD>蝵殷<E89DB5><E6AEB7>怎<EFBFBD><E6808E>厰<EFBFBD><E58EB0>潘<EFBFBD>
|
||
- `ScreeningProject` - 蝑偦<E89D91>厰★<E58EB0>?
|
||
- `Literature` - <20><>讃<EFBFBD>∠𤌍
|
||
- `ModelResult` - 璅∪<E79285><E288AA>斗鱏蝏𤘪<E89D8F>
|
||
- `ScreeningResult` - 蝑偦<E89D91>厩<EFBFBD><E58EA9>?
|
||
- `ScreeningTask` - 蝑偦<E89D91>劐遙<E58A90>?
|
||
- `ApiResponse` - API<50>滚<EFBFBD>蝐餃<E89D90>
|
||
|
||
#### 3. API摰X<E691B0>蝡?(268銵?
|
||
**<2A><>辣**: `api/index.ts`
|
||
|
||
摰䂿緵鈭<EFBFBD>誑銝𧘹PI<EFBFBD>亙藁嚗?
|
||
- **憿寧𤌍蝞∠<E89D9E>**: 5銝服PI嚗<49><E59A97>撱箝<E692B1><E7AE9D><EFBFBD>銵具<E98AB5><E585B7>祕<EFBFBD><E7A595><EFBFBD><EFBFBD>凒<EFBFBD>啜<EFBFBD><E5959C><EFBFBD><EFBFBD>歹<EFBFBD>
|
||
- **<2A><>讃蝞∠<E89D9E>**: 3銝服PI嚗<49>紡<EFBFBD>乓<EFBFBD><E4B993><EFBFBD>銵具<E98AB5><E585B7><EFBFBD><EFBFBD>歹<EFBFBD>
|
||
- **蝑偦<E89D91>劐遙<E58A90>?*: 2銝服PI嚗<49>鍳<EFBFBD>具<EFBFBD><E585B7><EFBFBD>摨行䰻霂g<E99C82>
|
||
- **蝑偦<E89D91>厩<EFBFBD><E58EA9>?*: 3銝服PI嚗<49><E59A97>銵具<E98AB5><E585B7>凒<EFBFBD>啜<EFBFBD><E5959C>鸌<EFBFBD>𤩺凒<F0A4A9BA>堆<EFBFBD>
|
||
- **撖澆枂**: 1銝服PI嚗𠄌xcel撖澆枂嚗?
|
||
- **蝏蠘恣**: 1銝服PI嚗<49>★<EFBFBD>桃<EFBFBD>霈∴<E99C88>
|
||
|
||
#### 4. React Query Hooks (108銵?
|
||
**<2A><>辣**: `hooks/useProjects.ts`
|
||
|
||
摰䂿緵鈭<EFBFBD>★<EFBFBD>桃恣<EFBFBD><EFBFBD>㮾<EFBFBD>蚵ooks嚗?
|
||
- `useProjects()` - <20>瑕<EFBFBD>憿寧𤌍<E5AFA7>𡑒”
|
||
- `useProject(id)` - <20>瑕<EFBFBD>憿寧𤌍霂行<E99C82>
|
||
- `useCreateProject()` - <20>𥕦遣憿寧𤌍
|
||
- `useUpdateProject(id)` - <20>湔鰵憿寧𤌍
|
||
- `useDeleteProject()` - <20>𣳇膄憿寧𤌍
|
||
- `useProjectStatistics(id)` - <20>瑕<EFBFBD>蝏蠘恣靽⊥<E99DBD>
|
||
|
||
#### 5. 憿寧𤌍銵典<E98AB5>蝏<EFBFBD>辣 (202銵?
|
||
**<2A><>辣**: `components/ProjectForm.tsx`
|
||
|
||
<EFBFBD>蠘<EFBFBD>摰峕㟲<EFBFBD><EFBFBD>”<EFBFBD>閧<EFBFBD>隞塚<EFBFBD>
|
||
- <20>?憿寧𤌍<E5AFA7>滨妍颲枏<E9A2B2>
|
||
- <20>?PICOS<4F><53><EFBFBD>嚗?銝芸<E98A9D>畾蛛<E795BE>P<EFBFBD><50><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>嚗?
|
||
- <20>?蝥喳<E89DA5><E596B3><EFBFBD><EFBFBD>嚗<EFBFBD><E59A97><EFBFBD>砍<EFBFBD>嚗?
|
||
- <20>?<3F>㘾膄<E398BE><E88684><EFBFBD>嚗<EFBFBD><E59A97><EFBFBD>砍<EFBFBD>嚗?
|
||
- <20>?**蝑偦<E89D91>厰<EFBFBD><E58EB0>潮<EFBFBD>㗇𥋘<E39787>?* 潃?<3F>詨<EFBFBD><E8A9A8>蠘<EFBFBD>
|
||
- <20><> 摰賣𠹭璅∪<E79285>嚗<EFBFBD><E59A97>蝑𥟇綫<F0A59F87>琜<EFBFBD>
|
||
- <20>吔<EFBFBD> <20><><EFBFBD>璅∪<E79285>嚗<EFBFBD>綫<EFBFBD>琜<EFBFBD>
|
||
- <20><> 銝交聢璅∪<E79285>嚗<EFBFBD>移蝑𥟇綫<F0A59F87>琜<EFBFBD>
|
||
- <20>?銵典<E98AB5>撉諹<E69289>
|
||
- <20>?Tooltip<69>鞟內
|
||
|
||
#### 6. 憿寧𤌍蝞∠<E89D9E>憿菟𢒰 (220銵?
|
||
**<2A><>辣**: `pages/ProjectManagement.tsx`
|
||
|
||
摰峕㟲<EFBFBD><EFBFBD>★<EFBFBD>桃恣<EFBFBD><EFBFBD><EFBFBD><EFBFBD>g<EFBFBD>
|
||
- <20>?憿寧𤌍<E5AFA7>𡑒”嚗㇍able撅閧內嚗?
|
||
- <20>曄內憿寧𤌍<E5AFA7>滨妍<E6BBA8><E5A68D>ICOS<4F><53><EFBFBD><EFBFBD>厰<EFBFBD><E58EB0>潦<EFBFBD><E6BDA6>𠶖<EFBFBD><F0A0B696><EFBFBD><EFBFBD><EFBFBD>撱箸𧒄<E7AEB8>?
|
||
- <20>曄內蝏蠘恣靽⊥<E99DBD>嚗<EFBFBD><E59A97><EFBFBD>格<EFBFBD>餅㺭<E9A485><E3BAAD>歇蝑偦<E89D91>剹<EFBFBD><E589B9>熙<EFBFBD>交㺭嚗?
|
||
- <20>?<3F>啣遣憿寧𤌍<E5AFA7>厰僼
|
||
- <20>?<3F>𥕦遣憿寧𤌍Modal嚗<6C><E59A97><EFBFBD>促rojectForm嚗?
|
||
- <20>?<3F>亦<EFBFBD>憿寧𤌍霂行<E99C82>
|
||
- <20>?<3F>𣳇膄憿寧𤌍嚗<F0A48C8D>蒂蝖株恕嚗?
|
||
- <20>?<3F>嗆<EFBFBD><E59786><EFBFBD>蝑橘<E89D91><E6A998>厩阮<E58EA9><E998AE><EFBFBD><EFBFBD>劐葉<E58A90><E89189>歇摰峕<E691B0>嚗?
|
||
- <20>?蝑偦<E89D91>厰<EFBFBD><E58EB0>潭<EFBFBD>蝑橘<E89D91>摰賣𠹭<E8B3A3><F0A0B9AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>艇<EFBFBD>潘<EFBFBD>
|
||
- <20>?蝛箇𠶖<E7AE87><F0A0B696><EFBFBD>蝷?
|
||
- <20>?Loading<6E>嗆<EFBFBD>?
|
||
- <20>?<3F>躰秤憭<E7A7A4><E686AD>
|
||
|
||
#### 7. 頝舐眏<E88890>滨蔭
|
||
**<2A><>辣**: `routes.tsx` <20>?`index.tsx`
|
||
|
||
- <20>?<3F>滨蔭ASL璅∪<E79285>頝舐眏
|
||
- <20>?<3F>鍦<EFBFBD>頧賡△<E8B3A1>Y<EFBFBD>隞?
|
||
- <20>?Suspense Loading
|
||
- <20>?璅∪<E79285>撌脣銁moduleRegistry.ts銝剜釣<E5899C>?
|
||
|
||
#### 8. <20>牐<EFBFBD>憿菟𢒰
|
||
<EFBFBD>𥕦遣鈭?銝芸<E98A9D>雿漤△<E6BCA4>g<EFBFBD>Week 2<>𡒊賒撘<E8B392><E69298>𡢅<EFBFBD>嚗?
|
||
- `pages/LiteratureImport.tsx` - <20><>讃撖澆<E69296>憿?
|
||
- `pages/ScreeningWorkbench.tsx` - 摰⊥瓲撌乩<E6928C><E4B9A9>?
|
||
- `pages/ScreeningResults.tsx` - 蝑偦<E89D91>厩<EFBFBD><E58EA9>?
|
||
|
||
---
|
||
|
||
## <20>㴓 <20>蠘<EFBFBD>撉峕𤣰
|
||
|
||
### <20>?Day 1撉峕𤣰<E5B395><F0A4A3B0><EFBFBD>
|
||
|
||
- <20>?<3F>臭誑<E887AD>𥕦遣憿寧𤌍
|
||
- <20>?憿寧𤌍銵典<E98AB5><E585B8><EFBFBD>鉄摰峕㟲<E5B395><E39FB2>ICOS摮埈挾
|
||
- <20>?**蝑偦<E89D91>厰<EFBFBD><E58EB0>潮<EFBFBD>㗇𥋘<E39787>冽迤撣詨極雿?* 潃?
|
||
- <20>?憿寧𤌍<E5AFA7>唳旿靽嘥<E99DBD><E598A5>唳㺭<E594B3>桀<EFBFBD>嚗<EFBFBD><E59A97>朞<EFBFBD>API嚗?
|
||
- <20>?憿寧𤌍<E5AFA7>𡑒”甇<E2809D>虜撅閧內
|
||
- <20>?<3F>臭誑<E887AD>亦<EFBFBD>憿寧𤌍霂行<E99C82>
|
||
- <20>?<3F>臭誑<E887AD>𣳇膄憿寧𤌍
|
||
- <20>?UI蝚血<E89D9A>Ant Design閫<6E><E996AB>
|
||
- <20>?TypeScript蝐餃<E89D90>摰峕㟲
|
||
|
||
---
|
||
|
||
## <20><> 隞<><E99A9E>蝏蠘恣
|
||
|
||
| 蝐餃<E89D90> | <20><>辣<EFBFBD>?| 隞<><E99A9E>銵峕㺭 | 霂湔<E99C82> |
|
||
|------|-------|---------|------|
|
||
| 蝐餃<E89D90>摰帋<E691B0> | 1 | 224 | types/index.ts |
|
||
| API摰X<E691B0>蝡?| 1 | 268 | api/index.ts |
|
||
| Hooks | 1 | 108 | hooks/useProjects.ts |
|
||
| 憿菟𢒰蝏<F0A292B0>辣 | 4 | 280 | ProjectManagement + 3銝芸<E98A9D>雿漤△ |
|
||
| <20>𡁶鍂蝏<E98D82>辣 | 1 | 202 | ProjectForm.tsx |
|
||
| 頝舐眏<E88890>滨蔭 | 2 | 60 | routes.tsx + index.tsx |
|
||
| **<EFBFBD>餉恣** | **10** | **1,142** | |
|
||
|
||
---
|
||
|
||
## <20><> <20>詨<EFBFBD>鈭桃<E988AD>
|
||
|
||
### 1. 蝑偦<E89D91>厰<EFBFBD><E58EB0>潮<EFBFBD>㗇𥋘<E39787>?潃鐥<E6BD83>潃?
|
||
銝厩<EFBFBD>蝑偦<EFBFBD>厰<EFBFBD><EFBFBD>澆<EFBFBD><EFBFBD>游<EFBFBD><EFBFBD>堆<EFBFBD>
|
||
- **摰賣𠹭璅∪<E79285>**嚗𡁜<E59A97>蝑𥟇綫<F0A59F87>琜<EFBFBD>摰<EFBFBD>虾憭𡁶熙<F0A181B6>乩<EFBFBD><E4B9A9>躰<EFBFBD>
|
||
- **<2A><><EFBFBD>璅∪<E79285>**嚗𡁜像銵∪<E98AB5>蝖桃<E89D96><E6A183><EFBFBD>𡢢<EFBFBD>䂿<EFBFBD>嚗<EFBFBD><E59A97>霈歹<E99C88>
|
||
- **銝交聢璅∪<E79285>**嚗𡁶移蝑𥟇綫<F0A59F87>琜<EFBFBD>靽肽<E99DBD>韐券<E99F90>
|
||
|
||
瘥讐<EFBFBD>憌擧聢<EFBFBD>賣<EFBFBD>霂衣<EFBFBD><EFBFBD><EFBFBD>秩<EFBFBD>𤾸<EFBFBD>Tooltip嚗𣬚鍂<EFBFBD>瑚<EFBFBD>撉<EFBFBD><EFBFBD>憟賬<EFBFBD>?
|
||
|
||
### 2. 摰峕㟲<E5B395><E39FB2>掩<EFBFBD>见<EFBFBD>銋?
|
||
224銵𣬚<EFBFBD>TypeScript蝐餃<EFBFBD>摰帋<EFBFBD>嚗峕項<EFBFBD>碶<EFBFBD><EFBFBD>港葵ASL璅∪<EFBFBD><EFBFBD><EFBFBD>㺭<EFBFBD>格芋<EFBFBD>页<EFBFBD>銝箏<EFBFBD>蝏剖<EFBFBD><EFBFBD>烐<EFBFBD>靘𥕢<EFBFBD><EFBFBD>𡁜<EFBFBD><EFBFBD><EFBFBD>抅蝖<EFBFBD><EFBFBD>?
|
||
|
||
### 3. React Query<72>嗆<EFBFBD><E59786>恣<EFBFBD>?
|
||
雿輻鍂React Query蝞∠<E89D9E><E288A0>滚𦛚蝡舐𠶖<E88890><F0A0B696><EFBFBD><EFBFBD>芸𢆡憭<F0A286A1><E686AD>嚗?
|
||
- <20>唳旿蝻枏<E89DBB>
|
||
- <20>齿鰵<E9BDBF>瑕<EFBFBD>
|
||
- Loading<6E>嗆<EFBFBD>?
|
||
- <20>躰秤憭<E7A7A4><E686AD>
|
||
- 銋鞱<E98A8B><E99EB1>湔鰵
|
||
|
||
### 4. 銵典<E98AB5>撉諹<E69289>
|
||
摰<EFBFBD><EFBFBD><EFBFBD><EFBFBD>”<EFBFBD>閖<EFBFBD>霂<EFBFBD><EFBFBD><EFBFBD>辷<EFBFBD>
|
||
- 敹<>‵摮埈挾撉諹<E69289>
|
||
- <20>踹漲<E8B8B9>𣂼<EFBFBD>
|
||
- <20>见末<E8A781><E69CAB><EFBFBD>霂舀<E99C82>蝷?
|
||
|
||
---
|
||
|
||
## <20>妒 瘚贝<E7989A><E8B49D><EFBFBD><EFBFBD>
|
||
|
||
### <20>见𢆡瘚贝<E7989A>
|
||
- <20>?<3F>滨垢<E6BBA8>滚𦛚<E6BB9A>臬𢆡<E887AC>𣂼<EFBFBD> (http://localhost:5173)
|
||
- <20>?ASL璅∪<E79285><E288AA>券▲<E588B8>典紡<E585B8>芣迤撣豢遬蝷?
|
||
- <20>?<3F>孵稬"AI<41>箄<EFBFBD><E7AE84><EFBFBD>讃"餈𥕦<E9A488>憿寧𤌍<E5AFA7>𡑒”憿?
|
||
- <20>?"<22>啣遣憿寧𤌍"<22>厰僼<E58EB0>枏<EFBFBD>Modal
|
||
- <20>?銵典<E98AB5><E585B8><EFBFBD><EFBFBD>匧<EFBFBD>畾菜迤撣詨極雿?
|
||
- <20>?蝑偦<E89D91>厰<EFBFBD><E58EB0>潮<EFBFBD>㗇𥋘<E39787>其漱鈭埝迤撣?
|
||
- <20>𩤃<EFBFBD> API靚<49>鍂敺<E98D82><E695BA>蝡臬鍳<E887AC>典<EFBFBD>瘚贝<E7989A>
|
||
|
||
### Lint璉<74><E79289>?
|
||
- <20>?<3F><><EFBFBD>㗇<EFBFBD>隞園<E99A9E>朞<EFBFBD>ESLint璉<74><E79289>?
|
||
- <20>?<3F><>ypeScript蝐餃<E89D90><E9A483>躰秤
|
||
|
||
---
|
||
|
||
## <20>𤦉 <20>屸𢒰<E5B1B8>芸㦛
|
||
|
||
### 憿寧𤌍<E5AFA7>𡑒”憿?
|
||
```
|
||
<EFBFBD>𢞖<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?
|
||
<EFBFBD>? <20><> 蝑偦<E89D91>厰★<E58EB0>桃恣<E6A183>? <20>?
|
||
<EFBFBD>? <20>𥕦遣<F0A595A6>𣬚恣<F0A3AC9A><E681A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>桃<EFBFBD><E6A183>厰★<E58EB0>? <20>?
|
||
<EFBFBD>? [<5B>啣遣憿寧𤌍] <20>?
|
||
<EFBFBD>鎿<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?
|
||
<EFBFBD>?憿寧𤌍<E5AFA7>滨妍 | PICOS | 憌擧聢 | <20>嗆<EFBFBD>?| <20>園𡢿 <20>?
|
||
<EFBFBD>?(Table撅閧內嚗峕𣈲<E5B395><F0A388B2><EFBFBD>憿? <20>?
|
||
<EFBFBD>婙<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?
|
||
```
|
||
|
||
### <20>𥕦遣憿寧𤌍Modal
|
||
```
|
||
<EFBFBD>𢞖<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?
|
||
<EFBFBD>? <20>𥕦遣蝑偦<E89D91>厰★<E58EB0>? [<5B>] <20>?
|
||
<EFBFBD>鎿<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?
|
||
<EFBFBD>? 憿寧𤌍<E5AFA7>滨妍: [__________________] <20>?
|
||
<EFBFBD>? <20>?
|
||
<EFBFBD>? PICOS<4F><53><EFBFBD> <20>? <20>?
|
||
<EFBFBD>? <20>𢞖<EFBFBD><F0A29E96><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>鐥<EFBFBD>
|
||
<EFBFBD>? <20>?P - 鈭箇黎: [____________] <20>? <20><><EFBFBD>
|
||
<EFBFBD>? <20>?I - 撟脤<E6929F>: [____________] <20>? <20><><EFBFBD>
|
||
<EFBFBD>? <20>?C - 撖寧<E69296>: [____________] <20>? <20><><EFBFBD>
|
||
<EFBFBD>? <20>?O - 蝏枏<E89D8F>: [____________] <20>? <20><><EFBFBD>
|
||
<EFBFBD>? <20>?S - <20>𠉛弦霈曇恣: [_______] <20>? <20><><EFBFBD>
|
||
<EFBFBD>? <20>婙<EFBFBD><E5A999><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>覀<EFBFBD>
|
||
<EFBFBD>? <20>?
|
||
<EFBFBD>? 蝥喳<E89DA5><E596B3><EFBFBD><EFBFBD>: [______________________] <20>?
|
||
<EFBFBD>? [______________________] <20>?
|
||
<EFBFBD>? <20>?
|
||
<EFBFBD>? <20>㘾膄<E398BE><E88684><EFBFBD>: [______________________] <20>?
|
||
<EFBFBD>? [______________________] <20>?
|
||
<EFBFBD>? <20>?
|
||
<EFBFBD>? 蝑偦<E89D91>厰<EFBFBD><E58EB0>?<3F>? <20>?
|
||
<EFBFBD>? <20>𢞖<EFBFBD><F0A29E96><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>鐥<EFBFBD>
|
||
<EFBFBD>? <20>?( ) <20><> 摰賣𠹭璅∪<E79285> <20>? <20><><EFBFBD>
|
||
<EFBFBD>? <20>? <20>萘<EFBFBD><E89098>刻<EFBFBD>嚗<EFBFBD><E59A97><EFBFBD>臬<EFBFBD>蝥喳<E89DA5>銝漤<E98A9D>餈? <20><><EFBFBD>
|
||
<EFBFBD>? <20>?(<28>? <20>吔<EFBFBD> <20><><EFBFBD>璅∪<E79285>嚗<EFBFBD>綫<EFBFBD>琜<EFBFBD> <20><><EFBFBD>
|
||
<EFBFBD>? <20>? 撟唾﹛<E594BE><EFB99B>&<EFBFBD><EFBC86><EFBFBD><EFBFBD>砍<EFBFBD><E7A08D>? <20><><EFBFBD>
|
||
<EFBFBD>? <20>?( ) <20><> 銝交聢璅∪<E79285> <20>? <20><><EFBFBD>
|
||
<EFBFBD>? <20>? 蝎曄<E89D8E><E69B84>刻<EFBFBD>嚗䔶<E59A97>霂<EFBFBD>捶<EFBFBD>? <20><><EFBFBD>
|
||
<EFBFBD>? <20>婙<EFBFBD><E5A999><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>覀<EFBFBD>
|
||
<EFBFBD>? <20>?
|
||
<EFBFBD>? [<5B>𡝗<EFBFBD>] [<5B>𥕦遣憿寧𤌍撟嗅紡<E59785>交<EFBFBD><E4BAA4>孫 <20>?
|
||
<EFBFBD>婙<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?
|
||
```
|
||
|
||
---
|
||
|
||
## <20><> <20>𡒊垢API<50><49><EFBFBD>
|
||
|
||
### 撌脣笆<E884A3>丕PI
|
||
<EFBFBD><EFBFBD><EFBFBD>𡅅PI<EFBFBD>亙藁撌脣銁<EFBFBD>滨垢摰䂿緵嚗<EFBFBD><EFBFBD><EFBFBD>𡒊垢<EFBFBD>臬𢆡<EFBFBD>𤾸<EFBFBD><EFBFBD>鞱<EFBFBD>靚<EFBFBD><EFBFBD>
|
||
|
||
1. `POST /api/v1/asl/projects` - <20>𥕦遣憿寧𤌍
|
||
2. `GET /api/v1/asl/projects` - <20>瑕<EFBFBD>憿寧𤌍<E5AFA7>𡑒”
|
||
3. `GET /api/v1/asl/projects/:id` - <20>瑕<EFBFBD>憿寧𤌍霂行<E99C82>
|
||
4. `PUT /api/v1/asl/projects/:id` - <20>湔鰵憿寧𤌍
|
||
5. `DELETE /api/v1/asl/projects/:id` - <20>𣳇膄憿寧𤌍
|
||
|
||
**<EFBFBD>𡒊垢<EFBFBD>嗆<EFBFBD>?*: 10銝服PI撌脣<E6928C><E884A3>琜<EFBFBD>Week 1嚗?
|
||
|
||
---
|
||
|
||
## <20><> Day 1摰峕<E691B0><E5B395>餌<EFBFBD>
|
||
|
||
Day 1隞餃𦛚**<2A>𣂼<EFBFBD>摰峕<E691B0>**嚗䔶蜓閬<E89C93><E996AC><EFBFBD>頣<EFBFBD>
|
||
|
||
1. <20>?摰峕㟲<E5B395><E39FB2>𤌍敶閧<E695B6><E996A7>?
|
||
2. <20>?蝐餃<E89D90>摰帋<E691B0>蝟餌<E89D9F>
|
||
3. <20>?API摰X<E691B0>蝡臬<E89DA1>鋆?
|
||
4. <20>?React Query Hooks
|
||
5. <20>?憿寧𤌍銵典<E98AB5>蝏<EFBFBD>辣嚗?*<2A>怎<EFBFBD><E6808E>厰<EFBFBD><E58EB0>潮<EFBFBD>㗇𥋘<E39787>?* 潃琜<E6BD83>
|
||
6. <20>?憿寧𤌍蝞∠<E89D9E>憿菟𢒰
|
||
7. <20>?頝舐眏<E88890>滨蔭
|
||
8. <20>?<3F>滨垢<E6BBA8>滚𦛚甇<F0A69B9A>虜餈鞱<E9A488>
|
||
|
||
**鈭桃<E988AD>**嚗?
|
||
- 潃?銝厩<E98A9D>蝑偦<E89D91>厰<EFBFBD><E58EB0>澆<EFBFBD><E6BE86>游<EFBFBD><E6B8B8>?
|
||
- 潃?摰<><E691B0><EFBFBD><EFBFBD>ypeScript蝐餃<E89D90>蝟餌<E89D9F>
|
||
- 潃?<3F>见末<E8A781><E69CAB>鍂<EFBFBD>瑚<EFBFBD>撉䕘<E69289>Tooltip<69><70><EFBFBD>霂<EFBFBD><E99C82><EFBFBD><EFBFBD>蝷綽<E89DB7>
|
||
|
||
---
|
||
|
||
## <20><> 銝衤<E98A9D>甇亥恣<E4BAA5>?
|
||
|
||
### Day 2: <20><>讃撖澆<E69296>憿?+ Excel璅⊥踎
|
||
**憸<>恣<EFBFBD>園𡢿**: 4撠𤩺𧒄
|
||
|
||
**隞餃𦛚**:
|
||
1. <20>𥕦遣<F0A595A6><E981A3>讃撖澆<E69296>憿菟𢒰
|
||
2. 摰䂿緵Excel銝𠹺<E98A9D>蝏<EFBFBD>辣嚗<E8BEA3><E59A97>摮䁅圾<E48185>琜<EFBFBD>銝滩氜<E6BBA9>矋<EFBFBD>
|
||
3. 摰䂿緵<E482BF><E7B7B5>讃憸<E8AE83><E686B8>銵冽聢
|
||
4. 摰䂿緵<E482BF>駁<EFBFBD><E9A781>餉<EFBFBD>
|
||
5. **<EFBFBD>𣂷<EFBFBD>Excel璅⊥踎銝贝蝸<EFBFBD>蠘<EFBFBD>** 潃?
|
||
|
||
**<EFBFBD><EFBFBD>辣**:
|
||
- `pages/LiteratureImport.tsx`
|
||
- `components/ExcelUploader.tsx`
|
||
- `components/LiteratureTable.tsx`
|
||
- `hooks/useLiteratures.ts`
|
||
- `public/templates/literature-import-template.xlsx`
|
||
|
||
---
|
||
|
||
**<EFBFBD>亙<EFBFBD>摰峕<EFBFBD><EFBFBD>園𡢿**: 2025-11-18 21:00
|
||
**銝衤<E98A9D><E8A1A4>嗆挾**: Week 2 Day 2 - <20><>讃撖澆<E69296>憿萄<E686BF><E89084>?
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|