Files
AIclinicalresearch/docs/03-业务模块/DC-数据清洗整理/07-技术债务/Tool-B技术债务清单.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

491 lines
14 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
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.
# Tool B - 鐥呭巻缁撴瀯鍖栨満鍣ㄤ汉 鎶€鏈<E282AC>€哄姟娓呭崟
> **鍒涘缓鏃ユ湡锛?* 2025-12-03
> **鐘舵€侊細** 寰呭<E5AFB0>鐞?
> **浼樺厛绾э細** P1=楂樹紭鍏堢骇, P2=涓<>紭鍏堢骇, P3=浣庝紭鍏堢骇
---
## 馃搵 鎶€鏈<E282AC>€哄姟鍒楄〃
### **[P1] #1 - Excel瀵煎嚭涓庡墠绔<E5A2A0>樉绀虹粨鏋滀笉涓€鑷?*
**闂<><E99782>鎻忚堪锛?*
- 鐢ㄦ埛鍦ㄦ<E98DA6>楠?浜ゅ弶楠岃瘉椤甸潰鐪嬪埌鐨勬彁鍙栫粨鏋滐紝涓庡<E6B693>鍑虹殑Excel鏂囦欢鍐呭<E98D90>涓嶄竴鑷?
- 鍒楅『搴忔贩涔憋紝閮ㄥ垎瀛楁<E7809B>缂哄け鎴栨暟鎹<E69A9F>敊浣?
**閲嶇幇姝ラ<E5A79D>锛?*
1. 瀹屾垚鍙屾ā鍨嬫彁鍙栧苟杩涘叆姝ラ<E5A79D>4
2. 鐐瑰嚮"瀵煎嚭褰撳墠缁撴灉"鎴栧湪姝ラ<E5A79D>5鐐瑰嚮"涓嬭浇缁撴灉Excel"
3. 鎵撳紑Excel锛屽<E9949B>姣斿墠绔<E5A2A0>樉绀虹殑缁撴灉
**鏍规湰鍘熷洜锛?*
- JavaScript瀵硅薄灞曞紑`...extractedData`鏃堕『搴忎笉鍥哄畾
-<>寜妯℃澘瀹氫箟鐨勫瓧娈甸『搴忔瀯寤篍xcel鍒?
**褰撳墠鐘舵€侊細**
- 鉁?宸查儴鍒嗕慨澶嶏細鎸塼argetFields椤哄簭瀵煎嚭
- 鉂?浠嶉渶楠岃瘉锛氬<E9949B>娆″<E5A886>鍑虹粨鏋滄槸鍚︾ǔ瀹氫竴鑷?
**瑙喅鏂规<E98F82>锛?*
1. 涓ユ牸鎸夌収`task.targetFields`瀹氫箟鐨勫瓧娈甸『搴忓<EFBFBD>鍑?
2. 娣诲姞琛ㄥご鏍峰紡锛堝姞绮椼€佸喕缁撻<E7BC81>琛岋級
3. 娣诲姞鏁版嵁楠岃瘉锛堢‘淇濇墍鏈夊瓧娈甸兘瀛樺湪锛?
4. 娣诲姞瀵煎嚭娴嬭瘯鐢ㄤ緥
**棰勮<E6A3B0>宸ユ椂锛?* 2灏忔椂
**褰卞搷鑼冨洿锛?* 鍚庣<E98D9A> ExtractionController.exportResults鏂规硶
---
### **[P2] #2 - 姝ラ<E5A79D>3杩涘害鏉℃樉绀轰笉澶熺粏鑵?*
**闂<><E99782>鎻忚堪锛?*
- 褰撳墠杩涘害鏉洿鎺ヤ粠0%璺冲埌100%锛岀己灏戜腑闂磋繃绋?
- 鐢ㄦ埛鏃犳硶鎰熺煡澶фā鍨嬫<E98DA8>鍦ㄥ<E98DA6>鐞嗙<E9909E>鍑犳潯璁板綍
- 娌℃湁瀹炴椂鍙嶉<E98D99>褰撳墠澶勭悊鐘舵€侊紙濡?姝e湪澶勭悊绗?/9鏉?锛?
**鏈熸湜鏁堟灉锛?*
```
鎻愬彇杩涘害: 33% (3/9鏉″凡瀹屾垚)
鏃ュ織杈撳嚭锛?
[13:43:12] 姝e湪鍒涘缓鎻愬彇浠诲姟...
[13:43:12] 浠诲姟鍒涘缓鎴愬姛 (ID: xxx)
[13:43:12] 鍒濆<E98D92>鍖栧弻妯″瀷寮曟搸 (DeepSeek-V3 & Qwen-Max)...
[13:43:13] [1/9] 姝e湪鎻愬彇: 銆愬彸鑲轰笅鍙躲€戞蹈娑︽€ц吅鐧?..
[13:43:18] [1/9] 鉁?鎻愬彇瀹屾垚 (DeepSeek: 549 tokens, Qwen: 627 tokens)
[13:43:19] [2/9] 姝e湪鎻愬彇: 銆愬彸鑲轰笂鍙躲€戞蹈娑︽€ц吅鐧?..
[13:43:24] [2/9] 鉁?鎻愬彇瀹屾垚 (DeepSeek: 486 tokens, Qwen: 551 tokens)
...
[13:43:30] PII 鑴辨晱瀹屾垚
[13:43:30] 鉁?鎵€鏈夎<E98F88>褰曟彁鍙栧畬鎴愶紒
```
**瑙喅鏂规<E98F82>锛?*
**鍚庣<E98D9A>鏀瑰姩锛?*
1. 鍦╜DualModelExtractionService.batchExtract`鐨刦or寰<72>幆涓<E5B986>紝姣忓<E5A7A3>鐞嗗畬涓€鏉¤<E98F89>褰曞氨鏇存柊杩涘害
2. 娣诲姞`currentItem`瀛楁<EFBFBD>鍒癟ask琛<EFBFBD>紙鍙<EFBFBD>€夛紝鐢ㄤ簬瀹炴椂鏄剧ず褰撳墠澶勭悊鐨勮<EFBFBD>褰曪級
3. 鎴栬€呬娇鐢≧edis瀛樺偍瀹炴椂杩涘害淇℃伅锛堟洿浜戝師鐢燂級
**鍓嶇<E98D93>鏀瑰姩锛?*
1.<><E69D9E>API鏃讹紝瑙`processedCount`鍜宍totalCount`
2. 鍔ㄦ€佺敓鎴愭棩蹇楋細`[${processedCount}/${totalCount}] 姝e湪鎻愬彇...`
3. 杩涘害鏉″钩婊戣繃娓★紙CSS transition锛?
**棰勮<E6A3B0>宸ユ椂锛?* 3灏忔椂
**褰卞搷鑼冨洿锛?*
- 鍚庣<E98D9A>锛欴ualModelExtractionService.batchExtract
- 鍓嶇<E98D93>锛歋tep3Processing.tsx
---
### **[P1] #3 - Excel鏂囦欢棰勫<E6A3B0>鐞嗕笌鑴忔暟鎹<E69A9F>竻娲?*
**闂<><E99782>鎻忚堪锛?*
鍖荤枟绉戠爺鍦烘櫙涓嬶紝Excel鏂囦欢璐ㄩ噺鍙傚樊涓嶉綈锛屽瓨鍦ㄥぇ閲忚剰鏁版嵁瀵艰嚧瑙瀽澶辫触鎴栫粨鏋滈敊璇<EFBFBD>€?
#### **瀛愰棶棰?锛氳〃澶寸壒娈婂瓧绗?*
- **鐜拌薄锛?* 鍒楀悕鍖呭惈鎹㈣<E98EB9><EFBFBD>\n`銆佺┖鏍笺€佸埗琛ㄧ<E7909B>绛夛紝瀵艰嚧鍒楀悕鍖归厤澶辫触
- **绀轰緥锛?* `"鐥呬汉ID\n(Patient ID)"` 鈫?鍓嶇<E98D93>涓嬫媺妗嗘樉绀哄紓甯?
- **褰卞搷锛?* 鐢ㄦ埛鏃犳硶閫夋嫨姝g‘鐨勫垪
#### **瀛愰棶棰?锛氬叕寮?(Formulas)**
- **鐜拌薄锛?* 鍗曞厓鏍煎寘鍚<E5AF98>叕寮廯=A1+B1`锛寈lsx搴撹<E690B4>鍙栨椂杩斿洖鍏<E6B496>紡鏂囨湰鑰岄潪璁畻缁撴灉
- **绀轰緥锛?*
- 鍘熷<E98D98>鍊硷細`=SUM(A1:A10)`
- 璇诲彇缁撴灉锛氬瓧绗︿覆`"=SUM(A1:A10)"`锛堣€岄潪鏁板瓧锛?
- 澶栭儴寮曠敤锛歚=[澶栭儴鏂囦欢]Sheet1!A1` 鈫?`#REF!`
- **褰卞搷锛?* 鏁板€煎瀷瀛楁<E7809B>锛堝<E9949B>骞撮緞銆佽<E98A86>绯栧€硷級鍙樻垚鏂囨湰锛屾棤娉曠粺璁?
#### **瀛愰棶棰?锛氬悎骞跺崟鍏冩牸 (Merged Cells)**
- **鐜拌薄锛?* 鍖荤敓涔犳儻鍚堝苟"浣忛櫌鍙?鍒楋紝瀵瑰簲澶氳<E6BEB6>鍖栭獙璁板綍
- **绀轰緥锛?*
```
浣忛櫌鍙? 妫€鏌ラ」鐩? 缁撴灉
H001 琛€甯歌<E794AF> 姝e父 鈫?鍙<>湁杩欒<E69DA9>鏈変綇闄㈠彿
(鍚堝苟) 鑲濆姛鑳? 寮傚父 鈫?杩欒<E69DA9>浣忛櫌鍙蜂负null
(鍚堝苟) 鑲惧姛鑳? 姝e父 鈫?杩欒<E69DA9>浣忛櫌鍙蜂负null
```
- **褰卞搷锛?* 鍚庣画琛岀殑鍏宠仈瀛楁<E7809B>涓㈠け锛屾棤娉曡拷婧<E68BB7>埌鎮€?
#### **瀛愰棶棰?锛氭棩鏈熷湴鐙?(Date Parsing Hell)**
- **鐜拌薄锛?* Excel鏃ユ湡瀛樺偍涓烘暟瀛楋紙Serial Number锛夛紝鎴栧<E98EB4>绉嶆枃鏈<E69E83>牸寮?
- **绀轰緥锛?*
- `44927` 鈫?搴旇<E690B4>瀽涓?`2023-01-01`
- `2023.1.1`锛堟枃鏈<E69E83>
- `2023骞?鏈?鏃<>锛堜腑鏂囷級
- `Jan 1, 2023`锛堣嫳鏂囷級
- **褰卞搷锛?* 鏃ユ湡瀛楁<E7809B>鏃犳硶鎺掑簭銆佺瓫閫夈€佺粺璁?
#### **瀛愰棶棰?锛氫笉鍙<E7AC89><E98D99>瀛楃<E7809B>涓庤剰鏂囨湰 (Ghost Characters)**
- **鐜拌薄锛?* 鐪嬭捣鏉ユ槸"鐢?锛屽疄闄呭寘鍚<E5AF98>笉鍙<E7AC89><E98D99>瀛楃<E7809B>
- **绀轰緥锛?*
- `"鐢?"` (灏鹃儴绌烘牸)
- `"鐢穃u200b"` (闆跺<E99786>绌烘牸 Zero-Width Space)
- `"鐢穃ufeff"` (BOM瀛楃<E7809B>)
- **褰卞搷锛?* 鏉欢鍒ゆ柇澶辫触锛歚if (sex === '鐢?)` 鈫?false
- **鍖诲<E98D96>鍦烘櫙鐗逛緥锛?*
- 鍖栭獙鍗曞<E98D97>鍒剁矘璐存椂甯﹀叆瀵屾枃鏈<E69E83>牸寮?
- 涓嶅悓鍖婚櫌HIS绯荤粺瀵煎嚭缂栫爜涓嶇粺涓€
**瑙喅鏂规<E98F82>锛?*
#### **鏋舵瀯璁捐<E79281>锛氱嫭绔嬬殑Excel棰勫<E6A3B0>鐞嗘湇鍔?*
```typescript
// backend/src/modules/dc/services/ExcelPreprocessor.ts
export class ExcelPreprocessor {
/**
* 娓呮礂琛ㄥご
*/
cleanHeaders(headers: string[]): string[] {
return headers.map(h => h
.replace(/[\n\r\t]/g, ' ') // 绉婚櫎鎹㈣<E98EB9>銆佸埗琛ㄧ<E7909B>
.trim() // 鍘婚櫎棣栧熬绌烘牸
.replace(/\s+/g, ' ') // 澶氫釜绌烘牸鍚堝苟涓轰竴涓?
);
}
/**
* 澶勭悊鍏<E6828A>紡鍗曞厓鏍?
*/
processFormulas(worksheet: xlsx.WorkSheet): void {
// 浣跨敤 xlsx 鐨?{ cellFormula: false } 閫夐」
// 鎴栨墜鍔ㄩ亶鍘嗗崟鍏冩牸锛岃<E9949B>绠楀叕寮忕粨鏋?
}
/**
* 灞曞紑鍚堝苟鍗曞厓鏍?
*/
unflattenMergedCells(worksheet: xlsx.WorkSheet): void {
// 1. 鎵惧埌鎵€鏈夊悎骞跺尯鍩?worksheet['!merges']
// 2. 灏嗕富鍗曞厓鏍肩殑鍊煎~鍏呭埌鎵€鏈夊瓙鍗曞厓鏍?
}
/**
* 缁熶竴鏃ユ湡鏍煎紡
*/
normalizeDates(value: any): string | null {
if (typeof value === 'number') {
// Excel Serial Number 鈫?ISO Date
return this.excelSerialToDate(value);
}
if (typeof value === 'string') {
// 灏濊瘯澶氱<E6BEB6>鏍煎紡瑙
return this.parseChineseDate(value) ||
this.parseSlashDate(value) ||
this.parseDotDate(value);
}
return null;
}
/**
* 娓呴櫎涓嶅彲瑙佸瓧绗?
*/
cleanInvisibleChars(text: string): string {
return text
.replace(/\u200b/g, '') // 闆跺<E99786>绌烘牸
.replace(/\ufeff/g, '') // BOM
.replace(/\u00a0/g, ' ') // 涓嶉棿鏂<E6A3BF>┖鏍?鈫?鏅<>€氱┖鏍?
.trim();
}
}
```
#### **浣跨敤浣嶇疆锛?*
1. **uploadFile API** - 涓婁紶鍚庣珛鍗抽<E98D97>澶勭悊锛岃繑鍥炴竻娲楀悗鐨勫垪鍚?
2. **healthCheck API** - 浣跨敤娓呮礂鍚庣殑鏁版嵁杩涜<E69DA9>妫€鏌?
3. **createTask API** - 浣跨敤娓呮礂鍚庣殑鏁版嵁鍒涘缓items
**棰勮<E6A3B0>宸ユ椂锛?* 16灏忔椂锛堝<E9949B>鏉傚害楂橈紝闇€瑕佸ぇ閲忔祴璇曪級
**褰卞搷鑼冨洿锛?*
- 鏂板<E98F82>锛歚ExcelPreprocessor.ts` (~400琛?
-<>敼锛歚ExtractionController.ts` 鐨勬枃浠跺<E6B5A0>鐞嗛€昏緫
- 娴嬭瘯锛氳<E9949B>鐩栧悇绉嶈剰鏁版嵁鍦烘櫙
**渚濊禆锛?*
- xlsx搴撶殑楂樼骇鍔熻兘锛坈ellFormula銆?merges绛夛級
- dayjs鎴杁ate-fns锛堟棩鏈熻В鏋愶級
---
### **[P2] #4 - 鏀<>寔鐢ㄦ埛鑷<E59F9B>畾涔夋彁鍙栨ā鏉?*
**闂<><E99782>鎻忚堪锛?*
褰撳墠绯荤粺鍙<EFBFBD>敮鎸?涓<><E6B693>璁炬ā鏉匡紙鑲虹檶鐥呯悊銆佺硸灏跨梾鍏ラ櫌銆侀珮琛€鍘嬮棬璇婏級锛屾棤娉曟弧瓒崇敤鎴风殑澶氭牱鍖栭渶姹傘€?
**闇€姹傚満鏅<E6BA80>**
1. 绉戠爺浜哄憳鐮旂┒缃曡<E7BC83>鐥咃紙濡傦細绯荤粺鎬х孩鏂戠嫾鐤<E5ABBE>€侀噸鐥囪倢鏃犲姏锛?
2. 闇€瑕佹彁鍙栫殑瀛楁<E7809B>涓庨<E6B693>璁炬ā鏉夸笉鍚?
3. 姣忎釜鐮旂┒椤圭洰鐨勬暟鎹<E69A9F><E98EB9>鑼冨彲鑳戒笉鍚?
**鏈熸湜鍔熻兘锛?*
#### **1. 鍓嶇<E98D93>锛氳嚜瀹氫箟妯℃澘缂栬緫鍣?*
```
姝ラ<EFBFBD>2.1锛氶€夋嫨妯℃澘鏉ユ簮
- [ ] 浣跨敤绯荤粺棰勮<E6A3B0>妯℃澘
- [x] 鍒涘缓鑷<E7BC93>畾涔夋ā鏉?
姝ラ<EFBFBD>2.2锛氬畾涔夋ā鏉夸俊鎭?
- 妯℃澘鍚嶇О锛歔鎴戠殑鑲虹檶鐮旂┒妯℃澘]
- 鐤剧梾绫诲瀷锛歔鑷<E6AD94>畾涔夛細绯荤粺鎬х孩鏂戠嫾鐤甝
- 鎶ュ憡绫诲瀷锛歔鑷<E6AD94>畾涔夛細瀹為獙瀹ゆ<E780B9><EFBFBD>
姝ラ<EFBFBD>2.3锛氬畾涔夋彁鍙栧瓧娈碉紙鍙<EFBFBD><EFBFBD>鍖栫紪杈戯級
鈹屸攢鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹?
鈹?瀛楁<E7809B>1: [鎶楁牳鎶椾綋婊村害] 鈹?
鈹?鎻忚堪: [濡?1:320, 1:640] 鈹?
鈹?瀹藉害: [w-32] 鈻? 鈹?
鈹?[ 鍒犻櫎 ] 鈹?
鈹溾攢鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹?
鈹?瀛楁<E7809B>2: [琛ヤ綋C3] 鈹?
鈹?鎻忚堪: [鍗曚綅g/L] 鈹?
鈹?[ 鍒犻櫎 ] 鈹?
鈹斺攢鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹?
[+ 娣诲姞瀛楁<E7809B>]
姝ラ<EFBFBD>2.4锛欰I鐢熸垚Prompt锛堣嚜鍔ㄥ寲锛?
[ 馃<> 璁〢I甯<49>垜鐢熸垚鎻愮ず璇?]
鍚庡彴鑷<EFBFBD>姩鐢熸垚锛?
鈹佲攣鈹佲攣鈹佲攣鈹佲攣鈹佲攣鈹佲攣鈹佲攣鈹佲攣鈹佲攣鈹佲攣鈹佲攣鈹佲攣鈹佲攣鈹佲攣鈹佲攣鈹佲攣
浣犳槸涓€鍚嶉<EFBFBD>婀垮厤鐤<EFBFBD><EFBFBD>涓撳<EFBFBD>銆傝<EFBFBD>浠庝互涓嬬郴缁熸€х孩鏂戠嫾鐤?
€呯殑瀹為獙瀹ゆ<EFBFBD>鏌ユ姤鍛婁腑鎻愬彇鍏抽敭淇℃伅銆?
鎻愬彇瀛楁<EFBFBD>锛堝繀椤昏繑鍥炰互涓嬫墍鏈夊瓧娈碉級锛?
- 鎶楁牳鎶椾綋婊村害锛氬<E9949B> 1:320, 1:640
- 琛ヤ綋C3锛氬崟浣峠/L
**杈撳嚭鏍煎紡锛氫弗鏍肩殑JSON鏍煎紡锛?*
```json
{
"鎶楁牳鎶椾綋婊村害": "...",
"琛ヤ綋C3": "..."
}
```
鈹佲攣鈹佲攣鈹佲攣鈹佲攣鈹佲攣鈹佲攣鈹佲攣鈹佲攣鈹佲攣鈹佲攣鈹佲攣鈹佲攣鈹佲攣鈹佲攣鈹佲攣鈹佲攣
[ 缂栬緫Prompt ] [ 棰勮<E6A3B0>鏁堟灉 ] [ 淇濆瓨妯℃澘 ]
```
#### **2. 鍚庣<E98D9A>锛氭ā鏉跨<E98F89>鐞咥PI**
```typescript
// 鏂板<E98F82>API绔<49>
POST /api/v1/dc/tool-b/templates // 鍒涘缓鑷<E7BC93>畾涔夋ā鏉?
PUT /api/v1/dc/tool-b/templates/:id // 鏇存柊妯℃澘
DELETE /api/v1/dc/tool-b/templates/:id // 鍒犻櫎妯℃澘
GET /api/v1/dc/tool-b/templates/:id // 鑾峰彇妯℃澘璇︽儏
// Prompt鑷<74>姩鐢熸垚鏈嶅姟
POST /api/v1/dc/tool-b/templates/generate-prompt
Request:
{
"diseaseType": "绯荤粺鎬х孩鏂戠嫾鐤?,
"reportType": "瀹為獙瀹ゆ<E780B9>鏌?,
"fields": [
{ "name": "鎶楁牳鎶椾綋婊村害", "desc": "濡?1:320, 1:640" },
{ "name": "琛ヤ綋C3", "desc": "鍗曚綅g/L" }
]
}
Response:
{
"promptTemplate": "浣犳槸涓€鍚嶉<E98D9A>婀垮厤鐤<E58EA4><E990A4>涓撳<E6B693>...",
"estimatedTokens": 450
}
```
#### **3. AI Prompt鐢熸垚閫昏緫**
```typescript
// 浣跨敤鍏働rompt锛圡eta-Prompt锛?
async generatePrompt(
diseaseType: string,
reportType: string,
fields: { name: string; desc: string }[]
): Promise<string> {
const metaPrompt = `
浣犳槸涓€鍚嶅尰瀛<EFBFBD>I Prompt宸ョ▼甯堛€傝<E282AC>涓虹梾鍘嗙粨鏋勫寲鎻愬彇浠诲姟鐢熸垚涓撲笟鐨勬彁绀鸿瘝銆?
浠诲姟鑳屾櫙锛?
- 鐤剧梾绫诲瀷锛?{diseaseType}
- 鎶ュ憡绫诲瀷锛?{reportType}
鎻愬彇瀛楁<EFBFBD>锛?
${fields.map((f, i) => `${i + 1}. ${f.name}锛?{f.desc}`).join('\n')}
瑕佹眰锛?
1. 妯℃嫙璇ョ柧鐥呴<E990A5>鍩熺殑涓撳<E6B693>瑙掕壊
2. 娓呮櫚璇存槑姣忎釜瀛楁<E7809B>鐨勬彁鍙栬<E98D99>鍒?
3. 瑕佹眰杈撳嚭涓ユ牸鐨凧SON鏍煎紡
4. 澶勭悊"鏈<>彁鍙?鐨勬儏鍐?
璇风敓鎴愬畬鏁寸殑Prompt銆俙;
// 璋冪敤GPT-5鎴朇laude鐢熸垚Prompt
const llm = LLMFactory.getAdapter('gpt-5');
const response = await llm.chat([
{ role: 'user', content: metaPrompt }
]);
return response.content;
}
```
**鎶€鏈<E282AC>寒鐐癸細**
- 鉁?**Prompt鍗充唬鐮侊紙Prompt-as-Code锛?*锛氭ā鏉垮彲鐗堟湰鎺у埗銆丄/B娴嬭瘯
- 鉁?**AI鐢熸垚AI鐨凱rompt锛圡eta-Prompt锛?*锛氶檷浣庣敤鎴烽棬妲?
- 鉁?**妯℃澘甯傚満锛堟湭鏉ワ級**锛氱敤鎴峰彲鍒嗕韩銆佷笅杞戒紭璐ㄦā鏉?
**棰勮<E6A3B0>宸ユ椂锛?* 12灏忔椂
**褰卞搷鑼冨洿锛?*
- 鏂板<E98F82>锛歚CustomTemplateService.ts` (~300琛?
- 鏂板<E98F82>锛歚PromptGeneratorService.ts` (~200琛?
- 鍓嶇<E98D93>锛歋tep2Schema.tsx 鏂板<E98F82><EFBFBD>畾涔夋ā鏉跨紪杈慤I
- 鏁版嵁搴擄細DCTemplate琛ㄥ凡鏀<E587A1>寔锛屾棤闇€鏀瑰姩
---
## 馃搳 浼樺厛绾ц瘎浼?
| 鍊哄姟ID | 闂<><E99782> | 浼樺厛绾?| 宸ユ椂 | 褰卞搷鐢ㄦ埛 | 鎶€鏈<E282AC><E98F88>闄?|
|--------|------|--------|------|----------|----------|
| #1 | Excel瀵煎嚭涓嶄竴鑷?| P1 | 2h | 楂橈紙鏍稿績鍔熻兘锛?| 浣?|
| #2 | 杩涘害鏉℃樉绀轰紭鍖?| P2 | 3h | 涓<>紙浣撻獙浼樺寲锛?| 浣?|
| #3 | Excel棰勫<E6A3B0>鐞?| P1 | 16h | 楂橈紙鏁版嵁璐ㄩ噺锛?| 涓?|
| #4 | 鑷<>畾涔夋ā鏉?| P2 | 12h | 涓<>紙鎵╁睍鎬э級 | 涓?|
**鎬昏<E98EAC>锛?* 33灏忔椂锛堢害4涓<34>伐浣滄棩锛?
---
## 馃幆 寤鸿<E5AFA4>澶勭悊椤哄簭
### **Sprint 1锛氭牳蹇冨姛鑳戒慨澶嶏紙P1浼樺厛锛?*
1. 鉁?#1 - Excel瀵煎嚭淇<E59AAD><E6B787>锛?灏忔椂锛夆啋 **绔嬪嵆澶勭悊**
2. #3 - Excel棰勫<E6A3B0>鐞嗭紙16灏忔椂锛夆啋 **鍒嗛樁娈靛疄鐜?*
- Phase 1锛氳〃澶存竻娲楋紙2灏忔椂锛?
- Phase 2锛氬悎骞跺崟鍏冩牸灞曞紑锛?灏忔椂锛?
- Phase 3锛氬叕寮忓<E5AFAE>鐞嗭紙3灏忔椂锛?
- Phase 4锛氭棩鏈熺粺涓€锛?灏忔椂锛?
- Phase 5锛氫笉鍙<E7AC89><E98D99>瀛楃<E7809B>娓呯悊锛?灏忔椂锛?
- Phase 6锛氶泦鎴愭祴璇曪紙2灏忔椂锛?
### **Sprint 2锛氫綋楠屼紭鍖栵紙P2锛?*
1. #2 - 杩涘害鏉紭鍖栵紙3灏忔椂锛?
2. #4 - 鑷<>畾涔夋ā鏉匡紙12灏忔椂锛?
- Phase 1锛氬悗绔<E68297>ā鏉緾RUD锛?灏忔椂锛?
- Phase 2锛歅rompt鑷<74>姩鐢熸垚锛?灏忔椂锛?
- Phase 3锛氬墠绔<E5A2A0>ā鏉跨紪杈戝櫒锛?灏忔椂锛?
---
## 馃挕 闀挎湡浼樺寲寤鸿<E5AFA4>
### **1. 鏁版嵁璐ㄩ噺璇勫垎绯荤粺**
涓轰笂浼犵殑Excel鏂囦欢鎵撳垎锛?-100鍒嗭級锛?
- 鉁?90-100锛氫紭璐ㄦ暟鎹<E69A9F>紝鐩存帴澶勭悊
- 鈿狅笍 60-89锛氫竴鑸<E7ABB4>川閲忥紝鎻愮ず鍙<E3819A>兘闂<E58598><E99782>
- 鉂?0-59锛氫綆璐ㄩ噺锛屽己鍒惰<E98D92>姹傜敤鎴锋竻娲楀悗鍐嶄笂浼?
### **2. Excel妯℃澘鏍囧噯鍖?*
鎻愪緵鏍囧噯Excel妯℃澘涓嬭浇锛岀敤鎴锋寜妯℃澘濉<EFBFBD>啓锛屽噺灏戣剰鏁版嵁锛?
```
鐥呭巻缁撴瀯鍖栨爣鍑嗘ā鏉?v1.0.xlsx
- 琛ㄥご琛屽喕缁?
- 鏁版嵁楠岃瘉锛堜笅鎷夋<E98EB7>锛?
- 瀛楁<E7809B>璇存槑锛堟壒娉<E5A392>
- 绀轰緥鏁版嵁
```
### **3. 鏅鸿兘淇<E58598><E6B787>寤鸿<E5AFA4>**
妫€娴嬪埌闂<EFBFBD><EFBFBD>鏃讹紝AI缁欏嚭淇<EFBFBD><EFBFBD>寤鸿<EFBFBD>锛?
```
鈿狅笍 妫€娴嬪埌22涓<32>悎骞跺崟鍏冩牸锛屽彲鑳藉<E991B3>鑷存暟鎹<E69A9F>涪澶?
寤鸿<EFBFBD>鎿嶄綔锛?
[ 鑷<>姩灞曞紑鍚堝苟鍗曞厓鏍?] [ 蹇界暐骞剁户缁?]
```
---
## 馃摑 寮€鍙戣<E98D99>褰?
| 鏃ユ湡 | 澶勭悊鍐呭<E98D90> | 鐘舵€?| 澶囨敞 |
|------|---------|------|------|
| 2025-12-03 | 鍒涘缓鎶€鏈<E282AC>€哄姟鏂囨。 | 鉁?| 鍒濆<E98D92>璁板綍4涓<34>棶棰?|
| 2025-12-03 | #1 Excel瀵煎嚭椤哄簭淇<E7B0AD><E6B787> | 馃攧 | 宸蹭慨鏀逛唬鐮侊紝寰呴獙璇?|
| - | #2 杩涘害鏉′紭鍖?| 鈴革笍 | 寰呭紑鍙?|
| - | #3 Excel棰勫<E6A3B0>鐞?| 鈴革笍 | 寰呭紑鍙?|
| - | #4<>畾涔夋ā鏉?| 鈴革笍 | 寰呭紑鍙?|
---
## 馃敆 鐩稿叧鏂囨。
- [鎶€鏈<EFBFBD><EFBFBD>璁℃枃妗細宸ュ叿 B](../02-鎶€鏈<E282AC><E98F88>璁?鎶€鏈<E282AC><E98F88>璁℃枃妗細宸ュ叿%20B%20-%20鐥呭巻缁撴瀯鍖栨満鍣ㄤ汉%20(The%20AI%20Structurer).md)
- [API璁捐<EFBFBD>鏂囨。](../02-鎶€鏈<E282AC><E98F88>璁?API璁捐<E79281>鏂囨。-DC妯″潡锛堝畬鏁寸増锛?md)
- [寮€鍙戣<E98D99>鍒抅(../04-寮€鍙戣<E98D99>鍒?DC妯″潡Tool-B寮€鍙戣<E98D99>鍒?md)
- [浜戝師鐢熷紑鍙戣<E98D99>鑼僝(../../../04-寮€鍙戣<E98D99>鑼?08-浜戝師鐢熷紑鍙戣<E98D99>鑼?md)
---
**鏂囨。缁存姢锛?* 姣忔<E5A7A3>澶勭悊鎶€鏈<E282AC>€哄姟鏃舵洿鏂版<E98F82>鏂囨。