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%)
620 lines
14 KiB
Markdown
620 lines
14 KiB
Markdown
# 鏍稿績涓氬姟瑙勫垯鎬昏<E98EAC>
|
||
|
||
> **鐗堟湰锛?* v1.0
|
||
> **鍒涘缓鏃ユ湡锛?* 2025-10-10
|
||
> **閫傜敤鑼冨洿锛?* 鏁翠釜绯荤粺
|
||
|
||
---
|
||
|
||
## 馃搵 鐩<>綍
|
||
|
||
1. [鐢ㄦ埛绠$悊瑙勫垯](#鐢ㄦ埛绠$悊瑙勫垯)
|
||
2. [椤圭洰绠$悊瑙勫垯](#椤圭洰绠$悊瑙勫垯)
|
||
3. [鏅鸿兘浣撶<E6B5A3>鐞嗚<E9909E>鍒橾(#鏅鸿兘浣撶<EFBFBD>鐞嗚<EFBFBD>鍒?
|
||
4. [瀵硅瘽绠$悊瑙勫垯](#瀵硅瘽绠$悊瑙勫垯)
|
||
5. [鐭ヨ瘑搴撶<E690B4>鐞嗚<E9909E>鍒橾(#鐭ヨ瘑搴撶<EFBFBD>鐞嗚<EFBFBD>鍒?
|
||
6. [鏉冮檺鎺у埗瑙勫垯](#鏉冮檺鎺у埗瑙勫垯)
|
||
7. [閰嶉<EFBFBD>闄愬埗瑙勫垯](#閰嶉<E996B0>闄愬埗瑙勫垯)
|
||
|
||
---
|
||
|
||
## 鐢ㄦ埛绠$悊瑙勫垯
|
||
|
||
### 娉ㄥ唽瑙勫垯
|
||
|
||
**BR-U001: 閭<><E996AD>鍞<EFBFBD>竴鎬?*
|
||
- 瑙勫垯锛氭瘡涓<E798A1>偖绠卞彧鑳芥敞鍐屼竴涓<E7ABB4>处鍙?
|
||
- 楠岃瘉鏃舵満锛氭敞鍐屾椂
|
||
- 閿欒<E996BF>鎻愮ず锛?璇ラ偖绠卞凡琚<E587A1>敞鍐?
|
||
|
||
**BR-U002: 閭<><E996AD>鏍煎紡楠岃瘉**
|
||
- 瑙勫垯锛氬繀椤绘槸鏈夋晥鐨勯偖绠辨牸寮?
|
||
- 姝e垯锛歚^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}$`
|
||
- 閿欒<E996BF>鎻愮ず锛?閭<><E996AD>鏍煎紡涓嶆<E6B693>纭?
|
||
|
||
**BR-U003: 瀵嗙爜寮哄害**
|
||
- 瑙勫垯锛氬瘑鐮佽嚦灏?浣嶏紝鍖呭惈瀛楁瘝鍜屾暟瀛?
|
||
- 姝e垯锛歚^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d@$!%*#?&]{8,}$`
|
||
- 閿欒<E996BF>鎻愮ず锛?瀵嗙爜鑷冲皯8浣嶏紝闇€鍖呭惈瀛楁瘝鍜屾暟瀛?
|
||
|
||
**BR-U004: 榛樿<E6A69B>璇曠敤鏈?*
|
||
- 瑙勫垯锛氭柊鐢ㄦ埛榛樿<E6A69B>鑾峰緱30澶╄瘯鐢ㄦ湡
|
||
- 瀹炵幇锛歚trial_ends_at = now() + 30澶ー
|
||
|
||
### 鐧诲綍瑙勫垯
|
||
|
||
**BR-U005: 璐︽埛鐘舵€佹<E282AC>鏌?*
|
||
- 瑙勫垯锛氬彧鏈塻tatus=active鐨勭敤鎴峰彲浠ョ櫥褰?
|
||
- 鐘舵€侊細
|
||
- `active` - 鍙<>櫥褰?
|
||
- `inactive` - 鏈<>縺娲伙紝涓嶅彲鐧诲綍
|
||
- `suspended` - 宸叉殏鍋滐紝涓嶅彲鐧诲綍
|
||
|
||
**BR-U006: 瀵嗙爜閿欒<E996BF>娆℃暟闄愬埗**
|
||
- 瑙勫垯锛?鍒嗛挓鍐呮渶澶?娆¢敊璇<E6958A>皾璇?
|
||
- 瓒呰繃娆℃暟锛氫复鏃堕攣瀹氳处鎴?5鍒嗛挓
|
||
- 瀹炵幇锛氫娇鐢≧edis璁板綍澶辫触娆℃暟
|
||
|
||
**BR-U007: JWT Token鏈夋晥鏈?*
|
||
- Access Token锛?澶?
|
||
- Refresh Token锛?0澶?
|
||
- 杩囨湡鍚庨渶瑕侀噸鏂扮櫥褰?
|
||
|
||
---
|
||
|
||
## 椤圭洰绠$悊瑙勫垯
|
||
|
||
### 鍒涘缓瑙勫垯
|
||
|
||
**BR-P001: 椤圭洰鏁伴噺鏃犻檺鍒?*
|
||
- 瑙勫垯锛氱敤鎴峰彲浠ュ垱寤轰换鎰忔暟閲忕殑椤圭洰
|
||
- 鐞嗙敱锛氶」鐩<E3808D>槸鏍稿績鍔熻兘锛屼笉搴旈檺鍒?
|
||
|
||
**BR-P002: 椤圭洰鍚嶇О蹇呭~**
|
||
- 瑙勫垯锛氶」鐩<E3808D>悕绉颁笉鑳戒负绌?
|
||
- 闀垮害锛?-200瀛楃<E7809B>
|
||
- 閿欒<E996BF>鎻愮ず锛?椤圭洰鍚嶇О涓嶈兘涓虹┖"
|
||
|
||
**BR-P003: 椤圭洰鎻忚堪蹇呭~**
|
||
- 瑙勫垯锛氶」鐩<E3808D>弿杩颁笉鑳戒负绌猴紙鐢ㄤ簬涓婁笅鏂囨敞鍏ワ級
|
||
- 鏈€灏忛暱搴︼細10瀛楃<E7809B>
|
||
- 閿欒<E996BF>鎻愮ず锛?璇疯緭鍏ラ」鐩<E3808D>儗鏅<E58497>俊鎭<E4BF8A>紝鑷冲皯10涓<30>瓧绗?
|
||
|
||
### 鏇存柊瑙勫垯
|
||
|
||
**BR-P004: 椤圭洰鑳屾櫙鍔ㄦ€佹洿鏂?*
|
||
- 瑙勫垯锛氱敤鎴峰彲浠ラ殢鏃剁紪杈戦」鐩<E3808D>弿杩?
|
||
- 瑙勫垯锛氬彲浠?鍥哄畾"AI鍥炲<E98DA5>鍒伴」鐩<E3808D>弿杩颁腑
|
||
- 瀹炵幇锛氳拷鍔犲埌description瀛楁<E7809B>鏈<EFBFBD>熬
|
||
|
||
**BR-P005: 椤圭洰鎵€鏈夋潈楠岃瘉**
|
||
- 瑙勫垯锛氬彧鑳戒慨鏀?鍒犻櫎鑷<E6AB8E>繁鐨勯」鐩?
|
||
- 楠岃瘉锛歚project.userId === currentUser.id`
|
||
- 閿欒<E996BF>鎻愮ず锛?鏃犳潈闄愭搷浣滆<E6B5A3>椤圭洰"
|
||
|
||
### 鍒犻櫎瑙勫垯
|
||
|
||
**BR-P006: 绾ц仈鍒犻櫎**
|
||
- 瑙勫垯锛氬垹闄ら」鐩<E3808D>椂锛岀骇鑱斿垹闄ゅ叾鎵€鏈夊<E98F88>璇濆拰娑堟伅
|
||
- 瀹炵幇锛氭暟鎹<E69A9F>簱ON DELETE CASCADE
|
||
- 纭<><E7BAAD>锛氬墠绔<E5A2A0>渶瑕佷簩娆$‘璁?
|
||
|
||
**BR-P007: 杞<>垹闄わ紙鍙<E7B499>€夛級**
|
||
- 瑙勫垯锛氶噸瑕侀」鐩<E3808D>彲浠ュ厛杞<E58E9B>垹闄わ紝淇濈暀30澶?
|
||
- 瀹炵幇锛氭坊鍔燿eleted_at瀛楁<E7809B>
|
||
- 澶囨敞锛氬綋鍓嶇増鏈<E5A297>殏涓嶅疄鐜?
|
||
|
||
---
|
||
|
||
## 鏅鸿兘浣撶<E6B5A3>鐞嗚<E9909E>鍒?
|
||
|
||
### 鏅鸿兘浣撻厤缃?
|
||
|
||
**BR-A001: 鏅鸿兘浣撻厤缃<E58EA4>寲绠$悊**
|
||
- 瑙勫垯锛氭櫤鑳戒綋閰嶇疆瀛樺偍鍦╜config/agents.yaml`
|
||
- 瑙勫垯锛氫笉閫氳繃鏁版嵁搴撶<E690B4>鐞?
|
||
- 瑙勫垯锛氫慨鏀归厤缃<E58EA4>悗闇€瑕侀噸鍚<E599B8>湇鍔?
|
||
|
||
**BR-A002: 鏅鸿兘浣撶姸鎬?*
|
||
- `active` - 鍙<>敤锛岀敤鎴峰彲浠ラ€夋嫨
|
||
- `inactive` - 涓嶅彲鐢<E5BDB2>紝闅愯棌
|
||
- `testing` - 娴嬭瘯涓<E798AF>紝浠呯<E6B5A0>鐞嗗憳鍙<E686B3><E98D99>
|
||
|
||
**BR-A003: 鏅鸿兘浣撳垎绫?*
|
||
- 閫夐<E996AB>闃舵<E99783>锛氶€夐<E282AC>璇勪环銆佺<E98A86>瀛﹂棶棰樻⒊鐞?
|
||
- 鐮旂┒璁捐<E79281>锛歅ICOS鏋勫缓銆佽<E98A86>瀵熸寚鏍囪<E98F8D>璁°€丆RF鍒跺畾銆佹牱鏈<E789B1>噺璁$畻銆佷复搴婄爺绌舵柟妗堟挵鍐?
|
||
- 璁烘枃闃舵<E99783>锛氳<E9949B>鏂囨鼎鑹层€佽<E282AC>鏂囩炕璇戙€佹柟娉曞<E5A889>璇勫<E79287>銆佹湡鍒婃柟娉曞<E5A889>璇勫<E79287>銆佹湡鍒婄ǹ绾﹁瘎瀹?
|
||
|
||
### Prompt绠$悊
|
||
|
||
**BR-A004: Prompt鏂囦欢绠$悊**
|
||
- 瑙勫垯锛歅rompt瀛樺偍鍦╜backend/prompts/`鐩<>綍
|
||
- 鍛藉悕锛歚{agent_id}_system.txt` 鍜?`{agent_id}_user.txt`
|
||
- 鐗堟湰锛氶€氳繃Git绠$悊鐗堟湰
|
||
|
||
**BR-A005: Prompt鍙橀噺娉ㄥ叆**
|
||
- 瑙勫垯锛歅rompt涓<74>彲浠ヤ娇鐢ㄥ彉閲?
|
||
- 鏍煎紡锛歚{variable_name}`
|
||
- 绀轰緥锛歚{project_description}`, `{user_question}`
|
||
|
||
### 妯″瀷閰嶇疆
|
||
|
||
**BR-A006: 妯″瀷鍙傛暟閰嶇疆**
|
||
- 瑙勫垯锛氭瘡涓<E798A1>櫤鑳戒綋鍙<E7B68B>互閰嶇疆涓嶅悓妯″瀷鐨勫弬鏁?
|
||
- 鍙傛暟锛?
|
||
- `temperature`: 0.0-1.0
|
||
- `max_tokens`: 鏈€澶ц緭鍑簍oken鏁?
|
||
- `top_p`: 0.0-1.0
|
||
|
||
**BR-A007: 妯″瀷鍒囨崲**
|
||
- 瑙勫垯锛氱敤鎴峰彲浠ュ湪瀵硅瘽涓<E798BD>垏鎹㈡ā鍨?
|
||
- 鍙<>€夋ā鍨嬶細
|
||
- `deepseek-v3` (榛樿<E6A69B>)
|
||
- `qwen3-72b`
|
||
- `gemini-2.0-flash` (鍙<>€?
|
||
|
||
---
|
||
|
||
## 瀵硅瘽绠$悊瑙勫垯
|
||
|
||
### 鍒涘缓瀵硅瘽
|
||
|
||
**BR-C001: 瀵硅瘽褰掑睘**
|
||
- 瑙勫垯锛氬<E9949B>璇濆彲浠ュ睘浜庨」鐩<E3808D>紝涔熷彲浠ユ槸鍏ㄥ眬蹇<E79CAC>€熼棶绛?
|
||
- 椤圭洰瀵硅瘽锛歚projectId` 涓嶄负null
|
||
- 鍏ㄥ眬蹇<E79CAC>€熼棶绛旓細`projectId` 涓簄ull
|
||
|
||
**BR-C002: 瀵硅瘽鏍囬<E98F8D>鑷<EFBFBD>姩鐢熸垚**
|
||
- 瑙勫垯锛氶<E9949B>娆″垱寤哄<E5AFA4>璇濇椂锛屾爣棰樹负"涓巤鏅鸿兘浣撳悕绉皚鐨勫<E990A8>璇?
|
||
- 瑙勫垯锛氬彲浠ユ墜鍔ㄤ慨鏀规爣棰?
|
||
|
||
### 涓婁笅鏂囩<E98F82>鐞?
|
||
|
||
**BR-C003: 椤圭洰鑳屾櫙鑷<E6AB99>姩娉ㄥ叆**
|
||
- 瑙勫垯锛氬<E9949B>鏋滃<E98F8B>璇濆睘浜庨」鐩<E3808D>紝鑷<E7B49D>姩灏嗛」鐩甦escription娉ㄥ叆涓婁笅鏂?
|
||
- 娉ㄥ叆浣嶇疆锛歋ystem prompt涔嬪悗
|
||
- 鏍煎紡锛歚# 椤圭洰鑳屾櫙\n{project.description}`
|
||
|
||
**BR-C004: 鍘嗗彶瀵硅瘽绠$悊**
|
||
- 瑙勫垯锛氫繚鐣欐渶杩?0杞<30><E69D9E>璇濅綔涓轰笂涓嬫枃
|
||
- 瑙勫垯锛氳秴杩?0杞<30>殑瀵硅瘽锛岃繘琛屾憳瑕佸帇缂?
|
||
- Token闄愬埗锛氫笂涓嬫枃鎬籺oken鏁颁笉瓒呰繃6000
|
||
|
||
**BR-C005: 鐭ヨ瘑搴撳紩鐢?*
|
||
- 瑙勫垯锛氱敤鎴峰彲浠ラ€氳繃`@鐭ヨ瘑搴撳悕绉癭寮曠敤鐭ヨ瘑搴?
|
||
- 瑙勫垯锛氭渶澶氬悓鏃跺紩鐢?涓<>煡璇嗗簱
|
||
- 妫€绱㈡暟閲忥細姣忎釜鐭ヨ瘑搴撴<E690B4>绱<EFBFBD>op 5缁撴灉
|
||
|
||
### 娑堟伅鍥哄畾
|
||
|
||
**BR-C006: 鍥哄畾娑堟伅鍒伴」鐩<E3808D>儗鏅?*
|
||
- 瑙勫垯锛氬彧鏈堿I鍥炲<E98DA5>鍙<EFBFBD>互琚<E4BA92>浐瀹?
|
||
- 瑙勫垯锛氬彧鏈夐」鐩<E3808D>唴瀵硅瘽鍙<E798BD>互鍥哄畾锛堝叏灞€瀵硅瘽涓嶅彲锛?
|
||
- 瀹炵幇锛氳拷鍔犲埌project.description鏈<6E>熬
|
||
- 鏍煎紡锛?
|
||
```
|
||
--- 鏉ヨ嚜瀵硅瘽鐨勮ˉ鍏?---
|
||
{message.content}
|
||
```
|
||
|
||
**BR-C007: 鍥哄畾娑堟伅鏍囪<E98F8D>**
|
||
- 瑙勫垯锛氳<E9949B>鍥哄畾鐨勬秷鎭<E7A7B7>紝isPinned瀛楁<E7809B>璁句负true
|
||
- 瑙勫垯锛氬浐瀹氬悗涓嶅彲鍙栨秷锛堢畝鍖栧疄鐜帮級
|
||
|
||
### 娴佸紡杈撳嚭
|
||
|
||
**BR-C008: Server-Sent Events**
|
||
- 瑙勫垯锛氫娇鐢⊿SE瀹炵幇娴佸紡杈撳嚭
|
||
- 浜嬩欢绫诲瀷锛?
|
||
- `start`: 寮€濮嬬敓鎴?
|
||
- `token`: 姣忎釜token
|
||
- `done`: 瀹屾垚
|
||
- `error`: 閿欒<E996BF>
|
||
|
||
**BR-C009: 娴佸紡杈撳嚭瓒呮椂**
|
||
- 瑙勫垯锛氬崟涓<E5B49F><E6B693>姹傛渶闀?0绉?
|
||
- 瓒呮椂鍚庯細杩斿洖宸茬敓鎴愮殑鍐呭<E98D90>
|
||
- 閿欒<E996BF>鎻愮ず锛?鐢熸垚瓒呮椂锛岃<E9949B>閲嶈瘯"
|
||
|
||
---
|
||
|
||
## 鐭ヨ瘑搴撶<E690B4>鐞嗚<E9909E>鍒?
|
||
|
||
### 鏁伴噺闄愬埗
|
||
|
||
**BR-K001: 鐭ヨ瘑搴撴暟閲忛檺鍒?*
|
||
- 瑙勫垯锛氭瘡涓<E798A1>敤鎴锋渶澶氬垱寤?涓<>煡璇嗗簱
|
||
- 楠岃瘉鏃舵満锛氬垱寤虹煡璇嗗簱鏃?
|
||
- 閿欒<E996BF>鎻愮ず锛?宸茶揪鍒扮煡璇嗗簱鏁伴噺涓婇檺锛?涓<>級"
|
||
|
||
**BR-K002: 鏂囨。鏁伴噺闄愬埗**
|
||
- 瑙勫垯锛氭瘡涓<E798A1>煡璇嗗簱鏈€澶氫笂浼?0涓<30>枃妗?
|
||
- 楠岃瘉鏃舵満锛氫笂浼犳枃妗f椂
|
||
- 閿欒<E996BF>鎻愮ず锛?璇ョ煡璇嗗簱鏂囨。鏁伴噺宸茶揪涓婇檺锛?0涓<30>級"
|
||
|
||
### 鏂囨。涓婁紶
|
||
|
||
**BR-K003: 鏂囦欢鏍煎紡闄愬埗**
|
||
- 瑙勫垯锛氬彧鏀<E5BDA7>寔PDF鍜孌OCX鏍煎紡
|
||
- MIME绫诲瀷锛?
|
||
- `application/pdf`
|
||
- `application/vnd.openxmlformats-officedocument.wordprocessingml.document`
|
||
- 閿欒<E996BF>鎻愮ず锛?浠呮敮鎸丳DF鍜孌OCX鏍煎紡"
|
||
|
||
**BR-K004: 鏂囦欢澶у皬闄愬埗**
|
||
- 瑙勫垯锛氬崟涓<E5B49F>枃浠舵渶澶?0MB
|
||
- 楠岃瘉鏃舵満锛氫笂浼犲墠锛堝墠绔<E5A2A0>級鍜屼笂浼犲悗锛堝悗绔<E68297>級
|
||
- 閿欒<E996BF>鎻愮ず锛?鏂囦欢澶у皬瓒呰繃闄愬埗锛堟渶澶?0MB锛?
|
||
|
||
**BR-K005: 鏂囦欢鍚嶅敮涓€鎬?*
|
||
- 瑙勫垯锛氬悓涓€鐭ヨ瘑搴撳唴锛屾枃浠跺悕涓嶈兘閲嶅<E996B2>
|
||
- 楠岃瘉锛氭<E9949B>鏌ユ槸鍚﹀凡瀛樺湪鍚屽悕鏂囦欢
|
||
- 澶勭悊锛氳嚜鍔ㄩ噸鍛藉悕锛堟坊鍔犳椂闂存埑锛?
|
||
|
||
### 鏂囨。澶勭悊
|
||
|
||
**BR-K006: 鏂囨。澶勭悊鐘舵€?*
|
||
- 鐘舵€佹祦杞<E7A5A6>細
|
||
1. `uploading` - 涓婁紶涓?
|
||
2. `processing` - Dify澶勭悊涓?
|
||
3. `completed` - 澶勭悊瀹屾垚
|
||
4. `failed` - 澶勭悊澶辫触
|
||
|
||
**BR-K007: 澶勭悊澶辫触閲嶈瘯**
|
||
- 瑙勫垯锛氬<E9949B>鐞嗗け璐ョ殑鏂囨。涓嶈嚜鍔ㄩ噸璇?
|
||
- 瑙勫垯锛氱敤鎴峰彲浠ュ垹闄ゅ悗閲嶆柊涓婁紶
|
||
- 閿欒<E996BF>淇℃伅锛氳<E9949B>褰曞湪error_message瀛楁<E7809B>
|
||
|
||
**BR-K008: 寮傛<E5AFAE>澶勭悊**
|
||
- 瑙勫垯锛氭枃妗d笂浼犲悗绔嬪嵆杩斿洖
|
||
- 瑙勫垯锛氬悗鍙板紓姝ユ彁浜ゅ埌Dify澶勭悊
|
||
- 瑙勫垯锛氬墠绔<E5A2A0>疆璇㈣幏鍙栧<E98D99>鐞嗙姸鎬?
|
||
|
||
### 鐭ヨ瘑搴撴<E690B4>绱?
|
||
|
||
**BR-K009: 娣峰悎妫€绱?*
|
||
- 瑙勫垯锛氫娇鐢ㄥ叧閿<E58FA7>瘝妫€绱?+ 璇<>箟妫€绱?
|
||
- 瑙勫垯锛氬惎鐢≧eranking閲嶆帓搴?
|
||
- Top K锛?涓<>粨鏋?
|
||
- 鐩镐技搴﹂槇鍊硷細0.5
|
||
|
||
**BR-K010: 妫€绱㈢粨鏋滃紩鐢?*
|
||
- 瑙勫垯锛欰I鍥炵瓟蹇呴』娉ㄦ槑寮曠敤鏉ユ簮
|
||
- 鏍煎紡锛歚[鏂囨。鍚峕 鍐呭<E98D90>...`
|
||
- 瑙勫垯锛氬墠绔<E5A2A0>樉绀哄彲鐐瑰嚮鐨勫紩鐢ㄦ爣璁?
|
||
|
||
---
|
||
|
||
## 鏉冮檺鎺у埗瑙勫垯
|
||
|
||
### 鐢ㄦ埛鏉冮檺
|
||
|
||
**BR-P001: 瑙掕壊瀹氫箟**
|
||
- `user` - 鏅<>€氱敤鎴?
|
||
- 鍙<>互浣跨敤鎵€鏈夊姛鑳?
|
||
- 鍙楅厤棰濋檺鍒?
|
||
- `admin` - 绠$悊鍛?
|
||
- 鎵€鏈塽ser鏉冮檺
|
||
- 鍙<>互璁块棶杩愯惀鍚庡彴
|
||
- 鍙<>互鏌ョ湅鎵€鏈夌敤鎴锋暟鎹?
|
||
|
||
### 鏁版嵁闅旂<E99785>
|
||
|
||
**BR-P002: 鐢ㄦ埛鏁版嵁闅旂<E99785>**
|
||
- 瑙勫垯锛氱敤鎴峰彧鑳借<E991B3>闂<EFBFBD>嚜宸卞垱寤虹殑鏁版嵁
|
||
- 楠岃瘉锛氭墍鏈夋煡璇㈠繀椤诲寘鍚玼serId杩囨护
|
||
- 瀹炵幇锛?
|
||
```sql
|
||
WHERE user_id = currentUser.id
|
||
```
|
||
|
||
**BR-P003: 椤圭洰鏉冮檺楠岃瘉**
|
||
- 瑙勫垯锛氫慨鏀?鍒犻櫎椤圭洰鍓嶏紝楠岃瘉鎵€鏈夋潈
|
||
- 瀹炵幇锛?
|
||
```typescript
|
||
const project = await prisma.project.findFirst({
|
||
where: { id: projectId, userId: currentUser.id }
|
||
})
|
||
if (!project) throw new UnauthorizedError()
|
||
```
|
||
|
||
### 绠$悊鍛樻潈闄?
|
||
|
||
**BR-P004: 鐢ㄦ埛绠$悊鏉冮檺**
|
||
- 瑙勫垯锛氬彧鏈塧dmin鍙<6E>互鏌ョ湅鐢ㄦ埛鍒楄〃
|
||
- 瑙勫垯锛氬彧鏈塧dmin鍙<6E>互淇<E4BA92>敼鐢ㄦ埛鐘舵€?
|
||
- 瑙勫垯锛歛dmin涓嶈兘鍒犻櫎鐢ㄦ埛锛堝彧鑳芥殏鍋滐級
|
||
|
||
**BR-P005: 瀵硅瘽鏌ョ湅鏉冮檺**
|
||
- 瑙勫垯锛氬彧鏈塧dmin鍙<6E>互鏌ョ湅鐢ㄦ埛瀵硅瘽
|
||
- 瑙勫垯锛氬繀椤昏<E6A4A4>褰曞<E8A4B0>璁℃棩蹇?
|
||
- 瑙勫垯锛氭晱鎰熶俊鎭<E4BF8A>渶瑕佽劚鏁忥紙濡傞偖绠便€佹墜鏈哄彿锛?
|
||
|
||
---
|
||
|
||
## 閰嶉<E996B0>闄愬埗瑙勫垯
|
||
|
||
### 鐭ヨ瘑搴撻厤棰?
|
||
|
||
**BR-Q001: 鐭ヨ瘑搴撴暟閲忛厤棰?*
|
||
- 榛樿<E6A69B>閰嶉<E996B0>锛?涓<>煡璇嗗簱
|
||
- 璁板綍瀛楁<E7809B>锛歚users.kb_quota`, `users.kb_used`
|
||
- 鏇存柊鏃舵満锛氬垱寤?鍒犻櫎鐭ヨ瘑搴撴椂
|
||
|
||
**BR-Q002: 鏂囨。鏁伴噺閰嶉<E996B0>**
|
||
- 榛樿<E6A69B>閰嶉<E996B0>锛?0涓<30>枃妗?鐭ヨ瘑搴?
|
||
- 妫€鏌ユ椂鏈猴細涓婁紶鏂囨。鍓?
|
||
- 瀹炵幇锛?
|
||
```sql
|
||
SELECT COUNT(*) FROM documents
|
||
WHERE kb_id = ? AND status != 'failed'
|
||
```
|
||
|
||
### 瀛樺偍閰嶉<E996B0>锛堥<E9949B>鐣欙級
|
||
|
||
**BR-Q003: 瀛樺偍绌洪棿閰嶉<E996B0>**
|
||
- 榛樿<E6A69B>閰嶉<E996B0>锛?GB/鐢ㄦ埛
|
||
- 褰撳墠鐗堟湰锛氫笉寮哄埗闄愬埗
|
||
- 鏈<>潵锛氬彲浠ユ牴鎹<E789B4>疄闄呴渶姹傚惎鐢?
|
||
|
||
### API闄愭祦
|
||
|
||
**BR-Q004: API璇锋眰棰戠巼闄愬埗**
|
||
- 鏅<>€氱敤鎴凤細100娆?鍒嗛挓
|
||
- 绠$悊鍛橈細500娆?鍒嗛挓
|
||
- 瀹炵幇锛氫娇鐢≧edis + 婊戝姩绐楀彛绠楁硶
|
||
|
||
**BR-Q005: 鐧诲綍鎺ュ彛闄愭祦**
|
||
- 瑙勫垯锛?娆?鍒嗛挓
|
||
- 瑙勫垯锛欼P鍜岃处鎴峰弻閲嶉檺鍒?
|
||
- 瓒呰繃鍚庯細涓存椂灏佺<E7818F>15鍒嗛挓
|
||
|
||
---
|
||
|
||
## 涓氬姟娴佺▼
|
||
|
||
### 瀹屾暣鐨勫<E990A8>璇濇祦绋?
|
||
|
||
```
|
||
1. 鐢ㄦ埛閫夋嫨鏅鸿兘浣?
|
||
鈫?
|
||
2. 鍒涘缓瀵硅瘽锛堝彲閫夊叧鑱旈」鐩<E3808D>級
|
||
鈫?
|
||
3. 鐢ㄦ埛鍙戦€佹秷鎭<E7A7B7>紙鍙<E7B499>€夊紩鐢ㄧ煡璇嗗簱锛?
|
||
鈫?
|
||
4. 鍚庣<E98D9A>缁勮<E7BC81>涓婁笅鏂囷細
|
||
- 椤圭洰鑳屾櫙锛堝<E9949B>鏈夛級
|
||
- 鏅鸿兘浣揝ystem Prompt
|
||
- 鍘嗗彶瀵硅瘽锛堟渶杩?0杞<30>級
|
||
- 鐭ヨ瘑搴撴<E690B4>绱㈢粨鏋滐紙濡傛湁锛?
|
||
- 褰撳墠鐢ㄦ埛闂<E59F9B><E99782>
|
||
鈫?
|
||
5. 璋冪敤LLM锛堟祦寮忚緭鍑猴級
|
||
鈫?
|
||
6. 淇濆瓨娑堟伅鍒版暟鎹<E69A9F>簱
|
||
鈫?
|
||
7. 鐢ㄦ埛鍙<E59F9B>€夛細鍥哄畾娑堟伅鍒伴」鐩<E3808D>儗鏅?
|
||
```
|
||
|
||
### 鐭ヨ瘑搴撴枃妗e<E5A697>鐞嗘祦绋?
|
||
|
||
```
|
||
1. 鐢ㄦ埛涓婁紶鏂囨。
|
||
鈫?
|
||
2. 楠岃瘉锛?
|
||
- 鏂囦欢鏍煎紡
|
||
- 鏂囦欢澶у皬
|
||
- 鏁伴噺闄愬埗
|
||
鈫?
|
||
3. 涓婁紶鍒板<E98D92>璞″瓨鍌<E793A8>紙OSS锛?
|
||
鈫?
|
||
4. 鍒涘缓document璁板綍锛坰tatus: uploading锛?
|
||
鈫?
|
||
5. 寮傛<E5AFAE>鎻愪氦鍒癉ify锛?
|
||
- 璋冪敤Dify涓婁紶API
|
||
- 鑾峰彇dify_document_id
|
||
鈫?
|
||
6. 杞<><E69D9E>澶勭悊鐘舵€侊紙姣?绉掞級锛?
|
||
- processing 鈫?鏇存柊progress
|
||
- completed 鈫?鏇存柊status, segments_count, tokens_count
|
||
- failed 鈫?鏇存柊status, error_message
|
||
鈫?
|
||
7. 鏇存柊鐭ヨ瘑搴撶粺璁★細
|
||
- file_count
|
||
- total_size_bytes
|
||
```
|
||
|
||
---
|
||
|
||
## 鏁版嵁涓€鑷存€ц<E282AC>鍒?
|
||
|
||
### 缁熻<E7BC81>瀛楁<E7809B>鏇存柊
|
||
|
||
**BR-D001: 椤圭洰瀵硅瘽鏁扮粺璁?*
|
||
- 瀛楁<E7809B>锛歚projects.conversation_count`
|
||
- 鏇存柊鏃舵満锛氬垱寤?鍒犻櫎瀵硅瘽鏃?
|
||
- 瀹炵幇锛氫娇鐢ㄤ簨鍔′繚璇佷竴鑷存€?
|
||
|
||
**BR-D002: 鐭ヨ瘑搴撴枃妗f暟缁熻<E7BC81>**
|
||
- 瀛楁<E7809B>锛歚knowledge_bases.file_count`
|
||
- 鏇存柊鏃舵満锛氭枃妗g姸鎬佸彉涓篶ompleted鎴栧垹闄ゆ椂
|
||
- 璁$畻锛氬彧缁熻<E7BC81>status='completed'鐨勬枃妗?
|
||
|
||
**BR-D003: 鐢ㄦ埛鐭ヨ瘑搴撴暟缁熻<E7BC81>**
|
||
- 瀛楁<E7809B>锛歚users.kb_used`
|
||
- 鏇存柊鏃舵満锛氬垱寤?鍒犻櫎鐭ヨ瘑搴撴椂
|
||
- 楠岃瘉锛氬垱寤哄墠妫€鏌ユ槸鍚﹁秴杩噏uota
|
||
|
||
### 绾ц仈鍒犻櫎
|
||
|
||
**BR-D004: 鐢ㄦ埛鍒犻櫎绾ц仈**
|
||
- 瑙勫垯锛氬垹闄ょ敤鎴锋椂锛岀骇鑱斿垹闄ゆ墍鏈夊叧鑱旀暟鎹?
|
||
- 鍖呮嫭锛歱rojects, conversations, messages, knowledge_bases, documents
|
||
- 瀹炵幇锛氭暟鎹<E69A9F>簱ON DELETE CASCADE
|
||
|
||
**BR-D005: 椤圭洰鍒犻櫎绾ц仈**
|
||
- 瑙勫垯锛氬垹闄ら」鐩<E3808D>椂锛岀骇鑱斿垹闄ゆ墍鏈夊<E98F88>璇濆拰娑堟伅
|
||
- 瀹炵幇锛氭暟鎹<E69A9F>簱ON DELETE CASCADE
|
||
|
||
**BR-D006: 鐭ヨ瘑搴撳垹闄ょ骇鑱?*
|
||
- 瑙勫垯锛氬垹闄ょ煡璇嗗簱鏃讹細
|
||
1. 绾ц仈鍒犻櫎鏁版嵁搴撲腑鐨刣ocuments
|
||
2. 璋冪敤Dify API鍒犻櫎dataset
|
||
3. 鍒犻櫎瀵硅薄瀛樺偍涓<E5818D>殑鏂囦欢
|
||
|
||
---
|
||
|
||
## 寮傚父澶勭悊瑙勫垯
|
||
|
||
### 閿欒<E996BF>绫诲瀷
|
||
|
||
**BR-E001: 涓氬姟閿欒<E996BF>**
|
||
- 楠岃瘉澶辫触锛欻TTP 422
|
||
- 璧勬簮涓嶅瓨鍦<E793A8>細HTTP 404
|
||
- 鏉冮檺涓嶈冻锛欻TTP 403
|
||
- 閰嶉<E996B0>瓒呴檺锛欻TTP 403
|
||
|
||
**BR-E002: 绯荤粺閿欒<E996BF>**
|
||
- 鏁版嵁搴撻敊璇<E6958A>細HTTP 500
|
||
- 缃戠粶閿欒<E996BF>锛欻TTP 503
|
||
- Dify鏈嶅姟閿欒<E996BF>锛欻TTP 503
|
||
|
||
### 閿欒<E996BF>鍝嶅簲
|
||
|
||
**BR-E003: 缁熶竴閿欒<E996BF>鏍煎紡**
|
||
```json
|
||
{
|
||
"success": false,
|
||
"error": {
|
||
"code": "QUOTA_EXCEEDED",
|
||
"message": "鐭ヨ瘑搴撴暟閲忓凡杈句笂闄?,
|
||
"details": {
|
||
"resource": "knowledge_base",
|
||
"quota": 3,
|
||
"used": 3
|
||
}
|
||
},
|
||
"timestamp": "2025-10-10T10:00:00.000Z"
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
## 瀹夊叏瑙勫垯
|
||
|
||
### 瀵嗙爜瀹夊叏
|
||
|
||
**BR-S001: 瀵嗙爜鍔犲瘑**
|
||
- 绠楁硶锛歜crypt
|
||
- 鎴愭湰鍥犲瓙锛?2
|
||
- 瑙勫垯锛氭案涓嶅瓨鍌ㄦ槑鏂囧瘑鐮?
|
||
|
||
**BR-S002: Token瀹夊叏**
|
||
- 瑙勫垯锛歍oken鍖呭惈鐢ㄦ埛ID鍜岃<E98D9C>鑹?
|
||
- 瑙勫垯锛歍oken绛惧悕浣跨敤JWT_SECRET
|
||
- 瑙勫垯锛氳繃鏈烼oken鑷<6E>姩澶辨晥
|
||
|
||
### SQL娉ㄥ叆闃叉姢
|
||
|
||
**BR-S003: 浣跨敤ORM**
|
||
- 瑙勫垯锛氭墍鏈夋暟鎹<E69A9F>簱鎿嶄綔浣跨敤Prisma ORM
|
||
- 瑙勫垯锛氱<E9949B>姝㈡嫾鎺<E5ABBE>QL璇<4C>彞
|
||
- 瑙勫垯锛氫娇鐢ㄥ弬鏁板寲鏌ヨ<E98F8C>
|
||
|
||
### XSS闃叉姢
|
||
|
||
**BR-S004: 杈撳叆杞<E58F86>箟**
|
||
- 瑙勫垯锛氭墍鏈夌敤鎴疯緭鍏ュ湪鏄剧ず鍓嶈浆涔?
|
||
- 瑙勫垯锛氫娇鐢≧eact榛樿<E6A69B>杞<EFBFBD>箟
|
||
- 瑙勫垯锛氱<E9949B>姝<EFBFBD>娇鐢╠angerouslySetInnerHTML锛堥櫎闈炲繀瑕侊級
|
||
|
||
---
|
||
|
||
## 鎬ц兘浼樺寲瑙勫垯
|
||
|
||
### 缂撳瓨瑙勫垯
|
||
|
||
**BR-O001: 鏅鸿兘浣撳垪琛ㄧ紦瀛?*
|
||
- 瑙勫垯锛氭櫤鑳戒綋鍒楄〃缂撳瓨1灏忔椂
|
||
- 瀹炵幇锛歊edis缂撳瓨
|
||
- 澶辨晥锛氫慨鏀筧gents.yaml鍚庨渶娓呴櫎缂撳瓨
|
||
|
||
**BR-O002: 鐢ㄦ埛淇℃伅缂撳瓨**
|
||
- 瑙勫垯锛氱敤鎴蜂俊鎭<E4BF8A>紦瀛?鍒嗛挓
|
||
- Key锛歚user:{userId}`
|
||
- 澶辨晥锛氱敤鎴蜂俊鎭<E4BF8A>洿鏂版椂
|
||
|
||
### 鏌ヨ<E98F8C>浼樺寲
|
||
|
||
**BR-O003: 鍒嗛〉鏌ヨ<E98F8C>**
|
||
- 瑙勫垯锛氬垪琛ㄦ煡璇㈠繀椤诲垎椤?
|
||
- 榛樿<E6A69B>锛?0鏉?椤?
|
||
- 鏈€澶э細100鏉?椤?
|
||
|
||
**BR-O004: 绱㈠紩浣跨敤**
|
||
- 瑙勫垯锛氶<E9949B>绻佹煡璇㈢殑瀛楁<E7809B>蹇呴』寤虹珛绱㈠紩
|
||
- 鍖呮嫭锛歟mail, userId, projectId, conversationId
|
||
- 瀹氭湡锛氭<E9949B>鏌ユ參鏌ヨ<E98F8C>鏃ュ織
|
||
|
||
---
|
||
|
||
## 鏁版嵁淇濈暀瑙勫垯
|
||
|
||
### 鏁版嵁褰掓。
|
||
|
||
**BR-R001: 瀵硅瘽褰掓。锛堟湭鏉ワ級**
|
||
- 瑙勫垯锛氳秴杩?涓<>湀鐨勫<E990A8>璇濊嚜鍔ㄥ綊妗?
|
||
- 褰掓。琛<E38082>細conversations_archive
|
||
- 鏌ヨ<E98F8C>锛氶粯璁や笉鏌ヨ<E98F8C>褰掓。鏁版嵁
|
||
|
||
**BR-R002: 鏃ュ織娓呯悊**
|
||
- 瑙勫垯锛歛dmin_logs淇濈暀3涓<33>湀
|
||
- 鎵ц<E98EB5>锛氬畾鏃朵换鍔℃瘡鏈堟竻鐞?
|
||
|
||
---
|
||
|
||
## 涓氬姟瑙勫垯鍙樻洿娴佺▼
|
||
|
||
1. **鎻愬嚭鍙樻洿**锛氬~鍐欏彉鏇寸敵璇?
|
||
2. **褰卞搷璇勪及**锛氳瘎浼板<E6B5BC>绯荤粺鐨勫奖鍝?
|
||
3. **Review**锛氭妧鏈<E5A6A7>洟闃烺eview
|
||
4. **鏇存柊鏂囨。**锛氬悓姝ユ洿鏂版湰鏂囨。
|
||
5. **瀹炴柦鍙樻洿**锛氫慨鏀逛唬鐮?
|
||
6. **娴嬭瘯楠岃瘉**锛氭祴璇曟柊瑙勫垯
|
||
7. **涓婄嚎鍙戝竷**锛氬彂甯冨埌鐢熶骇
|
||
|
||
---
|
||
|
||
**鏂囨。缁存姢锛?* 涓氬姟瑙勫垯鍙樻洿闇€鍚屾<E98D9A>鏇存柊
|
||
**Review棰戠巼锛?* 姣忎釜閲岀▼纰慠eview涓€娆?
|
||
**鏈€鍚庢洿鏂帮細** 2025-10-10
|
||
**缁存姢鑰咃細** 浜у搧缁忕悊 + 鎶€鏈<E282AC>礋璐d汉
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|