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%)
1027 lines
32 KiB
Markdown
1027 lines
32 KiB
Markdown
# AI<41>箄<EFBFBD><E7AE84><EFBFBD>讃璅∪<E79285> - <20><><EFBFBD>臬<EFBFBD>箏𦛚皜<F0A69B9A><E79A9C>
|
||
|
||
> **<2A><>﹝<EFBFBD><EFB99D>𧋦嚗?* v1.2
|
||
> **<2A>𥕦遣<F0A595A6>交<EFBFBD>嚗?* 2025-11-21
|
||
> **蝏湔擪<E6B994><E693AA><EFBFBD>** AI<41>箄<EFBFBD><E7AE84><EFBFBD>讃撘<E8AE83><E69298>穃𣪧<E7A983>?
|
||
> **<2A><><EFBFBD>擧凒<E693A7>堆<EFBFBD>** 2025-11-23
|
||
> **<2A><>﹝<EFBFBD>桃<EFBFBD>嚗?* 霈啣<E99C88>MVP摰峕<E691B0><E5B395>𡡞<EFBFBD>閬<EFBFBD><E996AC><EFBFBD>𣇉<EFBFBD><F0A38789><EFBFBD><EFBFBD>舫䔮憸?
|
||
---
|
||
|
||
## <20><> <20><>﹝霂湔<E99C82>
|
||
|
||
<EFBFBD>祆<EFBFBD>獢<EFBFBD>扇敶𧭈I<EFBFBD>箄<EFBFBD><EFBFBD><EFBFBD>讃璅∪<EFBFBD><EFBFBD>決VP撘<EFBFBD><EFBFBD>穃<EFBFBD><EFBFBD>𣂼<EFBFBD>嚗<EFBFBD><EFBFBD><EFBFBD>啁<EFBFBD><EFBFBD><EFBFBD>閬<EFBFBD><EFBFBD><EFBFBD>碶<EFBFBD>銝滚蔣<EFBFBD>齿瓲敹<EFBFBD><EFBFBD><EFBFBD>賜<EFBFBD><EFBFBD><EFBFBD><EFBFBD>舫䔮憸塩<EFBFBD><EFBFBD><EFBFBD>鈭偦䔮憸睃<EFBFBD><EFBFBD>決VP蝔喳<EFBFBD>餈鞱<EFBFBD><EFBFBD>𠬍<EFBFBD><EFBFBD>劐<EFBFBD><EFBFBD><EFBFBD>漣<EFBFBD>鞉郊閫<EFBFBD><EFBFBD><EFBFBD>?
|
||
**敶枏<E695B6>MVP<56>嗆<EFBFBD>?*嚗?- <20>?<3F>詨<EFBFBD><E8A9A8>蠘<EFBFBD>摰峕㟲嚗<E39FB2><E59A97>隡罱<E99AA1>蝑偦<E89D91>争<EFBFBD>憭齿瓲嚗?- <20>?<3F>峕芋<E5B395>讠<EFBFBD><E8AEA0>匧虾<E58CA7>剁<EFBFBD>DeepSeek + Qwen嚗?- <20>?<3F>滚<EFBFBD>蝡航<E89DA1>靚<EFBFBD><E99D9A>朞<EFBFBD>
|
||
- <20>𩤃<EFBFBD> <20><>&<EFBFBD>?0%嚗䔶<E59A97>鈭𡒊𤌍<F0A1928A>?5%
|
||
- <20>𩤃<EFBFBD> <20>扯<EFBFBD>颲<EFBFBD><E9A2B2>嚗?99蝭<39>漲33-66<36><36><EFBFBD>
|
||
|
||
---
|
||
|
||
## <20>𣞁 隡睃<E99AA1>蝥?嚗朞捶<E69C9E>譍<EFBFBD><E8AD8D>吔<EFBFBD><E59094><EFBFBD>&<EFBFBD><EFBC86><EFBFBD>
|
||
|
||
### <20>桅<EFBFBD><E6A185>讛膩
|
||
|
||
**敶枏<E695B6><E69E8F>嗆<EFBFBD>?*嚗?- <20><>&<EFBFBD><EFBC86><EFBFBD>60%
|
||
- <20>格<EFBFBD>嚗尠竉85%
|
||
- 撌株<E6928C>嚗?5%
|
||
|
||
**敶勗<E695B6><E58B97><EFBFBD>凒**嚗?- <20>湔𦻖敶勗<E695B6><E58B97>冽<EFBFBD>撖農I蝑偦<E89D91>厩<EFBFBD><E58EA9>𦦵<EFBFBD>靽∩遙摨?- 憓𧼮<E68693>鈭箏極憭齿瓲撌乩<E6928C><E4B9A9>?- <20>航<EFBFBD>撖潸稲瞍讐<E79E8D><E8AE90>𤥁秤蝑?
|
||
**<EFBFBD>寞𧋦<EFBFBD>笔<EFBFBD>**嚗<>抅鈭?025-11-18瘚贝<E7989A><E8B49D>亙<EFBFBD>嚗㚁<E59A97>
|
||
1. **Prompt銝滚<E98A9D>皜<EFBFBD>苊**嚗鋫I撖?颲寧<E9A2B2><E5AFA7><EFBFBD><EFBFBD>"<22><><EFBFBD>閫<EFBFBD><E996AB>鈭箇掩銝滢<E98A9D><E6BBA2>?2. **蝻箏<E89DBB>Few-shot蝷箔<E89DB7>**嚗𡁏芋<F0A1818F>𧢲瓷<F0A7A2B2>匧<EFBFBD><E58CA7><EFBFBD><EFBFBD>靘页<E99D98><E9A1B5>曆誑<E69B86>𦠜𨘥<F0A6A09C><F0A898A5><EFBFBD>
|
||
3. **PICOS<4F><53><EFBFBD>璅∠<E79285>**嚗𡁶鍂<F0A181B6>瑁<EFBFBD><E79181>亦<EFBFBD><E4BAA6><EFBFBD><EFBFBD><EFBFBD>航<EFBFBD><E888AA>怎<EFBFBD>銝齿<E98A9D>
|
||
4. **<EFBFBD>脩<EFBFBD>璉<EFBFBD>瘚衤<EFBFBD><EFBFBD>𤩺<EFBFBD>**嚗𡁜蘨璉<E898A8>瘚讠<E7989A>霈箔<E99C88>銝<EFBFBD><E98A9D>湛<EFBFBD>敹賜裦鈭<E8A3A6>蔭靽∪漲<E288AA>釶ICO撌桀<E6928C>
|
||
|
||
---
|
||
|
||
### 隡睃<E99AA1><E79D83>寞<EFBFBD>1嚗鎄ew-shot蝷箔<E89DB7>
|
||
|
||
**<EFBFBD>格<EFBFBD>**嚗𡁜銁Prompt銝剜溶<E5899C>?-5銝芷<E98A9D>韐券<E99F90>蝷箔<E89DB7>
|
||
|
||
**摰墧鴌甇仿炊**嚗?
|
||
#### Step 1: 霈曇恣蝷箔<E89DB7>蝏𤘪<E89D8F>
|
||
```
|
||
瘥譍葵蝷箔<EFBFBD><EFBFBD><EFBFBD>鉄嚗?1. <20><>讃<EFBFBD><E8AE83><EFBFBD><EFBFBD>峕<EFBFBD>閬<EFBFBD><E996AC>蝎曄<E89D8E><E69B84><EFBFBD><EFBFBD>
|
||
2. PICOS<4F><53><EFBFBD>
|
||
3. 蝥喳<E89DA5>/<2F>㘾膄<E398BE><E88684><EFBFBD>
|
||
4. 甇<>&<EFBFBD><EFBC86>ế<EFBFBD>剔<EFBFBD><E58994>頣<EFBFBD>include/exclude嚗?5. 霂衣<E99C82><E8A1A3><EFBFBD>綫<EFBFBD><E7B6AB><EFBFBD>蝔?```
|
||
|
||
#### Step 2: <20>㗇𥋘蝷箔<E89DB7>蝐餃<E89D90>
|
||
```
|
||
蝷箔<EFBFBD>1嚗𡁏<EFBFBD>蝖桀<EFBFBD>蝥喳<EFBFBD> - 摰𣬚<E691B0><F0A3AC9A>寥<EFBFBD><E5AFA5><EFBFBD><EFBFBD>侨ICOS
|
||
蝷箔<EFBFBD>2嚗𡁏<EFBFBD>蝖桀<EFBFBD><EFBFBD>㘾膄 - 鈭箇黎銝滚龪<E6BB9A>?蝷箔<E89DB7>3嚗𡁏<E59A97>蝖桀<E89D96><E6A180>㘾膄 - <20>𠉛弦霈曇恣銝滨泵
|
||
蝷箔<EFBFBD>4嚗朞器<EFBFBD>峕<EFBFBD><EFBFBD>?- <20>典<EFBFBD><E585B8>寥<EFBFBD>嚗䔶<E59A97>摨𠉛熙<F0A0899B>?蝷箔<E89DB7>5嚗朞器<E69C9E>峕<EFBFBD><E5B395>?- <20>衤撮<E8A1A4>寥<EFBFBD>嚗䔶<E59A97>摨娍<E691A8><E5A88D>?```
|
||
|
||
#### Step 3: 蝻硋<E89DBB>蝷箔<E89DB7>
|
||
```
|
||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>摰墧<EFBFBD>霂閙<EFBFBD>靘衤葉<EFBFBD><EFBFBD><EFBFBD><EFBFBD>笔<EFBFBD>憭梯揖獢<EFBFBD><EFBFBD>
|
||
蝖桐<EFBFBD>蝷箔<EFBFBD>閬<EFBFBD><EFBFBD>撣貉<EFBFBD><EFBFBD><EFBFBD>ế<EFBFBD>剖㦤<EFBFBD>?```
|
||
|
||
#### Step 4: <20><><EFBFBD><EFBFBD>訐rompt
|
||
```
|
||
雿滨蔭嚗颹ackend/prompts/asl/screening/v1.1.0-fewshot.txt
|
||
<EFBFBD>澆<EFBFBD>嚗?---
|
||
## 蝷箔<E89DB7>1嚗𡁏<E59A97>蝖桃熙<E6A183>?<3F>鞉<EFBFBD><E99E89>柴<EFBFBD>𡢅<EFBFBD>...
|
||
<EFBFBD>辥ICOS<EFBFBD>𡢅<EFBFBD>...
|
||
<EFBFBD>𣂼ế<EFBFBD>准<EFBFBD>𡢅<EFBFBD>include
|
||
<EFBFBD>𣂼<EFBFBD><EFBFBD>𨬭<EFBFBD>𡢅<EFBFBD>...
|
||
---
|
||
```
|
||
|
||
**憸<>恣<EFBFBD>𣂼<EFBFBD>**嚗𡁜<E59A97>蝖桃<E89D96> +10-15%嚗?0% <20>?70-75%嚗?
|
||
**憸<>恣<EFBFBD>埈𧒄**嚗?憭?
|
||
---
|
||
|
||
### 隡睃<E99AA1><E79D83>寞<EFBFBD>2嚗䥪ICOS<4F><53><EFBFBD><EFBFBD>𡒊&<F0A1928A>?
|
||
**<2A>格<EFBFBD>**嚗𡁜葬<F0A1819C>呸I<E591B8>游<EFBFBD>蝖桃<E89D96>閫<EFBFBD>鍂<EFBFBD>瑞<EFBFBD>PICOS<4F><53><EFBFBD>
|
||
|
||
**摰墧鴌甇仿炊**嚗?
|
||
#### Step 1: 憓𧼮撩PICOS颲枏<E9A2B2>
|
||
```typescript
|
||
// 敶枏<E695B6>颲枏<E9A2B2>
|
||
picoCriteria: {
|
||
P: "2<>讠<EFBFBD>撠輻<E692A0><E8BCBB>𣂷犖<F0A382B7><E78A96><EFBFBD>?,
|
||
I: "SGLT2<54>穃<EFBFBD><E7A983>?,
|
||
...
|
||
}
|
||
|
||
// 隡睃<E99AA1><E79D83>舘<EFBFBD><E88898>?picoCriteria: {
|
||
P: {
|
||
description: "2<>讠<EFBFBD>撠輻<E692A0><E8BCBB>𣂷犖<F0A382B7><E78A96><EFBFBD>?,
|
||
keywords: ["2<>讠<EFBFBD>撠輻<E692A0>", "<22>𣂷犖", "T2DM"],
|
||
mustInclude: ["蝟硋倏<E7A18B>?],
|
||
mustExclude: ["1<>?, "<22>輻咱", "<22>鍦<EFBFBD>撟?]
|
||
},
|
||
...
|
||
}
|
||
```
|
||
|
||
#### Step 2: <20>沌rompt銝剜<E98A9D>蝖株<E89D96>瘙?```
|
||
<EFBFBD>沌rompt銝剜溶<EFBFBD>𩤃<EFBFBD>
|
||
- <20>𡒊&<F0A1928A>芯<EFBFBD><E88AAF>喲睸霂滚<E99C82>憿餃枂<E9A483>?- <20>𡒊&<F0A1928A>芯<EFBFBD><E88AAF>喲睸霂滢<E99C82><E6BBA2>賢枂<E8B3A2>?- <20>典<EFBFBD><E585B8>寥<EFBFBD><E5AFA5><EFBFBD>ế<EFBFBD>剜<EFBFBD><E5899C><EFBFBD><EFBFBD>憒?<3F>典<EFBFBD><E585B8>寥<EFBFBD>"<22>誩㭠<E8AAA9><E3ADA0>隞<EFBFBD>銋<EFBFBD><E98A8B>
|
||
```
|
||
|
||
#### Step 3: 靚<>㟲<EFBFBD>滨垢銵典<E98AB5>
|
||
```
|
||
<EFBFBD>汽itleScreeningSettings.tsx銝哨<E98A9D>
|
||
- 銝箸<E98A9D>銝枉ICO摮埈挾瘛餃<E7989B>"<22>喲睸霂齿<E99C82><E9BDBF>?<3F>蠘<EFBFBD>
|
||
- 瘛餃<E7989B>"敹<>◆<EFBFBD><E29786>鉄"<22>?敹<>◆<EFBFBD>㘾膄"<22><><EFBFBD>蝥折<E89DA5>厰★
|
||
- <20>𣂷<EFBFBD><F0A382B7><EFBFBD><EFBFBD>璅⊥踎
|
||
```
|
||
|
||
**憸<>恣<EFBFBD>𣂼<EFBFBD>**嚗𡁜<E59A97>蝖桃<E89D96> +5-10%嚗?5% <20>?80-85%嚗?
|
||
**憸<>恣<EFBFBD>埈𧒄**嚗?憭?
|
||
---
|
||
|
||
### 隡睃<E99AA1><E79D83>寞<EFBFBD>3嚗𡁶蔭靽∪漲<E288AA><E6BCB2><EFBFBD>潸<EFBFBD>隡?
|
||
**<2A>格<EFBFBD>**嚗𡁏<E59A97>擃䀹芋<E480B9>见ế<E8A781>剔<EFBFBD>蝵桐縑摨佗<E691A8><E4BD97>誩<EFBFBD>銝滨&摰𡁏<E691B0>?
|
||
**摰墧鴌甇仿炊**嚗?
|
||
#### Step 1: <20><><EFBFBD>蝵桐縑摨血<E691A8>撣?```sql
|
||
-- <20>亥砭蝵桐縑摨血<E691A8>撣?SELECT
|
||
ROUND(ds_confidence * 10) / 10 as confidence_range,
|
||
COUNT(*) as count
|
||
FROM asl_schema.screening_results
|
||
GROUP BY confidence_range
|
||
ORDER BY confidence_range;
|
||
```
|
||
|
||
#### Step 2: 靚<>㟲Prompt閬<74><E996AC>
|
||
```
|
||
<EFBFBD>沌rompt銝剜<EFBFBD>蝖殷<EFBFBD>
|
||
- 隞<>銋<EFBFBD><E98A8B><EFBFBD>萎<EFBFBD>摨磰砲蝏坔枂擃条蔭靽∪漲嚗?.8-1.0嚗?- 隞<>銋<EFBFBD><E98A8B><EFBFBD>萎<EFBFBD>摨磰砲蝏坔枂銝剔蔭靽∪漲嚗?.5-0.8嚗?- 隞<>銋<EFBFBD><E98A8B><EFBFBD>萎<EFBFBD>摨磰砲蝏坔枂雿𡒊蔭靽∪漲嚗?-0.5嚗?- 雿𦒘<E99BBF>0.7<EFBFBD><EFBFBD>䌊<EFBFBD>冽<EFBFBD>霈唬蛹"<22><>閬<EFBFBD>犖撌亙<E6928C><E4BA99>?
|
||
```
|
||
|
||
#### Step 3: 隡睃<E99AA1><E79D83>脩<EFBFBD>璉<EFBFBD>瘚?```typescript
|
||
// 敶枏<E695B6>嚗𡁜蘨璉<E898A8>瘚讠<E7989A>霈箔<E99C88>銝<EFBFBD><E98A9D>?hasConflict = (dsConclusion !== qwenConclusion);
|
||
|
||
// 隡睃<E99AA1>嚗𡁜<E59A97><F0A1819C>删蔭靽∪漲撌桀<E6928C>璉<EFBFBD>瘚?hasConflict =
|
||
(dsConclusion !== qwenConclusion) || // 蝏栞捏銝滢<E98A9D><E6BBA2>? (Math.abs(dsConfidence - qwenConfidence) > 0.3) || // 蝵桐縑摨血榆撘<E6A686>之
|
||
(dsJudgments.P !== qwenJudgments.P && important.includes('P')); // <20>喲睸PICO銝滢<E98A9D><E6BBA2>?```
|
||
|
||
**憸<>恣<EFBFBD>𣂼<EFBFBD>**嚗𡁜<E59A97>蝒<EFBFBD><E89D92>瘚见<E7989A>蝖桃<E89D96> +10%嚗<><E59A97>撠烐<E692A0>璉<EFBFBD>
|
||
|
||
**憸<>恣<EFBFBD>埈𧒄**嚗?.5憭?
|
||
---
|
||
|
||
### 隡睃<E99AA1><E79D83>寞<EFBFBD>4嚗𡁏<E59A97>霂蓥<E99C82>餈凋誨
|
||
|
||
**<2A>格<EFBFBD>**嚗𡁏<E59A97>蝏剜<E89D8F>霂訫<E99C82>隡睃<E99AA1>嚗𣬚凒<F0A3AC9A>啣<EFBFBD>蝖桃<E89D96><E6A183>?5%
|
||
|
||
**摰墧鴌甇仿炊**嚗?
|
||
#### Step 1: 雿輻鍂<E8BCBB>唳<EFBFBD>瘚贝<E7989A><E8B49D>𡁏𧋦
|
||
```bash
|
||
cd backend
|
||
npm run test:llm
|
||
|
||
# <20>𣇉凒<F0A38789>亥<EFBFBD>銵?npx ts-node scripts/test-llm-screening.ts
|
||
```
|
||
|
||
#### Step 2: <20><><EFBFBD>憭梯揖獢<E68F96><E78DA2>
|
||
```
|
||
撖嫣<EFBFBD>瘥譍葵憭梯揖獢<EFBFBD><EFBFBD>嚗?1. 霈啣<E99C88>AI<41><49>ế<EFBFBD>剔<EFBFBD><E58994>?2. 霈啣<E99C88>甇<EFBFBD>&蝑娍<E89D91>
|
||
3. <20><><EFBFBD>撌桀<E6928C><E6A180>笔<EFBFBD>
|
||
4. 靚<>㟲Prompt<70>𣇉內靘?```
|
||
|
||
#### Step 3: A/B瘚贝<E7989A>
|
||
```
|
||
瘚贝<EFBFBD>銝滚<EFBFBD><EFBFBD><EFBFBD>𧋦<EFBFBD><EFBFBD>rompt嚗?- v1.0.0-mvp嚗<70><E59A97><EFBFBD>㵪<EFBFBD>60%嚗?- v1.1.0-fewshot嚗?Few-shot嚗?- v1.2.0-picos-enhanced嚗?PICOS<4F>𡒊&<F0A1928A>吔<EFBFBD>
|
||
- v1.3.0-confidence嚗?蝵桐縑摨虫<E691A8><E899AB>吔<EFBFBD>
|
||
```
|
||
|
||
#### Step 4: 霈啣<E99C88>瘚贝<E7989A>蝏𤘪<E89D8F>
|
||
```
|
||
<EFBFBD>𥕦遣瘚贝<EFBFBD><EFBFBD>亙<EFBFBD>嚗?- <20><>&<EFBFBD><EFBC86><EFBFBD><EFBFBD>𡝗𤩅蝥?- <20><><EFBFBD><EFBFBD>砍笆瘥?- 憭梯揖獢<E68F96><E78DA2><EFBFBD><EFBFBD><EFBFBD>
|
||
- <20><>蝏<EFBFBD>綫<EFBFBD>鞟<EFBFBD><E99E9F>?```
|
||
|
||
**憸<>恣<EFBFBD>埈𧒄**嚗?-2憭抬<E686AD>餈凋誨嚗?
|
||
---
|
||
|
||
### 韐券<E99F90>隡睃<E99AA1><E79D83>餉恣
|
||
|
||
**憸<>恣<EFBFBD>𣂼<EFBFBD>**嚗?0% <20>?85-90%
|
||
|
||
**憸<>恣<EFBFBD>餉<EFBFBD>埈𧒄**嚗?-5憭?
|
||
**韐蠘提鈭?*嚗鋫I撌亦<E6928C>撣?+ <20>餃郎銝枏振
|
||
|
||
**撉峕𤣰<E5B395><F0A4A3B0><EFBFBD>**嚗?- <20>?<3F><>&<EFBFBD>?<3F>?85%
|
||
- <20>?<3F>峕芋<E5B395>衤<EFBFBD><E8A1A4>渡<EFBFBD> <20>?80%
|
||
- <20>?鈭箏極憭齿瓲<E9BDBF>笔<EFBFBD> <20>?20%
|
||
- <20>?蝵桐縑摨血<E691A8>撣<EFBFBD><E692A3><EFBFBD><EFBFBD><EFBFBD>擃条蔭靽∪漲<E288AA>?0%+嚗?
|
||
---
|
||
|
||
## <20>椬 隡睃<E99AA1>蝥?嚗𡁏<E59A97>扯<EFBFBD>隡睃<E99AA1>嚗<EFBFBD>僎<EFBFBD>穃<EFBFBD><E7A983><EFBFBD><EFBFBD>
|
||
|
||
### <20>桅<EFBFBD><E6A185>讛膩
|
||
|
||
**敶枏<E695B6><E69E8F>嗆<EFBFBD>?*嚗?- 憭<><E686AD><EFBFBD>孵<EFBFBD>嚗帋葡銵䕘<E98AB5>銝<EFBFBD>蝭<EFBFBD>𦻖銝<F0A6BB96>蝭<EFBFBD><E89DAD>
|
||
- 憭<><E686AD><EFBFBD>笔漲嚗?0-20蝘?蝭<><E89DAD>DeepSeek + Qwen撟嗉<E6929F>嚗?- <20>餉<EFBFBD>埈𧒄嚗?99蝭<39>漲33-66<36><36><EFBFBD>
|
||
|
||
**<2A>格<EFBFBD>**嚗?- 憭<><E686AD><EFBFBD>孵<EFBFBD>嚗?-5撟嗅<E6929F>
|
||
- <20>餉<EFBFBD>埈𧒄嚗?99蝭<39>漲10-20<32><30><EFBFBD>嚗<EFBFBD><E59A97><EFBFBD>?<3F>㵪<EFBFBD>
|
||
|
||
**敶勗<E695B6><E58B97><EFBFBD>凒**嚗?- <20>冽<EFBFBD>雿㯄<E99BBF>嚗<EFBFBD><E59A97>敺<EFBFBD>𧒄<EFBFBD>湧鵭嚗?- 鈭烐<E988AD><E78390>⊥<EFBFBD><E28AA5>穿<EFBFBD><E7A9BF>踵𧒄<E8B8B5>游<EFBFBD><E6B8B8>刻<EFBFBD>皞琜<E79A9E>
|
||
|
||
---
|
||
|
||
### 隡睃<E99AA1><E79D83>寞<EFBFBD>嚗𡁜僎<F0A1819C>穃<EFBFBD><E7A983>?
|
||
**摰墧鴌甇仿炊**嚗?
|
||
#### Step 1: 摰㕑<E691B0>撟嗅<E6929F><E59785>批<EFBFBD>摨?```bash
|
||
cd backend
|
||
npm install p-limit
|
||
```
|
||
|
||
#### Step 2: 靽格㺿蝑偦<E89D91>㗇<EFBFBD><E39787>?```typescript
|
||
// <20><>辣嚗颹ackend/src/modules/asl/services/screeningService.ts
|
||
|
||
import pLimit from 'p-limit';
|
||
|
||
// <20>?processLiteraturesInBackground 銝凋耨<E5878B>?
|
||
// <20>?敶枏<E695B6>嚗帋葡銵<E891A1><E98AB5><EFBFBD>?for (const literature of literatures) {
|
||
await llmScreeningService.dualModelScreening(...);
|
||
}
|
||
|
||
// <20>?隡睃<E99AA1><E79D83>𠬍<EFBFBD>撟嗅<E6929F>憭<EFBFBD><E686AD>
|
||
const concurrency = 3; // 3銝芸僎<E88AB8>?const limit = pLimit(concurrency);
|
||
|
||
const tasks = literatures.map((literature, index) =>
|
||
limit(async () => {
|
||
try {
|
||
console.log(`\n<><6E> 撘<>憪见<E686AA><E8A781><EFBFBD><EFBFBD><EFBFBD>?${index + 1}/${literatures.length}`);
|
||
|
||
// 靚<>鍂LLM蝑偦<E89D91>? const screeningResult = await llmScreeningService.dualModelScreening(...);
|
||
|
||
// 靽嘥<E99DBD>蝏𤘪<E89D8F>
|
||
await prisma.aslScreeningResult.create({ data: screeningResult });
|
||
|
||
// <20>湔鰵餈𥕦漲
|
||
await updateTaskProgress(...);
|
||
|
||
console.log(`<EFBFBD>?<3F><>讃 ${index + 1}/${literatures.length} 憭<><E686AD><EFBFBD>𣂼<EFBFBD>`);
|
||
} catch (error) {
|
||
console.error(`<EFBFBD>?<3F><>讃 ${index + 1}/${literatures.length} 憭<><E686AD>憭梯揖:`, error);
|
||
// 蝏抒賒憭<E8B392><E686AD><EFBFBD>嗡<EFBFBD><E597A1><EFBFBD>讃
|
||
}
|
||
})
|
||
);
|
||
|
||
await Promise.all(tasks);
|
||
```
|
||
|
||
#### Step 3: 瘛餃<E7989B>餈𥕦漲<F0A595A6>湔鰵隡睃<E99AA1>
|
||
```typescript
|
||
// 敶枏<E695B6><E69E8F>桅<EFBFBD>嚗𡁻<E59A97>撟嗅<E6929F>銝钅<E98A9D>蝜<EFBFBD>凒<EFBFBD>唳㺭<E594B3>桀<EFBFBD>
|
||
// 閫<><E996AB><EFBFBD>寞<EFBFBD>嚗𡁏鸌<F0A1818F>𤩺凒<F0A4A9BA>唳<EFBFBD>雿輻鍂<E8BCBB><E98D82><EFBFBD>霈⊥㺭<E28AA5>?
|
||
let processedCount = 0;
|
||
let successCount = 0;
|
||
let conflictCount = 0;
|
||
let failedCount = 0;
|
||
|
||
// 瘥?蝭<><E89DAD>瘥?0蝘埝凒<E59F9D>唬<EFBFBD>甈⊥㺭<E28AA5>桀<EFBFBD>
|
||
const updateInterval = setInterval(async () => {
|
||
await prisma.aslScreeningTask.update({
|
||
where: { id: taskId },
|
||
data: {
|
||
processedItems: processedCount,
|
||
successItems: successCount,
|
||
conflictItems: conflictCount,
|
||
failedItems: failedCount,
|
||
}
|
||
});
|
||
}, 10000); // 10蝘埝凒<E59F9D>唬<EFBFBD>甈?
|
||
// 憭<><E686AD>摰峕<E691B0><E5B395>擧<EFBFBD><E693A7>?clearInterval(updateInterval);
|
||
```
|
||
|
||
#### Step 4: 瘛餃<E7989B><E9A483>鞉<EFBFBD>靽脲擪
|
||
```typescript
|
||
// <20>脫迫API<50>鞉<EFBFBD>
|
||
const API_RATE_LIMITS = {
|
||
'deepseek-chat': { rpm: 30, tpm: 100000 }, // 瘥誩<E798A5><E8AAA9>?0甈? 'qwen-max': { rpm: 60, tpm: 200000 },
|
||
};
|
||
|
||
// <20>冽<EFBFBD><E586BD><EFBFBD><EFBFBD>游僎<E6B8B8>烐㺭
|
||
function calculateOptimalConcurrency(model: string): number {
|
||
const limit = API_RATE_LIMITS[model];
|
||
// 靽嘥<E99DBD>隡啗恣嚗帋蝙<E5B88B>券<EFBFBD><E588B8>嗥<EFBFBD>50%
|
||
return Math.floor(limit.rpm / 20); // DeepSeek: 1-2, Qwen: 3
|
||
}
|
||
|
||
const concurrency = Math.min(
|
||
calculateOptimalConcurrency('deepseek-chat'),
|
||
calculateOptimalConcurrency('qwen-max')
|
||
); // <20>𡝗<EFBFBD>撠誩<E692A0>潘<EFBFBD>蝥?
|
||
```
|
||
|
||
#### Step 5: 瘛餃<E7989B><E9A483>躰秤<E8BAB0>滩<EFBFBD>
|
||
```typescript
|
||
async function processWithRetry(
|
||
literature: any,
|
||
maxRetries: number = 2
|
||
): Promise<any> {
|
||
for (let attempt = 1; attempt <= maxRetries; attempt++) {
|
||
try {
|
||
return await llmScreeningService.dualModelScreening(...);
|
||
} catch (error) {
|
||
console.error(`<EFBFBD>?撠肽<E692A0> ${attempt}/${maxRetries} 憭梯揖:`, error);
|
||
if (attempt === maxRetries) throw error;
|
||
// 蝑匧<E89D91><E58CA7>𡡞<EFBFBD>霂𤏪<E99C82><F0A48FAA><EFBFBD>㺭<EFBFBD><E3BAAD><EFBFBD>選<EFBFBD>
|
||
await new Promise(resolve => setTimeout(resolve, 1000 * attempt));
|
||
}
|
||
}
|
||
}
|
||
```
|
||
|
||
**憸<>恣<EFBFBD>𣂼<EFBFBD>**嚗?- 憭<><E686AD><EFBFBD>笔漲嚗?<3F>齿<EFBFBD><E9BDBF>?- 199蝭<39><E89DAD><EFBFBD>殷<EFBFBD>33-66<36><36><EFBFBD> <20>?10-20<32><30><EFBFBD>
|
||
- <20>冽<EFBFBD>雿㯄<E99BBF>嚗𡁏遬<F0A1818F>埈㺿<E59F88>?
|
||
**憸<>恣<EFBFBD>埈𧒄**嚗?.5-1憭?
|
||
**韐蠘提鈭?*嚗𡁜<E59A97>蝡臬<E89DA1><E887AC>?
|
||
**撉峕𤣰<E5B395><F0A4A3B0><EFBFBD>**嚗?- <20>?199蝭<39><E89DAD><EFBFBD>桃<EFBFBD><E6A183>?<3F>?20<32><30><EFBFBD>
|
||
- <20>?API靚<49>鍂銝滩圻<E6BBA9>煾<EFBFBD>瘚?- <20>?<3F>躰秤<E8BAB0><E7A7A4><EFBFBD>憓𧼮<E68693>
|
||
- <20>?餈𥕦漲<F0A595A6>曄內甇<E585A7>虜
|
||
|
||
---
|
||
|
||
## <20>叚 隡睃<E99AA1>蝥?嚗𡁶鍂<F0A181B6>瑚<EFBFBD>撉䔶<E69289><E494B6>?
|
||
### <20>桅<EFBFBD>皜<EFBFBD><E79A9C>
|
||
|
||
#### 1. 瘚讛<E7989A><E8AE9B>冽<EFBFBD>扯<EFBFBD>霅血<E99C85>
|
||
```
|
||
[Violation]'setTimeout' handler took 72ms
|
||
```
|
||
|
||
**<2A>桅<EFBFBD><E6A185>笔<EFBFBD>**嚗?- React蝏<74>辣皜脫<E79A9C><E884AB>埈𧒄
|
||
- 銵冽聢<E586BD>唳旿<E594B3>誩之
|
||
|
||
**閫<><E996AB><EFBFBD>寞<EFBFBD>**嚗?- 雿輻鍂<E8BCBB>𡁏<EFBFBD>皛𡁜𢆡嚗Ǒreact-window`嚗?- 隡睃<E99AA1>銵冽聢皜脫<E79A9C>嚗<EFBFBD><E59A97>撠睲<E692A0>敹<EFBFBD><E695B9><EFBFBD><EFBFBD>e-render嚗?- 雿輻鍂`useMemo`蝻枏<EFBFBD>霈∠<EFBFBD>蝏𤘪<EFBFBD>
|
||
|
||
**憸<>恣<EFBFBD>埈𧒄**嚗?.5憭?
|
||
---
|
||
|
||
#### 2. <20>牐摯霈∪<E99C88>雿蹱𧒄<E8B9B1>?
|
||
**<2A>桅<EFBFBD>**嚗𡁶鍂<F0A181B6>瑚<EFBFBD><E7919A>仿<EFBFBD>餈㗛<E9A488>閬<EFBFBD><E996AC>憭帋<E686AD>
|
||
|
||
**閫<><E996AB><EFBFBD>寞<EFBFBD>**嚗?```typescript
|
||
// 霈∠<E99C88>憸<EFBFBD>摯<EFBFBD>園𡢿
|
||
const avgTimePerLit = (Date.now() - task.startedAt) / task.processedItems;
|
||
const remainingLits = task.totalItems - task.processedItems;
|
||
const estimatedTimeRemaining = avgTimePerLit * remainingLits;
|
||
|
||
// <20>曄內
|
||
<div>
|
||
憸<>恣<EFBFBD>拐<EFBFBD><E68B90>園𡢿: {formatDuration(estimatedTimeRemaining)}
|
||
</div>
|
||
```
|
||
|
||
**憸<>恣<EFBFBD>埈𧒄**嚗?.5憭?
|
||
---
|
||
|
||
#### 3. <20>惩<EFBFBD><E683A9>滚<EFBFBD><E6BB9A><EFBFBD><EFBFBD><EFBFBD>格遬蝷?
|
||
**<2A>桅<EFBFBD>**嚗𡁶鍂<F0A181B6>瑚<EFBFBD><E7919A>仿<EFBFBD>AI甇<49>銁憭<E98A81><E686AD><EFBFBD>芰<EFBFBD><E88AB0><EFBFBD>讃
|
||
|
||
**閫<><E996AB><EFBFBD>寞<EFBFBD>**嚗?```typescript
|
||
// <20>?screeningService.ts 銝?await prisma.aslScreeningTask.update({
|
||
where: { id: taskId },
|
||
data: {
|
||
currentLiteratureTitle: literature.title, // <20>啣<EFBFBD>摮埈挾
|
||
currentLiteratureId: literature.id,
|
||
}
|
||
});
|
||
|
||
// <20>滨垢<E6BBA8>曄內
|
||
<div>
|
||
敶枏<E695B6>憭<EFBFBD><E686AD>: {task.currentLiteratureTitle}
|
||
</div>
|
||
```
|
||
|
||
**憸<>恣<EFBFBD>埈𧒄**嚗?.5憭?
|
||
---
|
||
|
||
#### 4. 銵冽聢撠誩<E692A0>撟閖<E6929F><E99696><EFBFBD>
|
||
|
||
**<2A>桅<EFBFBD>**嚗𡁜<E59A97>撅誩<E69285>銝𡃏”<F0A1838F>澆<EFBFBD>摰賢漲銝漤<E98A9D><E6BCA4><EFBFBD>
|
||
|
||
**閫<><E996AB><EFBFBD>寞<EFBFBD>**嚗?- 雿輻鍂<E8BCBB>滚<EFBFBD>撘誩<E69298>撅<EFBFBD>
|
||
- 瘛餃<E7989B>"蝝批<E89D9D>璅∪<E79285>"<22><>揢
|
||
- 蝘餃𢆡蝡臭蝙<E887AD>典㨃<E585B8><E3A883><EFBFBD>撅<EFBFBD>隞<EFBFBD>𤜯銵冽聢
|
||
|
||
**憸<>恣<EFBFBD>埈𧒄**嚗?憭?
|
||
---
|
||
|
||
## <20>鰊 隡睃<E99AA1>蝥?嚗鍃xcel撖澆枂隡睃<E99AA1>
|
||
|
||
### <20>桅<EFBFBD><E6A185>讛膩
|
||
|
||
**敶枏<E695B6><E69E8F>嗆<EFBFBD>?*嚗?- 撖澆枂<E6BE86>孵<EFBFBD>嚗𡁜<E59A97>蝡舐<E89DA1><E88890>琜<EFBFBD>`xlsx`摨橒<E691A8>
|
||
- <20><>鍂<EFBFBD>唳旿<E594B3>𧶏<EFBFBD><5000<30>?- <20><><EFBFBD><EFBFBD>笔漲嚗?1000<30>∠漲2-3蝘?
|
||
**<2A>格<EFBFBD><E6A0BC>嗆<EFBFBD>?*嚗<><E59A97><EFBFBD>唳旿<E594B3>?5000<30>⊥<EFBFBD><E28AA5><EFBFBD>閬<EFBFBD><E996AC><EFBFBD><EFBFBD>聢撘𤩺𧒄嚗㚁<E59A97>
|
||
- 撖澆枂<E6BE86>孵<EFBFBD>嚗𡁜<E59A97>蝡舐<E89DA1><E88890>?+ OSS摮睃<E691AE>
|
||
- <20><>鍂<EFBFBD>唳旿<E594B3>𧶏<EFBFBD><F0A7B68F>𣳇<EFBFBD><F0A3B387>?- <20>舀<EFBFBD>憭齿<E686AD><E9BDBF>澆<EFBFBD>嚗𡁜<E59A97>Sheet<65><74>㦛銵具<E98AB5><E585B7>甅撘誩<E69298><E8AAA9>?
|
||
**閫血<E996AB><E8A180>∩辣**嚗?- <20>閙活撖澆枂<E6BE86>唳旿<E594B3>?>5000<30>?- <20><>閬<EFBFBD><E996AC><EFBFBD><EFBFBD>xcel<65>澆<EFBFBD>嚗<EFBFBD><E59A97>Sheet<65><74>㦛銵函<E98AB5>嚗?- <20>冽<EFBFBD><E586BD>漤<EFBFBD><E6BCA4>滨垢撖澆枂<E6BE86>⊿▼
|
||
|
||
---
|
||
|
||
### 隡睃<E99AA1><E79D83>寞<EFBFBD>嚗𡁜<E59A97>蝡臬紡<E887AC>?OSS摮睃<E691AE>
|
||
|
||
**摰墧鴌甇仿炊**嚗?
|
||
#### Step 1: <20>𡒊垢摰㕑<E691B0>Excel<65><6C><EFBFBD>摨?```bash
|
||
cd backend
|
||
npm install exceljs
|
||
```
|
||
|
||
#### Step 2: 摰䂿緵<E482BF>𡒊垢撖澆枂<E6BE86>滚𦛚
|
||
```typescript
|
||
// backend/src/modules/asl/services/exportService.ts
|
||
import ExcelJS from 'exceljs';
|
||
import { storage } from '@/common/storage';
|
||
import { logger } from '@/common/logging';
|
||
|
||
export async function exportScreeningResults(projectId: string, filter: string) {
|
||
// 1. <20>亥砭<E4BAA5>唳旿
|
||
const results = await prisma.aslScreeningResult.findMany({
|
||
where: buildWhereClause(projectId, filter),
|
||
include: { literature: true },
|
||
});
|
||
|
||
// 2. <20><><EFBFBD>Excel嚗<6C><E59A97>摮䀝葉嚗? const workbook = new ExcelJS.Workbook();
|
||
const worksheet = workbook.addWorksheet('蝑偦<E89D91>厩<EFBFBD><E58EA9>?);
|
||
|
||
// 霈曄蔭銵典仍
|
||
worksheet.columns = [
|
||
{ header: '摨誩噡', key: 'index', width: 6 },
|
||
{ header: '<27><>讃<EFBFBD><E8AE83><EFBFBD>', key: 'title', width: 50 },
|
||
// ... <20>游<EFBFBD><E6B8B8>? ];
|
||
|
||
// 憛怠<E6869B><E680A0>唳旿
|
||
results.forEach((result, idx) => {
|
||
worksheet.addRow({
|
||
index: idx + 1,
|
||
title: result.literature.title,
|
||
// ... <20>游<EFBFBD>摮埈挾
|
||
});
|
||
});
|
||
|
||
// 3. 頧砌蛹Buffer
|
||
const buffer = await workbook.xlsx.writeBuffer();
|
||
|
||
// 4. 潃?銝𠹺<E98A9D><F0A0B9BA>記SS嚗<53>蝙<EFBFBD>典像<E585B8>啣<EFBFBD><E595A3>冽<EFBFBD><E586BD>∴<EFBFBD>
|
||
const key = `asl/exports/${projectId}/${Date.now()}.xlsx`;
|
||
const url = await storage.upload(key, Buffer.from(buffer));
|
||
|
||
// 5. 霈啣<E99C88><E595A3>亙<EFBFBD>
|
||
logger.info('Excel exported', { projectId, recordCount: results.length, url });
|
||
|
||
return {
|
||
url,
|
||
filename: `screening-results-${Date.now()}.xlsx`,
|
||
recordCount: results.length,
|
||
};
|
||
}
|
||
```
|
||
|
||
#### Step 3: 摰䂿緵撖澆枂API
|
||
```typescript
|
||
// backend/src/modules/asl/controllers/exportController.ts
|
||
export async function exportResults(
|
||
request: FastifyRequest<{
|
||
Params: { projectId: string };
|
||
Querystring: { filter?: string };
|
||
}>,
|
||
reply: FastifyReply
|
||
) {
|
||
try {
|
||
const { projectId } = request.params;
|
||
const filter = request.query.filter || 'all';
|
||
|
||
// 撖澆枂撟嗡<E6929F>隡惩<E99AA1>OSS
|
||
const result = await exportService.exportScreeningResults(projectId, filter);
|
||
|
||
return reply.send({
|
||
success: true,
|
||
data: result,
|
||
});
|
||
} catch (error) {
|
||
logger.error('Export failed', { error });
|
||
return reply.status(500).send({
|
||
success: false,
|
||
error: '撖澆枂憭梯揖',
|
||
});
|
||
}
|
||
}
|
||
```
|
||
|
||
#### Step 4: <20>滨垢靚<E59EA2>鍂
|
||
```typescript
|
||
// <20>滨垢
|
||
const handleExportLarge = async () => {
|
||
try {
|
||
message.loading('甇<>銁<EFBFBD><E98A81><EFBFBD>Excel嚗諹窈蝔滚<E89D94>?..', 0);
|
||
|
||
// 靚<>鍂<EFBFBD>𡒊垢撖澆枂API
|
||
const { data } = await aslApi.exportResults(projectId, { filter: 'all' });
|
||
|
||
message.destroy();
|
||
message.success(`<EFBFBD>𣂼<EFBFBD>撖澆枂 ${data.recordCount} <20>∟扇敶𧄧);
|
||
|
||
// <20>朞<EFBFBD>OSS URL銝贝蝸
|
||
window.open(data.url, '_blank');
|
||
} catch (error) {
|
||
message.destroy();
|
||
message.error('撖澆枂憭梯揖');
|
||
}
|
||
};
|
||
```
|
||
|
||
#### Step 5: OSS<53><53>辣皜<E8BEA3><E79A9C>嚗<EFBFBD>虾<EFBFBD>㚁<EFBFBD>
|
||
```typescript
|
||
// 摰𡁏𧒄隞餃𦛚嚗𡁏<E59A97><F0A1818F>?憭拙<E686AD><E68B99><EFBFBD>紡<EFBFBD>箸<EFBFBD>隞?import { jobQueue } from '@/common/jobs';
|
||
|
||
jobQueue.schedule('cleanup-exports', '0 2 * * *', async () => {
|
||
const sevenDaysAgo = new Date(Date.now() - 7 * 24 * 60 * 60 * 1000);
|
||
|
||
// <20>堒枂撟嗅<E6929F><E59785>方<EFBFBD><E696B9><EFBFBD><EFBFBD>隞? const files = await storage.list('asl/exports/');
|
||
for (const file of files) {
|
||
if (file.lastModified < sevenDaysAgo) {
|
||
await storage.delete(file.key);
|
||
}
|
||
}
|
||
|
||
logger.info('Cleaned up old export files');
|
||
});
|
||
```
|
||
|
||
**憸<>恣<EFBFBD>𣂼<EFBFBD>**嚗?- <20>舀<EFBFBD><E88880>𣳇<EFBFBD><F0A3B387>唳旿<E594B3>?- <20>舀<EFBFBD>憭齿<E686AD><E9BDBF>澆<EFBFBD>嚗<EFBFBD><E59A97>Sheet<65><74>㦛銵具<E98AB5><E585B7>甅撘𧶏<E69298>
|
||
- 銝滚<E98A9D><E6BB9A>典<EFBFBD>蝡航<E89DA1>皞?
|
||
**憸<>恣<EFBFBD>埈𧒄**嚗?-2憭?
|
||
**韐蠘提鈭?*嚗𡁜<E59A97>蝡臬<E89DA1><E887AC>?
|
||
**撉峕𤣰<E5B395><F0A4A3B0><EFBFBD>**嚗?- <20>?<3F>臬紡<E887AC>?5000<30>⊥㺭<E28AA5>?- <20>?<3F><>辣銝𠹺<E98A9D><F0A0B9BA>記SS
|
||
- <20>?<3F>滨垢<E6BBA8>朞<EFBFBD>URL銝贝蝸
|
||
- <20>?蝚血<E89D9A>鈭穃<E988AD><E7A983>蠘<EFBFBD><E8A098><EFBFBD><EFBFBD>雿輻鍂撟喳蝱摮睃<E691AE><E79D83>滚𦛚嚗?
|
||
---
|
||
|
||
## <20>㩞 隡睃<E99AA1>蝥?嚗𡁏沲<F0A1818F><E6B2B2><EFBFBD><EFBFBD>吔<EFBFBD>鈭穃<E988AD><E7A983><EFBFBD><EFBFBD>
|
||
|
||
### <20>桅<EFBFBD>皜<EFBFBD><E79A9C>
|
||
|
||
#### 1. 撘<>郊隞餃𦛚<E9A483>芯蝙<E88AAF>冽<EFBFBD><E586BD>舫<EFBFBD><E888AB>?
|
||
**敶枏<E695B6><E69E8F>嗆<EFBFBD>?*嚗?- 蝑偦<E89D91>劐遙<E58A90>∪銁<E288AA>𤾸蝱蝥輻<E89DA5>銝剜<E98A9D>銵?- <20>滚𦛚<E6BB9A>滚鍳隡帋腺憭曹遙<E69BB9>?
|
||
**<EFBFBD>格<EFBFBD><EFBFBD>嗆<EFBFBD>?*嚗?- 雿輻鍂Bull<6C>笔<EFBFBD>嚗㇌edis嚗?- 隞餃𦛚<E9A483><F0A69B9A><EFBFBD><EFBFBD>?- <20>舀<EFBFBD><E88880><EFBFBD><EFBFBD>撘誩<E69298><E8AAA9>?
|
||
**閫<><E996AB><EFBFBD>寞<EFBFBD>**嚗?```typescript
|
||
// 雿輻鍂撟喳蝱<E596B3>𣂷<EFBFBD><F0A382B7><EFBFBD>obQueue
|
||
import { jobQueue } from '@/common/jobs';
|
||
|
||
// <20>𥕦遣隞餃𦛚
|
||
await jobQueue.push('asl:screening', {
|
||
projectId,
|
||
literatures,
|
||
config,
|
||
});
|
||
|
||
// Worker憭<72><E686AD>
|
||
jobQueue.process('asl:screening', async (job) => {
|
||
await screeningService.processLiteratures(job.data);
|
||
});
|
||
```
|
||
|
||
**憸<>恣<EFBFBD>埈𧒄**嚗?-2憭?
|
||
---
|
||
|
||
#### 2. <20>䭾鱏<E4ADBE>寧賒隡?
|
||
**<2A>桅<EFBFBD>**嚗帋遙<E5B88B>∩葉<E288A9>剖<EFBFBD><E58996><EFBFBD>閬<EFBFBD><E996AC><EFBFBD>啣<EFBFBD>憪?
|
||
**閫<><E996AB><EFBFBD>寞<EFBFBD>**嚗?```typescript
|
||
// 璉<><E79289>交糓<E4BAA4>行<EFBFBD><E8A18C>芸<EFBFBD><E88AB8>鞟<EFBFBD>隞餃𦛚
|
||
const existingTask = await prisma.aslScreeningTask.findFirst({
|
||
where: {
|
||
projectId,
|
||
status: 'running',
|
||
}
|
||
});
|
||
|
||
if (existingTask) {
|
||
// <20>W<EFBFBD>隞餃𦛚
|
||
const processedLiteratureIds = await getProcessedLiteratureIds(existingTask.id);
|
||
const remainingLiteratures = literatures.filter(
|
||
lit => !processedLiteratureIds.includes(lit.id)
|
||
);
|
||
await resumeTask(existingTask.id, remainingLiteratures);
|
||
} else {
|
||
// <20>𥕦遣<F0A595A6>唬遙<E594AC>? await startNewTask(projectId, literatures);
|
||
}
|
||
```
|
||
|
||
**憸<>恣<EFBFBD>埈𧒄**嚗?憭?
|
||
---
|
||
|
||
#### 3. <20>䭾<EFBFBD><E4ADBE>祆綉<E7A586>?
|
||
**<2A>桅<EFBFBD>**嚗𡁏<E59A97>瘜閙綉<E99699>詛PI靚<49>鍂<EFBFBD>鞉𧋦
|
||
|
||
**閫<><E996AB><EFBFBD>寞<EFBFBD>**嚗?```typescript
|
||
// 瘛餃<E7989B><E9A483>鞉𧋦隡啁<E99AA1>
|
||
interface CostEstimate {
|
||
totalTokens: number;
|
||
estimatedCost: number; // USD
|
||
processingTime: number; // seconds
|
||
}
|
||
|
||
function estimateCost(literatures: Literature[]): CostEstimate {
|
||
const avgTokensPerLit = 1500; // <20><><EFBFBD>+<2B>䁅<EFBFBD>蝥?500 tokens
|
||
const totalTokens = literatures.length * avgTokensPerLit * 2; // 2銝芣芋<E88AA3>?
|
||
const deepseekCost = (totalTokens / 1000) * 0.001; // $0.001/1K tokens
|
||
const qwenCost = (totalTokens / 1000) * 0.002; // $0.002/1K tokens
|
||
|
||
return {
|
||
totalTokens,
|
||
estimatedCost: deepseekCost + qwenCost,
|
||
processingTime: literatures.length * 15, // 15蝘?蝭? };
|
||
}
|
||
|
||
// <20>滨垢<E6BBA8>曄內
|
||
const estimate = estimateCost(literatures);
|
||
<Alert>
|
||
憸<>恣瘨<E681A3><E798A8>? {estimate.totalTokens} tokens
|
||
憸<>恣韐寧鍂: ${estimate.estimatedCost.toFixed(2)}
|
||
憸<>恣<EFBFBD>園𡢿: {formatDuration(estimate.processingTime)}
|
||
</Alert>
|
||
```
|
||
|
||
**憸<>恣<EFBFBD>埈𧒄**嚗?.5憭?
|
||
---
|
||
|
||
## <20><> <20><><EFBFBD>臬<EFBFBD>箏𦛚隡睃<E99AA1>蝥抒畆<E68A92>?
|
||
| <20>箏𦛚憿?| 敶勗<E695B6><E58B97><EFBFBD>凒 | 蝝扯翰<E689AF>?| 憸<>恣<EFBFBD>埈𧒄 | ROI | 隡睃<E99AA1>蝥?|
|
||
|--------|---------|--------|---------|-----|--------|
|
||
| **Prompt隡睃<E99AA1>** | <20>詨<EFBFBD>韐券<E99F90> | 擃?| 4-5憭?| 擃?| P1 <20>𣞁 |
|
||
| **撟嗅<E6929F>憭<EFBFBD><E686AD>** | <20>冽<EFBFBD>雿㯄<E99BBF> | 銝?| 0.5-1憭?| 擃?| P2 <20>椬 |
|
||
| **隡啗恣<E59597>拐<EFBFBD><E68B90>園𡢿** | <20>冽<EFBFBD>雿㯄<E99BBF> | 銝?| 0.5憭?| 銝?| P3 <20>叚 |
|
||
| **敶枏<E695B6><E69E8F><EFBFBD>讃<EFBFBD>曄內** | <20>冽<EFBFBD>雿㯄<E99BBF> | 雿?| 0.5憭?| 銝?| P3 <20>叚 |
|
||
| **瘚讛<E7989A><E8AE9B>冽<EFBFBD>扯<EFBFBD>** | <20>冽<EFBFBD>雿㯄<E99BBF> | 雿?| 0.5憭?| 雿?| P4 <20>㩞 |
|
||
| **瘨<><E798A8><EFBFBD>笔<EFBFBD>** | <20>嗆<EFBFBD>蝔喳<E89D94><E596B3>?| 雿?| 1-2憭?| 銝?| P4 <20>㩞 |
|
||
| **<2A>剔<EFBFBD>蝏凋<E89D8F>** | <20>冽<EFBFBD>雿㯄<E99BBF> | 雿?| 1憭?| 銝?| P4 <20>㩞 |
|
||
| **<2A>鞉𧋦<E99E89>批<EFBFBD>** | 餈鞱𨯫 | 雿?| 0.5憭?| 雿?| P4 <20>㩞 |
|
||
| **撠誩<E692A0>撟閖<E6929F><E99696><EFBFBD>** | <20>冽<EFBFBD>雿㯄<E99BBF> | 雿?| 1憭?| 雿?| P4 <20>㩞 |
|
||
|
||
---
|
||
|
||
## <20><>儭?撱箄悅<E7AE84><E68285>圾<EFBFBD>喲◇摨?
|
||
### <20>嗆挾1嚗朞捶<E69C9E>譍<EFBFBD><E8AD8D>吔<EFBFBD>敹<EFBFBD>◆嚗?```
|
||
<EFBFBD>園𡢿嚗?<3F>?隞餃𦛚嚗? 1. Few-shot蝷箔<E89DB7>霈曇恣嚗?憭抬<E686AD>
|
||
2. PICOS<4F><53><EFBFBD><EFBFBD>𡒊&<F0A1928A>吔<EFBFBD>2憭抬<E686AD>
|
||
3. 蝵桐縑摨虫<E691A8><E899AB>吔<EFBFBD>0.5憭抬<EFBFBD>
|
||
4. 瘚贝<E7989A>餈凋誨嚗?-2憭抬<E686AD>
|
||
<EFBFBD>格<EFBFBD>嚗𡁜<EFBFBD>蝖桃<EFBFBD> 60% <20>?85%
|
||
```
|
||
|
||
### <20>嗆挾2嚗𡁏<E59A97>扯<EFBFBD>隡睃<E99AA1>嚗<EFBFBD>綫<EFBFBD>琜<EFBFBD>
|
||
```
|
||
<EFBFBD>園𡢿嚗?-2憭?隞餃𦛚嚗? 1. 撟嗅<E6929F>憭<EFBFBD><E686AD>嚗?.5-1憭抬<E686AD>
|
||
2. 餈𥕦漲隡睃<E99AA1>嚗?.5憭抬<EFBFBD>
|
||
<EFBFBD>格<EFBFBD>嚗?99蝭?33-66<36><36><EFBFBD> <20>?10-20<32><30><EFBFBD>
|
||
```
|
||
|
||
### <20>嗆挾3嚗帋<E59A97>撉䔶<E69289><E494B6>吔<EFBFBD><E59094>舫<EFBFBD>㚁<EFBFBD>
|
||
```
|
||
<EFBFBD>園𡢿嚗?-3憭?隞餃𦛚嚗? 1. 隡啗恣<E59597>拐<EFBFBD><E68B90>園𡢿嚗?.5憭抬<EFBFBD>
|
||
2. 敶枏<E695B6><E69E8F><EFBFBD>讃<EFBFBD>曄內嚗?.5憭抬<EFBFBD>
|
||
3. 瘚讛<E7989A><E8AE9B>冽<EFBFBD>扯<EFBFBD>嚗?.5憭抬<EFBFBD>
|
||
4. 撠誩<E692A0>撟閖<E6929F><E99696><EFBFBD>嚗?憭抬<E686AD>
|
||
<EFBFBD>格<EFBFBD>嚗𡁏<EFBFBD><EFBFBD><EFBFBD>鍂<EFBFBD>瑚<EFBFBD>撉?```
|
||
|
||
### <20>嗆挾4嚗𡁏沲<F0A1818F><E6B2B2><EFBFBD><EFBFBD>吔<EFBFBD><E59094>踵<EFBFBD>嚗?```
|
||
<EFBFBD>園𡢿嚗?-4憭?隞餃𦛚嚗? 1. 瘨<><E798A8><EFBFBD>笔<EFBFBD><E7AC94><EFBFBD><EFBFBD>嚗?-2憭抬<E686AD>
|
||
2. <20>剔<EFBFBD>蝏凋<E89D8F>嚗?憭抬<E686AD>
|
||
3. <20>鞉𧋦<E99E89>批<EFBFBD>嚗?.5憭抬<EFBFBD>
|
||
<EFBFBD>格<EFBFBD>嚗𡁶<EFBFBD>鈭抒㴓憓<EFBFBD>停蝏?```
|
||
|
||
---
|
||
|
||
## <20><> <20>喟<EFBFBD>霈啣<E99C88>
|
||
|
||
### 2025-11-21嚗𡁏綫餈蠘捶<E8A098>譍<EFBFBD><E8AD8D>吔<EFBFBD>隡睃<E99AA1>摰峕<E691B0>Week 4<>蠘<EFBFBD>
|
||
|
||
**<2A>喟<EFBFBD>鈭?*嚗𡁶鍂<F0A181B6>?
|
||
**<2A>喟<EFBFBD><E5969F><EFBFBD>捆**嚗?- 撠<>rompt隡睃<E99AA1><E79D83><EFBFBD>僎<EFBFBD>穃<EFBFBD><E7A983><EFBFBD><EFBFBD>隡睃<E99AA1>隞餃𦛚霈啣<E99C88>銝箸<E98A9D><E7AEB8>臬<EFBFBD>箏𦛚
|
||
- 隡睃<E99AA1>摰峕<E691B0>Week 4<>蠘<EFBFBD>嚗<EFBFBD><E59A97><EFBFBD>𨅯<EFBFBD>蝷箝<E89DB7><E7AE9D><EFBFBD>霈~<E99C88><EFBD9E>紡<EFBFBD>綽<EFBFBD>
|
||
- 敺<>eek 4摰峕<E691B0><E5B395>𠬍<EFBFBD><F0A0AC8D>齿覔<E9BDBF>桀<EFBFBD><E6A180><EFBFBD><EFBFBD>閬<EFBFBD><E996AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>臬<EFBFBD>箏𦛚
|
||
|
||
**<2A><>眏**嚗?1. MVP<56>詨<EFBFBD><E8A9A8>蠘<EFBFBD>撌脣虾<E884A3>剁<EFBFBD><E58981>臭誑<E887AD><E8AA91><EFBFBD><EFBFBD>𣂼<EFBFBD><F0A382BC>賡𡡒<E8B3A1>?2. 蝏蠘恣<E8A098><E681A3>紡<EFBFBD>箏<EFBFBD><E7AE8F>賣糓<E8B3A3>冽<EFBFBD>撘粹<E69298>瘙?3. 韐券<E99F90>隡睃<E99AA1><E79D83>臭誑<E887AD>典<EFBFBD><E585B8>賢<EFBFBD><E8B3A2>游<EFBFBD>餈凋誨
|
||
|
||
**<2A>𡒊賒霈∪<E99C88>**嚗?- Week 4<>蠘<EFBFBD>摰峕<E691B0><E5B395>舘<EFBFBD>隡?- <20>寞旿<E5AF9E>冽<EFBFBD><E586BD>漤<EFBFBD><E6BCA4>喳<EFBFBD>隡睃<E99AA1>隡睃<E99AA1>蝥?
|
||
---
|
||
|
||
---
|
||
|
||
## <20><> 隡睃<E99AA1>蝥?嚗𡁜<E59A97><F0A1819C><EFBFBD><EFBFBD>蝑𥟇<E89D91><F0A59F87>臬<EFBFBD>箏𦛚嚗𠃊EW嚗?
|
||
> **<2A>湔鰵<E6B994>交<EFBFBD>**嚗?025-11-22
|
||
> **敶枏<E695B6><E69E8F>嗆<EFBFBD>?*嚗鋽ay 1-3撌脣<E6928C><E884A3>琜<EFBFBD><E7909C>𡁶鍂<F0A181B6>賢<EFBFBD>撅<EFBFBD>瓲敹<E793B2><E695B9>
|
||
|
||
### <20>箏𦛚1嚗鐭ougat韐券<E99F90>璉<EFBFBD>瘚𧢲㦤<F0A7A2B2>嗥撩憭?
|
||
**<2A>桅<EFBFBD><E6A185>讛膩**嚗?- 敶枏<E695B6>Nougat<61>𣂼<EFBFBD><F0A382BC>𠬍<EFBFBD>韐券<E99F90>霂<EFBFBD><E99C82>銝槁undefined`
|
||
- 撖潸稲<E6BDB8><E7A8B2><EFBFBD>侨DF<44>賡<EFBFBD>蝥批<E89DA5>PyMuPDF嚗峕<E59A97>瘜訫<E7989C><E8A8AB><EFBFBD>⏚<EFBFBD>沐ougat<61><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD>隡睃飵
|
||
|
||
**敶勗<E695B6>**嚗?- <20>䭾<EFBFBD><E4ADBE>瑕<EFBFBD>Markdown<77>澆<EFBFBD><E6BE86><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>冽<EFBFBD>
|
||
- Section-Aware Prompt蝑𣇉裦<F0A38789><E8A3A6><EFBFBD><EFBFBD>𤘪<EFBFBD><F0A498AA>?- <20>航<EFBFBD>敶勗<E695B6><E58B97><EFBFBD>&<EFBFBD><EFBC86><EFBFBD>蝏𤘪<E89D8F><F0A498AA>碶縑<E7A2B6>臭腺憭梧<E686AD>
|
||
|
||
**<EFBFBD>寞𧋦<EFBFBD>笔<EFBFBD>**嚗?- Python extraction_service餈𥪜<E9A488><F0A5AA9C><EFBFBD>ougat蝏𤘪<E89D8F>蝻箏<E89DBB>`quality`摮埈挾
|
||
- <20>𤥁捶<F0A4A581>讛<EFBFBD><E8AE9B><EFBFBD><EFBFBD>餉<EFBFBD><E9A489>芸<EFBFBD><E88AB8>?
|
||
**閫<><E996AB><EFBFBD>寞<EFBFBD>**嚗?1. 璉<><E79289>匝extraction_service/services/pdf_processor.py`<60><>ougat憭<74><E686AD><EFBFBD>餉<EFBFBD>
|
||
2. 摰䂿緵韐券<E99F90>霂<EFBFBD><E99C82><EFBFBD>箏<EFBFBD>嚗<EFBFBD>抅鈭舘<E988AD><E88898>怎蔭靽∪漲<E288AA><E6BCB2>arkdown摰峕㟲<E5B395>抒<EFBFBD>嚗?3. 瘚贝<E7989A>撟嗉<E6929F>隡䁅捶<E48185>誯<EFBFBD><E8AAAF>?
|
||
**隡睃<E99AA1>蝥?*嚗帋葉
|
||
**憸<>恣<EFBFBD>埈𧒄**嚗𡁜<E59A97>憭?
|
||
**憌𡡞埯**嚗帋<E59A97>
|
||
|
||
---
|
||
|
||
### <20>箏𦛚2嚗鐝VP<56>芸<EFBFBD><E88AB8>賢<EFBFBD><E8B3A2><EFBFBD><EFBFBD>霂<EFBFBD><E99C82>Full-text Validation嚗?
|
||
**<2A>桅<EFBFBD><E6A185>讛膩**嚗?- 韐券<E99F90>靽嗪<E99DBD>蝑𣇉裦銝剛挽霈∩<E99C88>"<22><>挾<EFBFBD>𣂼<EFBFBD> + <20>冽<EFBFBD>撉諹<E69289>"
|
||
- MVP<56><50>鍂"銝<>甈⊥<E79488>批<EFBFBD><E689B9><EFBFBD><EFBFBD><EFBFBD>?蝑𣇉裦嚗諹歲餈<E6ADB2><E9A488><EFBFBD>冽<EFBFBD>撉諹<E69289>甇仿炊
|
||
|
||
**敶勗<E695B6>**嚗?- <20>航<EFBFBD>摮睃銁"Lost in the Middle"<22>啗情撖潸稲<E6BDB8><E7A8B2><EFBFBD>瞍?- <20>喲睸摮埈挾<E59F88><E68CBE><EFBFBD>蝖桃<E89D96><E6A183>航<EFBFBD><E888AA>芾噢<E88ABE>?2%<25>格<EFBFBD>
|
||
|
||
**撱箄悅**嚗?1. MVP銝羓瑪<E7BE93>𠬍<EFBFBD><F0A0AC8D>園<EFBFBD><E59C92><EFBFBD>&<EFBFBD><EFBC86>㺭<EFBFBD>?2. 憒<><E68692><EFBFBD>喲睸摮埈挾<E59F88><E68CBE>&<EFBFBD>?90%嚗<><E59A97><EFBFBD>賢<EFBFBD><E8B3A2><EFBFBD><EFBFBD>霂?3. 隡睃<E99AA1><E79D83><EFBFBD>笆3銝芣瓲敹<E793B2><E695B9>畾蛛<E795BE><E89B9B>𤩺㦤<F0A4A9BA>𡝗䲮瘜𨰻<E7989C><F0A8B0BB>𤩅瘜𨰻<E7989C><F0A8B0BB><EFBFBD><EFBFBD>𨅯<EFBFBD><F0A885AF>湔<EFBFBD>改<EFBFBD>
|
||
|
||
**隡睃<E99AA1>蝥?*嚗帋<E59A97>嚗<EFBFBD><E59A97>MVP瘚贝<E7989A>撉諹<E69289>嚗?
|
||
**憸<>恣<EFBFBD>埈𧒄**嚗?憭?
|
||
**<2A>∩辣閫血<E996AB>**嚗𡁜<E59A97><F0A1819C>桀<EFBFBD>畾萄<E795BE>蝖桃<E89D96><90%
|
||
|
||
---
|
||
|
||
### <20>箏𦛚3嚗鋴ochrane<6E><65><EFBFBD><EFBFBD>芸<EFBFBD>頧踝<E9A0A7>MVP蝞<50><E89D9E>吔<EFBFBD>
|
||
|
||
**<2A>桅<EFBFBD><E6A185>讛膩**嚗?- MVP銝箔<E98A9D><E7AE94>誩<EFBFBD>Prompt<70>踹漲<E8B8B9>峕<EFBFBD><E5B395>穿<EFBFBD><E7A9BF>芸<EFBFBD>頧瘠ochrane RoB 2.0<EFBFBD><EFBFBD><EFBFBD>
|
||
- <20>航<EFBFBD>敶勗<E695B6>"韐券<E99F90>霂<EFBFBD>摯"摮埈挾<E59F88><E68CBE>ế<EFBFBD>剖<EFBFBD>蝖格<E89D96>?
|
||
**敶勗<E695B6>**嚗?- 韐券<E99F90>霂<EFBFBD>摯摮埈挾<E59F88>航<EFBFBD>銝滚<E98A9D>銝亥馬
|
||
- 蝻箏<E89DBB>蝏煺<E89D8F><E785BA><EFBFBD><EFBFBD><EFBFBD>斗<EFBFBD><E69697>?
|
||
**撱箄悅**嚗?1. MVP瘚贝<E7989A><E8B49D>舘<EFBFBD>隡啣<E99AA1>蝖桃<E89D96>
|
||
2. 憒<><E68692>"韐券<E99F90>霂<EFBFBD>摯"摮埈挾<E59F88><E68CBE>&<EFBFBD>?85%嚗屸<E59A97><E5B1B8>啣<EFBFBD>頧瘠ochrane<6E><65><EFBFBD>
|
||
3. <20>朞<EFBFBD><E69C9E>滨蔭撘<E894AD><E69298>喟<EFBFBD>瘣餅綉<E9A485>塚<EFBFBD>PromptBuilder撌脫𣈲<E884AB><F0A388B2><EFBFBD>
|
||
|
||
**隡睃<E99AA1>蝥?*嚗帋<E59A97>嚗<EFBFBD><E59A97>MVP瘚贝<E7989A>撉諹<E69289>嚗?
|
||
**憸<>恣<EFBFBD>埈𧒄**嚗𡁜<E59A97>憭抬<E686AD>撌脫<E6928C>隞<EFBFBD><E99A9E>嚗䔶<E59A97><E494B6><EFBFBD><EFBFBD>滨蔭嚗?
|
||
**<2A>∩辣閫血<E996AB>**嚗朞捶<E69C9E>讛<EFBFBD>隡啣<E99AA1>畾萄<E795BE>蝖桃<E89D96><85%
|
||
|
||
---
|
||
|
||
### <20>箏𦛚4嚗鎄ew-shot Examples鋡怎宏<E6808E>?
|
||
**<2A>桅<EFBFBD><E6A185>讛膩**嚗?- 銝箔<E98A9D>隡睃<E99AA1>Prompt<70>踹漲嚗<E6BCB2><E59A97>74KB<4B>滩秐52KB嚗㚁<E59A97>蝘駁膄鈭<E88684>ew-shot examples
|
||
- <20>航<EFBFBD>敶勗<E695B6>璅∪<E79285>撖?Lost in the Middle"<22>箸艶<E7AEB8><E889B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>?
|
||
**敶勗<E695B6>**嚗?- 璅∪<E79285>蝻箏<E89DBB><E7AE8F><EFBFBD><EFBFBD><EFBFBD><EFBFBD>靘页<E99D98><E9A1B5>W笆憭齿<E686AD><E9BDBF>箸艶<E7AEB8>嗅虾<E59785>質”<E8B3AA>唬<EFBFBD>蝔喳<E89D94>
|
||
|
||
**撱箄悅**嚗?1. MVP瘚贝<E7989A><E8B49D>𤾸<EFBFBD><F0A4BEB8>𣂼仃韐交<E99F90>靘?2. 憒<><E68692><EFBFBD>𤑳緵<F0A491B3>孵<EFBFBD>璅∪<E79285><E288AA><EFBFBD>仃韐交<E99F90>靘页<E99D98>憒<EFBFBD>縑<EFBFBD>臬銁銝剝𡢿雿滨蔭嚗㚁<E59A97><E39A81>齿鰵瘛餃<E7989B>Few-shot
|
||
3. <20><>鍂蝎曄<E89D8E><E69B84>㇅ew-shot嚗?-2銝芣瓲敹<E793B2><E695B9>靘页<E99D98><E9A1B5>屸<EFBFBD><E5B1B8><EFBFBD>䔉<EFBFBD><E49489><EFBFBD><EFBFBD>湔<EFBFBD>靘页<E99D98>
|
||
|
||
**隡睃<E99AA1>蝥?*嚗帋<E59A97>嚗<EFBFBD><E59A97>MVP瘚贝<E7989A>撉諹<E69289>嚗?
|
||
**憸<>恣<EFBFBD>埈𧒄**嚗?憭?
|
||
**<2A>∩辣閫血<E996AB>**嚗𡁶鸌摰𡁜㦤<F0A1819C>臬仃韐亦<E99F90>>30%
|
||
|
||
---
|
||
|
||
### <20>箏𦛚5嚗𡁏鸌憭<E9B88C><E686AD><EFBFBD>滚𦛚<E6BB9A>芸<EFBFBD><E88AB8>堆<EFBFBD>Day 4敺<34><E695BA><EFBFBD>𡢅<EFBFBD>
|
||
|
||
**<2A>桅<EFBFBD><E6A185>讛膩**嚗?- 敶枏<E695B6><E69E8F>芣<EFBFBD><E88AA3>閧<EFBFBD>PDF<44><46>LM憭<4D><E686AD><EFBFBD>滚𦛚
|
||
- 蝻箏<E89DBB><E7AE8F>寥<EFBFBD>憭<EFBFBD><E686AD><EFBFBD><EFBFBD><EFBFBD>摨西<E691A8>頦芥<E9A0A6><E88AA5>僎<EFBFBD>烐綉<E78390>?
|
||
**敶勗<E695B6>**嚗?- <20>䭾<EFBFBD><E4ADBE>寥<EFBFBD>憭<EFBFBD><E686AD>憭𡁶<E686AD><F0A181B6><EFBFBD>讃
|
||
- 蝻箏<E89DBB>隞餃𦛚<E9A483>笔<EFBFBD><E7AC94>諹<EFBFBD>摨衣恣<E8A1A3>?
|
||
**閫<><E996AB><EFBFBD>寞<EFBFBD>**嚗?- Day 4撘<34><E69298>鬔AsyncTaskService`<EFBFBD>䈣FulltextScreeningService`
|
||
- <20><><EFBFBD>`p-queue`摰䂿緵撟嗅<E6929F><E59785>批<EFBFBD>
|
||
- 摰䂿緵餈𥕦漲<F0A595A6>噼<EFBFBD><E599BC><EFBFBD>仃韐仿<E99F90>霂?
|
||
**隡睃<E99AA1>蝥?*嚗𡁻<E59A97>嚗㇄ay 4霈∪<E99C88>銝哨<E98A9D>
|
||
**憸<>恣<EFBFBD>埈𧒄**嚗?憭?
|
||
**<2A>嗆<EFBFBD>?*嚗朞恣<E69C9E>雴葉
|
||
|
||
---
|
||
|
||
### <20>箏𦛚6嚗𡁜<E59A97>蝡狹I<E78BB9>芸<EFBFBD><E88AB8>𡢅<EFBFBD>Day 5-6敺<36><E695BA><EFBFBD>𡢅<EFBFBD>
|
||
|
||
**<2A>桅<EFBFBD><E6A185>讛膩**嚗?- <20>冽<EFBFBD>憭滨<E686AD><E6BBA8><EFBFBD><EFBFBD>蝡狹I摰<49><E691B0><EFBFBD>芸<EFBFBD><E88AB8>?- <20><>𡠺霈曄蔭憿萸<E686BF><E890B8>極雿𨅯蝱憿萸<E686BF><E890B8><EFBFBD><EFBFBD>𣈯△<F0A388AF><E296B3><EFBFBD>閫<EFBFBD>㦛摰⊿<E691B0>撘寧<E69298>
|
||
|
||
**敶勗<E695B6>**嚗?- <20>𡒊垢<F0A1928A>滚𦛚<E6BB9A>䭾<EFBFBD>鋡怎鍂<E6808E>瑚蝙<E7919A>?- MVP<56>䭾<EFBFBD>鈭支<E988AD>
|
||
|
||
**閫<><E996AB><EFBFBD>寞<EFBFBD>**嚗?- Day 5-6撘<36><E69298>穃<EFBFBD>蝡狹I
|
||
- <20><><EFBFBD><EFBFBD><EFBFBD>憸䀹<E686B8>閬<EFBFBD><E996AC>蝑𤤿<E89D91>UI霈曇恣
|
||
- <20><><EFBFBD>12摮埈挾璅⊥踎<E28AA5><E8B88E><EFBFBD>蝷粹<E89DB7>瘙?
|
||
**隡睃<E99AA1>蝥?*嚗𡁻<E59A97>嚗㇄ay 5-6霈∪<E99C88>銝哨<E98A9D>
|
||
**憸<>恣<EFBFBD>埈𧒄**嚗?憭?
|
||
**<2A>嗆<EFBFBD>?*嚗朞恣<E69C9E>雴葉
|
||
|
||
---
|
||
|
||
### <20>箏𦛚7嚗𡁏㺭<F0A1818F>桀<EFBFBD>銵冽𧊋<E586BD>𥕦遣 <20>?撌脰圾<E884B0>?
|
||
**<2A>桅<EFBFBD><E6A185>讛膩**嚗?- `AslFulltextScreeningTask`<60>䈣AslFulltextScreeningResult`銵冽𧊋<EFBFBD>𥕦遣
|
||
- <20>䭾<EFBFBD>摮睃<E691AE><E79D83>冽<EFBFBD>憭滨<E686AD><E6BBA8><EFBFBD>遙<EFBFBD>∪<EFBFBD>蝏𤘪<E89D8F>
|
||
|
||
**敶勗<E695B6>**嚗?- <20>𡒊垢<F0A1928A>滚𦛚<E6BB9A>䭾<EFBFBD><E4ADBE><EFBFBD><EFBFBD><EFBFBD>𡝗㺭<F0A19D97>?
|
||
**閫<><E996AB><EFBFBD>寞<EFBFBD>**嚗?- Day 4<>扯<EFBFBD>Prisma餈<61>宏
|
||
- <20>𥕦遣銝支葵<E694AF>啗”撟嗅遣蝡见<E89DA1><E8A781>?
|
||
**隡睃<E99AA1>蝥?*嚗𡁻<E59A97>嚗㇄ay 4霈∪<E99C88>銝哨<E98A9D>
|
||
**憸<>恣<EFBFBD>埈𧒄**嚗𡁜<E59A97>憭?
|
||
**<EFBFBD>嗆<EFBFBD>?*嚗尠<E59A97> 撌脣<E6928C><E884A3>琜<EFBFBD>2025-11-23嚗?
|
||
**閫<><E996AB>霂行<E99C82>**嚗?- 雿輻鍂<E8BCBB>见𢆡SQL<51>𡁏𧋦摰峕<E691B0>餈<EFBFBD>宏嚗<E5AE8F><E59A97><EFBFBD>滚蔣<E6BB9A>㥍ublic schema嚗?- <20>𥕦遣鈭?`fulltext_screening_tasks` <20>?`fulltext_screening_results` 銵?- 靽格㺿 `literatures` 銵剁<E98AB5>瘛餃<E7989B>13銝芸<E98A9D><E88AB8><EFBFBD>㮾<EFBFBD>喳<EFBFBD>畾?- 霂西<E99C82>嚗靀2025-11-23_<33>唳旿摨栞<E691A8>蝘餌𠶖<E9A48C><F0A0B696>秩<EFBFBD>?md](../05-撘<><E69298>𤏸扇敶?2025-11-23_<33>唳旿摨栞<E691A8>蝘餌𠶖<E9A48C><F0A0B696>秩<EFBFBD>?md)
|
||
|
||
---
|
||
|
||
### <20>箏𦛚8嚗鋫PI蝡舐<E89DA1><E88890>芸<EFBFBD><E88AB8>?
|
||
**<2A>桅<EFBFBD><E6A185>讛膩**嚗?- <20>冽<EFBFBD>憭滨<E686AD><E6BBA8>詨<EFBFBD><E8A9A8><EFBFBD>ESTful API<50>芸<EFBFBD><E88AB8>?- <20>滨垢<E6BBA8>䭾<EFBFBD>靚<EFBFBD>鍂<EFBFBD>𡒊垢<F0A1928A>滚𦛚
|
||
|
||
**敶勗<E695B6>**嚗?- <20>滚<EFBFBD>蝡舀<E89DA1>瘜閖<E7989C><E99696>?
|
||
**閫<><E996AB><EFBFBD>寞<EFBFBD>**嚗?- Day 4撘<34><E69298>飊PI<50>批<EFBFBD><E689B9>?- 摰䂿緵隞餃𦛚<E9A483>𥕦遣<F0A595A6><E981A3><EFBFBD>摨行䰻霂U<E99C82><EFBCB5><EFBFBD><EFBFBD>𨀣䰻霂U<E99C82><EFBCB5>犖撌亙<E6928C><E4BA99>貊<EFBFBD><E8B28A>亙藁
|
||
|
||
**隡睃<E99AA1>蝥?*嚗𡁻<E59A97>嚗㇄ay 4霈∪<E99C88>銝哨<E98A9D>
|
||
**憸<>恣<EFBFBD>埈𧒄**嚗𡁜<E59A97>憭?
|
||
**<EFBFBD>嗆<EFBFBD>?*嚗朞恣<E69C9E>雴葉
|
||
|
||
---
|
||
|
||
### <20>箏𦛚9嚗𡁏<E59A97><F0A1818F>砌<EFBFBD><E7A08C>𣇉征<F0A38789>?
|
||
**<2A>桅<EFBFBD><E6A185>讛膩**嚗?- <20>閧<EFBFBD>PDF憭<46><E686AD><EFBFBD>鞉𧋦蝥汕?.10嚗㇄eepSeek + Qwen嚗?- System Prompt隞齿<E99A9E>6,601摮㛖泵嚗峕<E59A97>隡睃<E99AA1>蝛粹𡢿
|
||
|
||
**瞏𨅯銁隡睃<E99AA1>**嚗?1. 蝎曄<E89D8E>System Prompt嚗<74><E59A97><EFBFBD>蹱瓲敹<E793B2><E695B9>撘𤏪<E69298>蝘駁膄<E9A781>𦯀<EFBFBD>霂湔<E99C82>嚗?2. 靚<>㟲JSON Schema嚗<61><E59A97>撠鬴escription摮埈挾嚗?3. <20><><EFBFBD><EFBFBD>閙芋<E99699>𧢲芋撘𧶏<E69298>隞<EFBFBD>eepSeek嚗峕<E59A97><E5B395>祇<EFBFBD>雿?5%嚗?
|
||
**憸<><E686B8><EFBFBD><EFBFBD><EFBFBD>**嚗?- <20>鞉𧋦<E99E89>滢<EFBFBD>30-50%嚗<><E59A97>璅∪<E79285>嚗?- <20>㚚<EFBFBD>雿?5%嚗<><E59A97>璅∪<E79285>嚗?
|
||
**隡睃<E99AA1>蝥?*嚗帋葉嚗㇈VP蝔喳<E89D94><E596B3>𠬍<EFBFBD>
|
||
**憸<>恣<EFBFBD>埈𧒄**嚗?-2憭?
|
||
|
||
---
|
||
|
||
### <20>箏𦛚10嚗𡁜捆<F0A1819C>蹱㦤<E8B9B1>嗅<EFBFBD>憓𧼮撩
|
||
|
||
**<EFBFBD>桅<EFBFBD><EFBFBD>讛膩**嚗?- <20>賜<EFBFBD>撌脣<E6928C><E884A3>?撅<>SON閫<4E><E996AB>蝑𣇉裦嚗䔶<E59A97>蝻箏<E89DBB>"LLM<4C>滩<EFBFBD>"撅?- 憒<><E68692>3撅<33>圾<EFBFBD>鞾<EFBFBD>憭梯揖嚗䔶遙<E494B6>∠凒<E288A0>亙仃韐?
|
||
**撱箄悅**嚗?- <20>函<EFBFBD>鈭抒㴓憓<E3B493>葉<EFBFBD>烐綉JSON閫<4E><E996AB>憭梯揖<E6A2AF>?- 憒<><E68692>憭梯揖<E6A2AF>?5%嚗<><E59A97><EFBFBD>賜洵4撅<34><E69285>LLM<4C>滩<EFBFBD>嚗<EFBFBD>蒂撘箏<E69298>Prompt嚗?
|
||
**隡睃<E99AA1>蝥?*嚗帋<E59A97>嚗<EFBFBD><E59A97><EFBFBD>煺漣<E785BA>唳旿撉諹<E69289>嚗?
|
||
**憸<>恣<EFBFBD>埈𧒄**嚗?憭?
|
||
**<EFBFBD>∩辣閫血<EFBFBD>**嚗麿SON閫<4E><E996AB>憭梯揖<E6A2AF>?5%
|
||
|
||
---
|
||
|
||
## <20>綫 <20>冽<EFBFBD>憭滨<E686AD> - <20>滨垢<E6BBA8><E59EA2><EFBFBD>臬<EFBFBD>箏𦛚
|
||
|
||
> **璅∪<E79285>**嚗𡁜<E59A97><F0A1819C><EFBFBD><EFBFBD>蝑𥕦<E89D91>蝡?
|
||
> **<2A>𥕦遣<F0A595A6>園𡢿**嚗?025-11-23
|
||
> **<2A>嗆<EFBFBD>?*嚗𡁜<E59A97>撘<EFBFBD><E69298>?
|
||
|
||
---
|
||
|
||
### <20>箏𦛚11嚗䥪DF<44><46>釣<EFBFBD>蠘<EFBFBD>
|
||
|
||
**<EFBFBD>桅<EFBFBD><EFBFBD>讛膩**嚗?- MVP<56><50>𧋦<EFBFBD>芣𣈲<E88AA3><F0A388B2>DF憸<46><E686B8>嚗<EFBFBD>蕃憿萸<E686BF><E890B8>憬<EFBFBD>橘<EFBFBD>
|
||
- <20>䭾<EFBFBD><E4ADBE>沌DF銝𡃏<E98A9D>銵峕<E98AB5>瘜具<E7989C><E585B7><EFBFBD>鈭柴<E988AD><E69FB4>溶<EFBFBD>䭾鸌瘜?- <20>冽<EFBFBD>撣峕<E692A3><E5B395>典恣<E585B8>豢𧒄<E8B1A2><F0A79284>扇<EFBFBD>喲睸靽⊥<E99DBD>
|
||
|
||
**雿輻鍂<E8BCBB>箸艶**嚗?- 摰⊥瓲撌乩<E6928C><E4B9A9>唳䰻<E594B3>见<EFBFBD><E8A781><EFBFBD>𧒄嚗峕<E59A97>霈啣<E99C88><E595A3>株<EFBFBD><E6A0AA>?- 擃䀝漁<E4809D>脩<EFBFBD><E884A9><EFBFBD><EFBFBD><EFBFBD>祉<EFBFBD>畾?- 瘛餃<E7989B>銝芯犖摰⊥瓲蝚磰扇
|
||
|
||
**撱箄悅<E7AE84>寞<EFBFBD>**嚗?- <20><><EFBFBD>PDF<44><46>釣摨橒<E691A8>憒?react-pdf-highlighter嚗?- <20>舀<EFBFBD><E88880><EFBFBD>𧋦擃䀝漁<E4809D><E6BC81><EFBFBD><EFBFBD>垍瑪<E59E8D><E791AA>鸌瘜?- <20><>釣<EFBFBD>唳旿靽嘥<E99DBD><E598A5>唳㺭<E594B3>桀<EFBFBD>嚗<EFBFBD>虾撖澆枂
|
||
|
||
**隡睃<E99AA1>蝥?*嚗帋葉
|
||
**憸<>恣<EFBFBD>埈𧒄**嚗?-4憭?
|
||
**靘肽<E99D98>**嚗䥪DF憸<46><E686B8><EFBFBD>蠘<EFBFBD>摰峕<E691B0>
|
||
**<EFBFBD>冽<EFBFBD>隞瑕<EFBFBD>?*嚗尠<E59A97>潃鐥<E6BD83>潃?
|
||
---
|
||
|
||
### <20>箏𦛚12嚗𡁏<E59A97><F0A1818F>桃<EFBFBD>霈啣<E99C88><E595A3>?
|
||
**<2A>桅<EFBFBD><E6A185>讛膩**嚗?- <20>䭾<EFBFBD>銝箸<E98A9D>蝭<EFBFBD><E89DAD><EFBFBD>格溶<E6A0BC>惩恣<E683A9>貊<EFBFBD>霈?- 鈭箏極憭齿瓲<E9BDBF>嗥<EFBFBD><E597A5>肽<EFBFBD><E882BD><EFBFBD>蝔𧢲<E89D94>瘜閗扇敶?- 銝滢噶鈭𤾸<E988AD>蝏剖<E89D8F>皞臬<E79A9E>蝑碶<E89D91><E7A2B6>?
|
||
**雿輻鍂<E8BCBB>箸艶**嚗?- 霈啣<E99C88>銝箔<E98A9D>銋<EFBFBD>熙<EFBFBD>?<3F>㘾膄<E398BE>鞟<EFBFBD><E99E9F><EFBFBD>讃
|
||
- 霈啣<E99C88><E595A3><EFBFBD>閬<EFBFBD><E996AC>銝<EFBFBD>甇交瓲<E4BAA4>亦<EFBFBD><E4BAA6>桅<EFBFBD>
|
||
- <20>a<EFBFBD><EFBD81>譍<EFBFBD><E8AD8D>嗥<EFBFBD>瘝罸<E7989D>朞扇敶?
|
||
**撱箄悅<E7AE84>寞<EFBFBD>**嚗?- <20>冽<EFBFBD><E586BD>株祕<E6A0AA><E7A595>𡂝撅㗇溶<E39787>?蝚磰扇"Tab
|
||
- <20>舀<EFBFBD>撖峕<E69296><E5B395>祉<EFBFBD>颲穃膥嚗㇈arkdown嚗?- <20>舀<EFBFBD>@<40>𣂼<EFBFBD><F0A382BC>a<EFBFBD><EFBD81>𣂼<EFBFBD>
|
||
- 蝚磰扇靽嘥<E99DBD><E598A5>唳㺭<E594B3>桀<EFBFBD>
|
||
|
||
**隡睃<E99AA1>蝥?*嚗帋葉
|
||
**憸<>恣<EFBFBD>埈𧒄**嚗?-3憭?
|
||
**靘肽<E99D98>**嚗朞祕<E69C9E><E7A595>𡂝撅匧<E69285><E58CA7>?
|
||
**<EFBFBD>冽<EFBFBD>隞瑕<EFBFBD>?*嚗尠<E59A97>潃鐥<E6BD83>潃?
|
||
---
|
||
|
||
### <20>箏𦛚13嚗帋<E59A97><E5B88B>亥<EFBFBD>摨㯄<E691A8>㗇𥋘<E39787><F0A58B98>讃
|
||
|
||
**<EFBFBD>桅<EFBFBD><EFBFBD>讛膩**嚗?- MVP<56><50>𧋦<EFBFBD>芣𣈲<E88AA3><F0A388B2>𧋦<EFBFBD>唬<EFBFBD>隡蘯DF
|
||
- <20>䭾<EFBFBD>隞𤾸歇<F0A4BEB8>厩䰻霂<E4B0BB><E99C82>銝剝<E98A9D>㗇𥋘<E39787><F0A58B98>讃
|
||
- <20><>閬<EFBFBD><E996AC>憭滢<E686AD>隡惩歇摮睃銁<E79D83><E98A81>DF
|
||
|
||
**雿輻鍂<E8BCBB>箸艶**嚗?- <20>冽<EFBFBD><E586BD>其葵鈭箇䰻霂<E4B0BB><E99C82>銝剖歇靽嘥<E99DBD>憭折<E686AD><E68A98><EFBFBD>讃
|
||
- 撣峕<E692A3><E5B395>湔𦻖<E6B994>㗇𥋘<E39787>唳<EFBFBD><E594B3><EFBFBD>讃餈𥡝<E9A488><F0A5A19D>冽<EFBFBD>憭滨<E686AD>
|
||
- <20>踹<EFBFBD><E8B8B9>滚<EFBFBD>銝𠹺<E98A9D><F0A0B9BA><EFBFBD><EFBFBD><EFBFBD>?
|
||
**撱箄悅<E7AE84>寞<EFBFBD>**嚗?- <20>?瘛餃<E7989B><E9A483><EFBFBD>讃"撘寧<E69298>瘛餃<E7989B>"<22>亥<EFBFBD>摨?Tab
|
||
- <20>曄內<E69B84>冽<EFBFBD><E586BD><EFBFBD><EFBFBD><EFBFBD>侨DF<44><46>讃<EFBFBD>𡑒”
|
||
- <20>舀<EFBFBD><E88880>𦦵揣<F0A6A6B5><E68FA3><EFBFBD><EFBFBD>剹<EFBFBD><E589B9><EFBFBD><EFBFBD>?- <20>劐葉<E58A90>舘䌊<E88898>典<EFBFBD><E585B8>𥪜<EFBFBD>敶枏<E695B6>隞餃𦛚
|
||
|
||
**隡睃<E99AA1>蝥?*嚗帋<E59A97>
|
||
**憸<>恣<EFBFBD>埈𧒄**嚗?憭?
|
||
**靘肽<E99D98>**嚗帋葵鈭箇䰻霂<E4B0BB><E99C82>璅∪<E79285>嚗㇊KB嚗?
|
||
**<EFBFBD>冽<EFBFBD>隞瑕<EFBFBD>?*嚗尠<E59A97>潃鐥<E6BD83>
|
||
|
||
---
|
||
|
||
### <20>箏𦛚14嚗𡁻<E59A97>朞<EFBFBD>PMID/DOI<4F>芸𢆡<E88AB8>瑕<EFBFBD><E79195>冽<EFBFBD>
|
||
|
||
**<EFBFBD>桅<EFBFBD><EFBFBD>讛膩**嚗?- <20>冽<EFBFBD><E586BD>芣<EFBFBD>PMID<49>靝OI嚗峕瓷<E5B395>侨DF<44><46>辣
|
||
- <20><>閬<EFBFBD><E996AC><EFBFBD>典縧PubMed蝑厩<E89D91>蝡嗘<E89DA1>頧瞑DF
|
||
- 憓𧼮<E68693><F0A7BCAE>滢<EFBFBD><E6BBA2>鞉𧋦<E99E89>峕𧒄<E5B395>?
|
||
**雿輻鍂<E8BCBB>箸艶**嚗?- <20>冽<EFBFBD><E586BD>㗇<EFBFBD><E39787>桃<EFBFBD>PMID<49>𡑒”
|
||
- 撣峕<E692A3>蝟餌<E89D9F><E9A48C>芸𢆡<E88AB8>瑕<EFBFBD><E79195>冽<EFBFBD>PDF
|
||
- <20>芸𢆡<E88AB8>寥<EFBFBD>銝贝蝸撟嗅<E6929F><E59785>?
|
||
**撱箄悅<E7AE84>寞<EFBFBD>**嚗?- <20>?瘛餃<E7989B><E9A483><EFBFBD>讃"撘寧<E69298>瘛餃<E7989B>"<22>芸𢆡<E88AB8>瑕<EFBFBD>"Tab
|
||
- 颲枏<E9A2B2>PMID/DOI<4F>𡑒”嚗<E2809D>𣈲<EFBFBD><F0A388B2>鸌<EFBFBD>𧶏<EFBFBD>
|
||
- 靚<>鍂蝚砌<E89D9A><E7A08C>農PI嚗㇊ubMed<65><64>npaywall<6C><6C>ci-Hub<75>𨅯<EFBFBD>嚗?- <20>芸𢆡銝贝蝸PDF撟嗆溶<E59786>惩<EFBFBD>隞餃𦛚
|
||
|
||
**隡睃<E99AA1>蝥?*嚗帋<E59A97>
|
||
**憸<>恣<EFBFBD>埈𧒄**嚗?-5憭?
|
||
**靘肽<E99D98>**嚗𡁶洵銝㗇䲮PDF<44>瑕<EFBFBD>API
|
||
**<EFBFBD>冽<EFBFBD>隞瑕<EFBFBD>?*嚗尠<E59A97>潃鐥<E6BD83>潃鐥<E6BD83>
|
||
**瘜訫<E7989C>憌𡡞埯**嚗尠<E59A97>儭?<3F><>霂<EFBFBD>摯<EFBFBD><E691AF><EFBFBD><EFBFBD>桅<EFBFBD>
|
||
|
||
---
|
||
|
||
### <20>箏𦛚15嚗𡁻<E59A97>鈭唧I撘閧鍂<E996A7><E98D82><EFBFBD><EFBFBD><EFBFBD><EFBFBD>畾?
|
||
**<2A>桅<EFBFBD><E6A185>讛膩**嚗?- AI<41>斗鱏<E69697>嗅<EFBFBD><E59785>其<EFBFBD><E585B6><EFBFBD><EFBFBD>霂<EFBFBD>旿
|
||
- 雿<>銁PDF憸<46><E686B8>銝剜<E98A9D>瘜閗䌊<E99697>典<EFBFBD>雿滚<E99BBF>擃䀝漁
|
||
- <20>冽<EFBFBD><E586BD><EFBFBD>閬<EFBFBD><E996AC><EFBFBD>冽䰻<E586BD>曉笆摨𠉛<E691A8><F0A0899B><EFBFBD>𧋦
|
||
|
||
**雿輻鍂<E8BCBB>箸艶**嚗?- <20>亦<EFBFBD>AI<41>斗鱏靘脲旿<E884B2>塚<EFBFBD>撣峕<E692A3><E5B395>见<EFBFBD><E8A781><EFBFBD><EFBFBD>雿滨蔭
|
||
- <20>孵稬霂<E7A8AC>旿<EFBFBD><E697BF>𧋦嚗釶DF<44>芸𢆡頝唾蓮撟園<E6929F>鈭?- 撉諹<E69289>AI<41>𣂼<EFBFBD><F0A382BC>臬炏<E887AC><E7828F>&
|
||
|
||
**撱箄悅<E7AE84>寞<EFBFBD>**嚗?- <20>杗I<E69D97>斗鱏撖寞<E69296>銝哨<E98A9D>霂<EFBFBD>旿<EFBFBD><E697BF>𧋦<EFBFBD>䀝蛹<E4809D>舐<EFBFBD><E88890>?- <20>孵稬<E5ADB5>窰DF憸<46><E686B8><EFBFBD>芸𢆡頝唾蓮<E594BE>啣笆摨娪△<E5A8AA>?- 擃䀝漁<E4809D>寥<EFBFBD><E5AFA5><EFBFBD><EFBFBD><EFBFBD>祉<EFBFBD>畾蛛<E795BE><E89B9B><EFBFBD>閬<EFBFBD><E996AC><EFBFBD><EFBFBD>縑<EFBFBD>荔<EFBFBD>
|
||
- <20>𡒊垢<F0A1928A><E59EA2>閬<EFBFBD><E996AC><EFBFBD>墧<EFBFBD><E5A2A7>砍銁PDF銝剔<E98A9D>雿滨蔭<E6BBA8>鞉<EFBFBD>
|
||
|
||
**隡睃<E99AA1>蝥?*嚗帋葉
|
||
**憸<>恣<EFBFBD>埈𧒄**嚗?-5憭?
|
||
**靘肽<E99D98>**嚗䥪DF<44>𣂼<EFBFBD><F0A382BC>滚𦛚餈𥪜<E9A488><F0A5AA9C><EFBFBD>𧋦<EFBFBD>鞉<EFBFBD>
|
||
**<EFBFBD>冽<EFBFBD>隞瑕<EFBFBD>?*嚗尠<E59A97>潃鐥<E6BD83>潃鐥<E6BD83>
|
||
**<EFBFBD><EFBFBD><EFBFBD>舫𠗕摨?*嚗尠<E59A97>潃鐥<E6BD83>潃?
|
||
---
|
||
|
||
### <20>箏𦛚16嚗阳ebSocket摰墧𧒄<E5A2A7>券<EFBFBD><E588B8>𤜯隞<F0A49CAF>蔭霂?
|
||
**<2A>桅<EFBFBD><E6A185>讛膩**嚗?- 敶枏<E695B6>雿輻鍂頧株砭<E6A0AA>箏<EFBFBD>嚗<EFBFBD><E59A97>3蝘坿窈瘙<E7AA88><E79899>甈∴<E79488>
|
||
- 憓𧼮<E68693><F0A7BCAE>滚𦛚<E6BB9A>刻<EFBFBD>頧賢<E9A0A7>蝵𤑳<E89DB5>瘚<EFBFBD><E7989A>
|
||
- 餈𥕦漲<F0A595A6>湔鰵<E6B994>匧辣餈<E8BEA3><E9A488><EFBFBD><EFBFBD>憭?蝘𡜐<E89D98>
|
||
|
||
**雿輻鍂<E8BCBB>箸艶**嚗?- 隞餃𦛚餈𥕦漲<F0A595A6>烐綉憿菟𢒰
|
||
- <20>踵𧒄<E8B8B5>渲<EFBFBD>銵𣬚<E98AB5>LLM隞餃𦛚
|
||
- 撣峕<E692A3>摰墧𧒄<E5A2A7>见<EFBFBD>憭<EFBFBD><E686AD><EFBFBD>亙<EFBFBD>
|
||
|
||
**撱箄悅<E7AE84>寞<EFBFBD>**嚗?- <20>𡒊垢摰䂿緵WebSocket<65>滚𦛚
|
||
- <20>滨垢撱箇<E692B1>WebSocket餈墧𦻖
|
||
- 隞餃𦛚餈𥕦漲<F0A595A6>睃<EFBFBD><E79D83>嗡蜓<E597A1>冽綫<E586BD>?- <20>滨漣蝑𣇉裦嚗阳ebSocket銝滚虾<E6BB9A>冽𧒄<E586BD>鮋<EFBFBD><E9AE8B><EFBFBD>啗蔭霂?
|
||
**隡睃<E99AA1>蝥?*嚗帋<E59A97>
|
||
**憸<>恣<EFBFBD>埈𧒄**嚗?-4憭?
|
||
**靘肽<E99D98>**嚗𡁜<E59A97>蝡狸ebSocket摰䂿緵
|
||
**<EFBFBD>冽<EFBFBD>隞瑕<EFBFBD>?*嚗尠<E59A97>潃鐥<E6BD83>
|
||
**<EFBFBD>扯<EFBFBD><EFBFBD>𣂼<EFBFBD>**嚗尠<E59A97>潃鐥<E6BD83>潃?
|
||
---
|
||
|
||
### <20>箏𦛚17嚗朞<E59A97><E69C9E><EFBFBD><EFBFBD><EFBFBD>其<EFBFBD><E585B6>硋之<E7A18B>𡑒”<F0A19192>扯<EFBFBD>
|
||
|
||
**<EFBFBD>桅<EFBFBD><EFBFBD>讛膩**嚗?- 敶𤘪<E695B6><F0A498AA>格㺭<E6A0BC>?100蝭<30>𧒄嚗諹”<E8ABB9>潭葡<E6BDAD>枏<EFBFBD><E69E8F>?- <20><><EFBFBD>㕑<EFBFBD><E39591>賣葡<E8B3A3>枏<EFBFBD>DOM嚗<4D><E59A97><EFBFBD>典之<E585B8>誩<EFBFBD>摮?- 皛𡁜𢆡<F0A1819C>嗅虾<E59785>賢枂<E8B3A2>啣㨃憿?
|
||
**雿輻鍂<E8BCBB>箸艶**嚗?- 憭扯<E686AD>璅∪<E79285><E288AA><EFBFBD><EFBFBD>蝑𨥈<E89D91>200+蝭<><E89DAD><EFBFBD>殷<EFBFBD>
|
||
- 摰⊥瓲撌乩<E6928C><E4B9A9>啣<EFBFBD>蝏𤘪<E89D8F>憿菟𢒰
|
||
- <20><>閬<EFBFBD><E996AC><EFBFBD><EFBFBD><EFBFBD>皛𡁜𢆡雿㯄<E99BBF>
|
||
|
||
**撱箄悅<E7AE84>寞<EFBFBD>**嚗?- 雿輻鍂<E8BCBB>𡁏<EFBFBD>皛𡁜𢆡摨橒<E691A8>react-window / react-virtualized嚗?- <20>芣葡<E88AA3>枏虾閫<E899BE>躹<EFBFBD>毺<EFBFBD>銵?- 隡睃<E99AA1>Ant Design Table<6C>扯<EFBFBD>
|
||
- 瘛餃<E7989B><E9A483>扯<EFBFBD><E689AF>烐綉
|
||
|
||
**隡睃<E99AA1>蝥?*嚗帋<E59A97>
|
||
**憸<>恣<EFBFBD>埈𧒄**嚗?憭?
|
||
**<EFBFBD>∩辣閫血<EFBFBD>**嚗𡁏<E59A97><F0A1818F>格㺭<E6A0BC>?100蝭?
|
||
**<EFBFBD>冽<EFBFBD>隞瑕<EFBFBD>?*嚗尠<E59A97>潃鐥<E6BD83>
|
||
**<EFBFBD>扯<EFBFBD><EFBFBD>𣂼<EFBFBD>**嚗尠<E59A97>潃鐥<E6BD83>潃鐥<E6BD83>
|
||
|
||
---
|
||
|
||
### <20>箏𦛚18嚗𡁏鸌<F0A1818F>𤩺<EFBFBD>雿𨅯<E99BBF><F0A885AF>?
|
||
**<2A>桅<EFBFBD><E6A185>讛膩**嚗?- 蝏𤘪<E89D8F>憿菟𢒰<E88F9F>芾<EFBFBD><E88ABE>蓥葵<E893A5><E891B5>讃<EFBFBD>滢<EFBFBD>
|
||
- <20>䭾<EFBFBD><E4ADBE>寥<EFBFBD>靽格㺿<E6A0BC>喟<EFBFBD>
|
||
- <20>䭾<EFBFBD><E4ADBE>寥<EFBFBD>撖澆枂<E6BE86>劐葉<E58A90><E89189><EFBFBD><EFBFBD>?
|
||
**雿輻鍂<E8BCBB>箸艶**嚗?- <20>寥<EFBFBD><E5AFA5><EFBFBD>扇銝?蝥喳<E89DA5>"<22>?<3F>㘾膄"
|
||
- <20>寥<EFBFBD>撖澆枂<E6BE86>劐葉<E58A90><E89189>讃<EFBFBD><E8AE83>DF
|
||
- <20>寥<EFBFBD><E5AFA5>𣳇膄<F0A3B387>躰秤銝𠹺<E98A9D><F0A0B9BA><EFBFBD><EFBFBD><EFBFBD>?
|
||
**撱箄悅<E7AE84>寞<EFBFBD>**嚗?- 銵冽聢瘛餃<E7989B>憭漤<E686AD>㗇<EFBFBD><E39787>?- 瘛餃<E7989B><E9A483>寥<EFBFBD><E5AFA5>滢<EFBFBD>撌亙<E6928C><E4BA99>?- <20>舀<EFBFBD>嚗𡁏鸌<F0A1818F>譍耨<E8AD8D>孵<EFBFBD>蝑硔<E89D91><E7A194>鸌<EFBFBD>誩紡<E8AAA9>箝<EFBFBD><E7AE9D>鸌<EFBFBD>誩<EFBFBD><E8AAA9>?- 瘛餃<E7989B><E9A483>滢<EFBFBD>蝖株恕<E6A0AA>鞟內
|
||
|
||
**隡睃<E99AA1>蝥?*嚗帋<E59A97>
|
||
**憸<>恣<EFBFBD>埈𧒄**嚗?憭?
|
||
**<EFBFBD>冽<EFBFBD>隞瑕<EFBFBD>?*嚗尠<E59A97>潃鐥<E6BD83>潃?
|
||
---
|
||
|
||
### <20>箏𦛚19嚗𡁶氖蝥燕DF憸<46><E686B8><EFBFBD>舀<EFBFBD>
|
||
|
||
**<EFBFBD>桅<EFBFBD><EFBFBD>讛膩**嚗?- PDF憸<46><E686B8>靘肽<E99D98><E882BD>函瑪CDN<44>㰘蝸pdf.js worker
|
||
- 蝵𤑳<E89DB5>銝滚末<E6BB9A>嗅<EFBFBD>頧賢仃韐?- <20><><EFBFBD><EFBFBD>臬<EFBFBD><E887AC>䭾<EFBFBD>雿輻鍂
|
||
|
||
**雿輻鍂<E8BCBB>箸艶**嚗?- <20><><EFBFBD><EFBFBD>函蔡<E587BD>臬<EFBFBD>
|
||
- 蝵𤑳<E89DB5>銝滨迅摰𡁶<E691B0><F0A181B6>冽<EFBFBD>
|
||
- <20><>閬<EFBFBD><E996AC><EFBFBD>函氖蝥蹂蝙<E8B982>?
|
||
**撱箄悅<E7AE84>寞<EFBFBD>**嚗?- 撠<>df.js worker<65>枏<EFBFBD><E69E8F>圈★<E59C88>桐葉
|
||
- <20>舀<EFBFBD><E88880>砍𧑐<E7A08D>㰘蝸<E3B098>龦DN<44>㰘蝸銝斤<E98A9D>璅∪<E79285>
|
||
- <20>芸𢆡璉<F0A286A1>瘚讠<E7989A>蝏𨅯僎<F0A885AF>㗇𥋘<E39787><F0A58B98>隡䀹䲮撘?
|
||
**隡睃<E99AA1>蝥?*嚗帋<E59A97>
|
||
**憸<>恣<EFBFBD>埈𧒄**嚗?憭?
|
||
**<EFBFBD>∩辣閫血<EFBFBD>**嚗𡁜<E59A97>蝵煾<E89DB5>蝵脤<E89DB5>瘙?
|
||
**<EFBFBD>冽<EFBFBD>隞瑕<EFBFBD>?*嚗尠<E59A97>潃鐥<E6BD83>
|
||
|
||
---
|
||
|
||
### <20>箏𦛚20嚗𡁜<E59A97>摨𥪜<E691A8>霈曇恣<E69B87><E681A3><EFBFBD>蝘餃𢆡蝡?
|
||
**<2A>桅<EFBFBD><E6A185>讛膩**嚗?- 敶枏<E695B6>霈曇恣<E69B87>芾<EFBFBD><E88ABE><EFBFBD>獢屸𢒰蝡荔<E89DA1>1920x1080嚗?- <20>典像<E585B8>踹<EFBFBD><E8B8B9>𧢲㦤銝𦠜遬蝷箸<E89DB7><E7AEB8>𨅯榆
|
||
- 銵冽聢摰賢漲<E8B3A2>箏<EFBFBD>嚗<EFBFBD><E59A97>撅誩<E69285>銝𧢲<E98A9D>瘜蓥蝙<E893A5>?
|
||
**雿輻鍂<E8BCBB>箸艶**嚗?- <20>冽<EFBFBD>撣峕<E692A3><E5B395>典像<E585B8>蹂<EFBFBD>摰⊥瓲<E28AA5><E793B2>讃
|
||
- 蝘餃𢆡<E9A483>箸艶銝𧢲䰻<F0A7A2B2>衤遙<E8A1A4>∟<EFBFBD>摨?- 憭硋枂<E7A18B>嗡葩<E597A1>嗅<EFBFBD><E59785><EFBFBD>恣<EFBFBD>?
|
||
**撱箄悅<E7AE84>寞<EFBFBD>**嚗?- 雿輻鍂<E8BCBB>滚<EFBFBD>撘誩<E69298>撅<EFBFBD>嚗㇍ailwind CSS嚗?- 撠誩<E692A0>撟蓥<E6929F>銵冽聢<E586BD>嫣蛹<E5ABA3>∠<EFBFBD>閫<EFBFBD>㦛
|
||
- 隡睃<E99AA1>閫行𨰫鈭支<E988AD>雿㯄<E99BBF>
|
||
- 瘛餃<E7989B>蝘餃𢆡蝡臬紡<E887AC>?
|
||
**隡睃<E99AA1>蝥?*嚗𡁏<E59A97>雿?
|
||
**憸<>恣<EFBFBD>埈𧒄**嚗?-7憭?
|
||
**<EFBFBD>∩辣閫血<EFBFBD>**嚗𡁶鍂<F0A181B6>瑟<EFBFBD>蝖桅<E89D96>瘙?
|
||
**<EFBFBD>冽<EFBFBD>隞瑕<EFBFBD>?*嚗尠<E59A97>潃?
|
||
---
|
||
|
||
## <20><> <20>詨<EFBFBD><E8A9A8><EFBFBD>﹝
|
||
|
||
**<EFBFBD><EFBFBD><EFBFBD><EFBFBD>䁅<EFBFBD><EFBFBD>萘<EFBFBD>**:
|
||
- [璅∪<E79285>敶枏<E695B6><E69E8F>嗆<EFBFBD><E59786><EFBFBD>撘<EFBFBD><E69298>烐<EFBFBD><E78390>㻩(../00-璅∪<E79285>敶枏<E695B6><E69E8F>嗆<EFBFBD><E59786><EFBFBD>撘<EFBFBD><E69298>烐<EFBFBD><E78390>?md) - 撌脩䰻<E884A9>桅<EFBFBD><E6A185>交<EFBFBD>
|
||
- [隞餃𦛚<EFBFBD><EFBFBD>圾](../04-撘<><E69298>𤏸恣<F0A48FB8>?03-隞餃𦛚<E9A483><F0A69B9A>圾.md) - Week 4隞餃𦛚皜<F0A69B9A><E79A9C>
|
||
- [Prompt霈曇恣銝擧<E98A9D>霂閙𥁒<E99699>𠺖(../05-撘<><E69298>𤏸扇敶?2025-11-18-Prompt霈曇恣銝擧<E98A9D>霂訫<E99C82><E8A8AB>鞉𥁒<E99E89>?md) - 韐券<E99F90><E588B8>桅<EFBFBD><E6A185><EFBFBD><EFBFBD>
|
||
- [隞𦠜𠯫撌乩<EFBFBD><EFBFBD>餌<EFBFBD>](../05-撘<><E69298>𤏸扇敶?2025-11-18-隞𦠜𠯫撌乩<E6928C><E4B9A9>餌<EFBFBD>.md) - 颲寧<E9A2B2><E5AFA7>桅<EFBFBD>霂𦠜鱏
|
||
|
||
**<EFBFBD>冽<EFBFBD>憭滨<EFBFBD>**:
|
||
- [<5B>冽<EFBFBD>憭滨<E686AD>撘<EFBFBD><E69298>𤏸恣<F0A48FB8>哋(../04-撘<><E69298>𤏸恣<F0A48FB8>?04-<2D>冽<EFBFBD>憭滨<E686AD>撘<EFBFBD><E69298>𤏸恣<F0A48FB8>?md) - <20>𡒊垢撘<E59EA2><E69298>𤏸<EFBFBD>摨血<E691A8>霈∪<E99C88>
|
||
- [<EFBFBD>冽<EFBFBD>憭滨<EFBFBD><EFBFBD>滨垢撘<EFBFBD><EFBFBD>𤏸恣<EFBFBD>哋(../04-撘<><E69298>𤏸恣<F0A48FB8>?05-<2D>冽<EFBFBD>憭滨<E686AD><E6BBA8>滨垢撘<E59EA2><E69298>𤏸恣<F0A48FB8>?md) - <20>滨垢撘<E59EA2><E69298>𤏸祕蝏<E7A595>恣<EFBFBD>?- [<5B>冽<EFBFBD>憭滨<E686AD>韐券<E99F90>靽嗪<E99DBD>蝑𣇉裦](../02-<2D><><EFBFBD>航挽霈?08-<2D>冽<EFBFBD>憭滨<E686AD>韐券<E99F90>靽嗪<E99DBD>蝑𣇉裦.md) - 韐券<E99F90>蝑𣇉裦霈曇恣
|
||
- [Day 2-3撘<33><E69298>𤏸扇敶騟(../05-撘<><E69298>𤏸扇敶?2025-11-22_Day2-Day3_LLM<4C>滚𦛚銝𡡞<E98A9D>霂<EFBFBD>頂蝏笔<E89D8F><E7AC94>?md) - LLM<4C>滚𦛚撘<F0A69B9A><E69298>?- [Day 5撘<35><E69298>𤏸扇敶騟(../05-撘<><E69298>𤏸扇敶?2025-11-23_Day5_<35>冽<EFBFBD>憭滨<E686AD>API撘<49><E69298>?md) - <20>𡒊垢API撘<49><E69298>?
|
||
---
|
||
|
||
**<EFBFBD><EFBFBD>﹝蝏湔擪**嚗?- 瘥𤩺活<F0A4A9BA>𤑳緵<F0A491B3>啁<EFBFBD><E59581><EFBFBD><EFBFBD>臬<EFBFBD>箏𦛚<E7AE8F>嗆凒<E59786>?- 瘥𤩺活閫<E6B4BB><E996AB><EFBFBD><EFBFBD><EFBFBD>臬<EFBFBD>箏𦛚<E7AE8F>擧<EFBFBD>霈啁𠶖<E59581>?- 摰𡁏<E691B0>霂<EFBFBD>摯隡睃<E99AA1>蝥改<E89DA5>瘥𤩺<E798A5>嚗?
|
||
**<EFBFBD><EFBFBD><EFBFBD>擧凒<EFBFBD>?*嚗?025-11-23嚗ǒ1.2嚗?
|
||
**<EFBFBD>祆活<EFBFBD>湔鰵**嚗𡁏鰵憓𧼮<E68693><F0A7BCAE><EFBFBD><EFBFBD>蝑𥕦<E89D91>蝡舀<E89DA1><E88880>臬<EFBFBD>箏𦛚嚗?0憿對<E686BF><E5B08D>箏𦛚11-20嚗?
|
||
**銝𧢲活霂<E6B4BB>摯**嚗𡁜<E59A97><F0A1819C><EFBFBD><EFBFBD>蝑𥕦<E89D91>蝡烘VP摰峕<E691B0><E5B395>?
|