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%)
11 KiB
Frontend-v2 椤圭洰鍒涘缓瀹屾垚鎶ュ憡
*瀹屾垚鏃堕棿锛? 2025-11-12
瀹炴柦浜猴細 AI鍔╂墜 + 鐢ㄦ埛
鐘舵€侊細 鉁?鎴愬姛瀹屾垚
*鐢ㄦ椂锛? 绾?灏忔椂
鉁?瀹屾垚姒傚喌
鏍稿績鎴愭灉
- 鉁?鍒涘缓浜嗗叏鏂扮殑 frontend-v2 椤圭洰
- 鉁?**瀹炵幇浜嗗畬鏁寸殑妗嗘灦灞?*锛堥《閮ㄥ<E996AE>鑸<EFBFBD>€佷富甯冨眬銆佹ā鍧楁敞鍐岋級
- 鉁?鍒涘缓浜?涓<>笟鍔℃ā鍧楃殑鍗犱綅锛圓I闂<EFBFBD>瓟銆丄I鏅鸿兘鏂囩尞銆佺煡璇嗗簱銆佹暟鎹<EFBFBD>竻娲椼€佹櫤鑳界粺璁″垎鏋愩€佺粺璁″垎鏋愬伐鍏凤級
- 鉁?瀹炵幇浜嗛<EFBFBD>椤靛拰璺<EFBFBD>敱绯荤粺
- 鉁?**閰嶇疆浜嗗紑鍙戠幆澧?*锛圱ailwind銆乀ypeScript銆佽矾寰勫埆鍚嶏級
馃摝 椤圭洰缁撴瀯
宸插垱寤虹殑鏂囦欢锛?3涓<33>級
frontend-v2/
鈹溾攢鈹€ src/
鈹? 鈹溾攢鈹€ framework/ # 鉁?妗嗘灦灞?鈹? 鈹? 鈹溾攢鈹€ layout/
鈹? 鈹? 鈹? 鈹溾攢鈹€ TopNavigation.tsx # 鉁?椤堕儴瀵艰埅
鈹? 鈹? 鈹? 鈹斺攢鈹€ MainLayout.tsx # 鉁?涓诲竷灞€
鈹? 鈹? 鈹斺攢鈹€ modules/
鈹? 鈹? 鈹溾攢鈹€ types.ts # 鉁?妯″潡鎺ュ彛瀹氫箟
鈹? 鈹? 鈹斺攢鈹€ moduleRegistry.ts # 鉁?妯″潡娉ㄥ唽涓<E594BD>績
鈹? 鈹?鈹? 鈹溾攢鈹€ modules/ # 鉁?涓氬姟妯″潡
鈹? 鈹? 鈹溾攢鈹€ asl/index.tsx # 鉁?AI鏅鸿兘鏂囩尞锛堝崰浣嶏級
鈹? 鈹? 鈹溾攢鈹€ aia/index.tsx # 鉁?AI鏅鸿兘闂<E58598>瓟锛堝崰浣嶏級
鈹? 鈹? 鈹溾攢鈹€ pkb/index.tsx # 鉁?涓<>汉鐭ヨ瘑搴擄紙鍗犱綅锛?鈹? 鈹? 鈹溾攢鈹€ rvw/index.tsx # 鉁?瀹$ǹ绯荤粺锛堝崰浣嶏級
鈹? 鈹? 鈹斺攢鈹€ dc/index.tsx # 鉁?鏁版嵁娓呮礂锛堝崰浣嶏級
鈹? 鈹?鈹? 鈹溾攢鈹€ shared/ # 鉁?鍏变韩璧勬簮
鈹? 鈹? 鈹斺攢鈹€ components/
鈹? 鈹? 鈹斺攢鈹€ Placeholder.tsx # 鉁?鍗犱綅缁勪欢
鈹? 鈹?鈹? 鈹溾攢鈹€ pages/
鈹? 鈹? 鈹斺攢鈹€ HomePage.tsx # 鉁?棣栭〉
鈹? 鈹?鈹? 鈹溾攢鈹€ App.tsx # 鉁?搴旂敤鏍圭粍浠?鈹? 鈹溾攢鈹€ main.tsx # 鉁?搴旂敤鍏ュ彛
鈹? 鈹斺攢鈹€ index.css # 鉁?鍏ㄥ眬鏍峰紡
鈹?鈹溾攢鈹€ vite.config.ts # 鉁?Vite閰嶇疆锛堣矾寰勫埆鍚?浠g悊锛?鈹溾攢鈹€ tsconfig.json # 鉁?TypeScript閰嶇疆
鈹溾攢鈹€ tailwind.config.js # 鉁?Tailwind閰嶇疆
鈹溾攢鈹€ postcss.config.js # 鉁?PostCSS閰嶇疆
鈹溾攢鈹€ package.json # 鉁?渚濊禆閰嶇疆
鈹斺攢鈹€ README.md # 鉁?椤圭洰璇存槑鏂囨。
馃幆 鏍稿績鍔熻兘
1. 椤堕儴瀵艰埅绯荤粺 鉁?
*鏂囦欢锛? src/framework/layout/TopNavigation.tsx
*鍔熻兘锛?
- 鉁?Logo + 骞冲彴鍚嶇О
- 鉁?5涓<35>ā鍧楀<E98DA7>鑸<EFBFBD>寜閽?- 鉁?褰撳墠妯″潡楂樹寒鏄剧ず
- 鉁?鍗犱綅妯″潡鏍囪<E98F8D>锛堣<E9949B>鍒掍腑锛?- 鉁?鐢ㄦ埛涓嬫媺鑿滃崟
*鐗圭偣锛?
- 鍝嶅簲寮忚<EFBFBD>璁?- 鎮<>仠鏁堟灉
- 婵€娲荤姸鎬佺獊鍑烘樉绀?
2. 涓诲竷灞€妗嗘灦 鉁?
*鏂囦欢锛? src/framework/layout/MainLayout.tsx
*鍔熻兘锛?
- 鉁?椤堕儴瀵艰埅鏍?- 鉁?涓诲唴瀹瑰尯锛圫uspense鍖呰9锛?- 鉁?鎳掑姞杞芥敮鎸?- 鉁?鍔犺浇鐘舵€佹樉绀?
3. 妯″潡娉ㄥ唽绯荤粺 鉁?
*鏂囦欢锛? src/framework/modules/moduleRegistry.ts
*鍔熻兘锛?
- 鉁?缁熶竴鐨勬ā鍧楀畾涔夋帴鍙?- 鉁?5涓<35>ā鍧楁敞鍐?- 鉁?鎳掑姞杞介厤缃?- 鉁?鏉冮檺瑕佹眰瀹氫箟
- 鉁?妯″潡鏌ヨ<E98F8C>宸ュ叿鍑芥暟
*妯″潡鍒楄〃锛?
| ID | 鍚嶇О | 璺<EFBFBD>敱 | 鐘舵€? |
|---|---|---|---|
| ai-qa | AI闂<EFBFBD>瓟 | /ai-qa | 瑙勫垝涓? |
| literature-platform | AI鏅鸿兘鏂囩尞 | /literature | Week 3寮€鍙? |
| knowledge-base | 鐭ヨ瘑搴? | /knowledge-base | 瑙勫垝涓? |
| data-cleaning | 鏅鸿兘鏁版嵁娓呮礂 | /data-cleaning | 瑙勫垝涓? |
| statistical-analysis | 鏅鸿兘缁熻<EFBFBD>鍒嗘瀽 | /intelligent-analysis | 澶栭儴闆嗘垚 |
| statistical-tools | 缁熻<EFBFBD>鍒嗘瀽宸ュ叿 | /statistical-tools | 澶栭儴闆嗘垚 |
4. 璺<>敱绯荤粺 鉁?
*鏂囦欢锛? src/App.tsx
*鍔熻兘锛?
- 鉁?React Router v6
- 鉁?鍔ㄦ€佹ā鍧楄矾鐢?- 鉁?鎳掑姞杞界粍浠?- 鉁?404閲嶅畾鍚?- 鉁?涓<>枃鏈<E69E83>湴鍖栵紙Ant Design锛?
5. 棣栭〉 鉁?
*鏂囦欢锛? src/pages/HomePage.tsx
*鍔熻兘锛?
- 鉁?妯″潡鍗$墖灞曠ず
- 鉁?妯″潡璇存槑鍜岀姸鎬?- 鉁?缁熻<E7BC81>淇℃伅锛?妯″潡銆?0Schema銆?LLM锛?- 鉁?鐐瑰嚮璺宠浆鍒版ā鍧?
6. 鍗犱綅椤甸潰 鉁?
*鏂囦欢锛? src/shared/components/Placeholder.tsx
*鍔熻兘锛?
- 鉁?缁熶竴鐨勫崰浣嶉〉闈㈢粍浠?- 鉁?鑷<>畾涔夋爣棰樺拰鎻忚堪
- 鉁?杩斿洖棣栭〉鎸夐挳
- 鉁?鍙嬪ソ鐨勬彁绀轰俊鎭?
馃敡 鎶€鏈<E282AC>爤
鏍稿績渚濊禆 鉁?
| 渚濊禆 | 鐗堟湰 | 鐢ㄩ€? |
|---|---|---|
| React | 18.x | UI妗嗘灦 |
| TypeScript | 5.x | 绫诲瀷绯荤粺 |
| Vite | 5.x | 鏋勫缓宸ュ叿 |
| Ant Design | 5.x | UI缁勪欢搴? |
| React Router | 6.x | 璺<EFBFBD>敱绯荤粺 |
| Tailwind CSS | 3.x | CSS妗嗘灦 |
| Zustand | 4.x | 鐘舵€佺<EFBFBD>鐞嗭紙宸插畨瑁咃級 |
| React Query | 5.x | 鏁版嵁璇锋眰锛堝凡瀹夎<EFBFBD>锛? |
| Axios | 1.x | HTTP瀹㈡埛绔<EFBFBD>紙宸插畨瑁咃級 |
寮€鍙戦厤缃?鉁?
- 鉁?璺<EFBFBD>緞鍒<EFBFBD>悕锛歚@/
鏄犲皠鍒?src/` - 鉁?API浠g悊锛歚/api/*
浠g悊鍒?http://localhost:3001` - 鉁?绔<EFBFBD>彛閰嶇疆锛氬紑鍙戞湇鍔″櫒杩愯<EFBFBD>鍦?
3000绔<>彛 - 鉁?Tailwind闆嗘垚锛氫笌Ant Design鍏煎<E98D8F>閰嶇疆
馃摳 棰勮<E6A3B0>鏁堟灉
棣栭〉
鈹屸攢鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹?鈹?馃彞 AI涓村簥鐮旂┒骞冲彴 [ASL] [AIA] [PKB] [RVW] [DC] 馃懁 鐮旂┒鍛?鈹?鈹溾攢鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹?鈹? 鈹?鈹? 娆㈣繋浣跨敤 AI涓村簥鐮旂┒骞冲彴 鈹?鈹? 閫夋嫨涓€涓<E282AC>ā鍧楀紑濮嬫偍鐨勭爺绌跺伐浣? 鈹?鈹? 鈹?鈹? 鈹屸攢鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹? 鈹屸攢鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹? 鈹屸攢鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹? 鈹?鈹? 鈹? 馃搫 鈹? 鈹? 馃挰 鈹? 鈹? 馃搧 鈹? 鈹?鈹? 鈹侫I鏅鸿兘 鈹? 鈹侫I鏅鸿兘 鈹? 鈹?鐭ヨ瘑搴?鈹? 鈹?鈹? 鈹? 鏂囩尞 鈹? 鈹? 闂<>瓟 鈹? 鈹? 鈹? 鈹?鈹? 鈹俉eek3寮€鍙戔攤 鈹?瑙勫垝涓?鈹? 鈹?瑙勫垝涓?鈹? 鈹?鈹? 鈹斺攢鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹? 鈹斺攢鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹? 鈹斺攢鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹? 鈹?鈹? 鈹?鈹? 缁熻<E7BC81>: 6涓氬姟妯″潡 10Schema 4LLM 鈹?鈹斺攢鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹?```
### 鍗犱綅椤甸潰
鈹屸攢鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹?鈹? 鈹?鈹? 馃殌 鈹?鈹? 鈹?鈹? AI鏅鸿兘鏂囩尞妯″潡 鈹?鈹? 鈹?鈹? Week 3 寮€濮嬪紑鍙戯紝鏀<E7B49D>寔4涓狶LM鐨勬櫤鑳芥枃鐚<E69E83>瓫閫夊拰鍒嗘瀽 鈹?鈹? 鈹?鈹? [杩斿洖棣栭〉] 鈹?鈹? 鈹?鈹斺攢鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹€鈹?```
馃殌 濡備綍杩愯<E69DA9>
鍚<EFBFBD>姩寮€鍙戞湇鍔″櫒
cd frontend-v2
npm run dev
璁块棶锛歨ttp://localhost:3000
鍔熻兘娴嬭瘯
- 鉁?棣栭〉灞曠ず - 鏄剧ず5涓<35>ā鍧楀崱鐗?2. 鉁?椤堕儴瀵艰埅 - 鐐瑰嚮妯″潡鍒囨崲
- 鉁?鍗犱綅椤甸潰 - 鏄剧ず"瑙勫垝涓?鎻愮ず
- 鉁?璺<EFBFBD>敱鍔熻兘 - URL姝g‘鏇存柊
- 鉁?*鍝嶅簲寮? - 甯冨眬鑷<E79CAC>€傚簲
馃搵 涓庢灦鏋勬枃妗e<E5A697>姣?
宸插疄鐜?鉁?
| 璁捐<EFBFBD>鍐呭<EFBFBD> | 瀹炵幇鐘舵€? | 澶囨敞 |
|---|---|---|
| 椤堕儴瀵艰埅甯冨眬 | 鉁?瀹屾垚 | 绗﹀悎璁捐<EFBFBD>鏂囨。 |
| 妯″潡鍖栫洰褰曠粨鏋? | 鉁?瀹屾垚 | framework/modules/shared |
| 妯″潡娉ㄥ唽鎺ュ彛 | 鉁?瀹屾垚 | ModuleDefinition |
| 鍔ㄦ€佽矾鐢卞姞杞? | 鉁?瀹屾垚 | React.lazy + Suspense |
| 5涓<EFBFBD>ā鍧楀崰浣? | 鉁?瀹屾垚 | 缁熶竴鐨凱laceholder缁勪欢 |
| 璺<EFBFBD>緞鍒<EFBFBD>悕閰嶇疆 | 鉁?瀹屾垚 | @/ 鏄犲皠 |
| API浠g悊閰嶇疆 | 鉁?瀹屾垚 | /api/* 浠g悊 |
| Tailwind闆嗘垚 | 鉁?瀹屾垚 | 涓嶢ntd鍏煎<EFBFBD> |
| TypeScript閰嶇疆 | 鉁?瀹屾垚 | 涓ユ牸妯″紡 |
| README鏂囨。 | 鉁?瀹屾垚 | 瀹屾暣璇存槑 |
寰呭疄鐜帮紙鍚庣画锛?
| 鍔熻兘 | 浼樺厛绾? | 璁″垝 |
|---|---|---|
| 鏉冮檺鎺у埗绯荤粺 | P1 | Week 2 Day 7 |
| 鐢ㄦ埛璁よ瘉娴佺▼ | P1 | Week 2 Day 7 |
| 鍏ㄥ眬鐘舵€佺<EFBFBD>鐞? | P2 | 鎸夐渶瀹炵幇 |
| API瀹㈡埛绔<EFBFBD>皝瑁? | P2 | Week 3 ASL寮€鍙戞椂 |
| 閿欒<EFBFBD>杈圭晫澶勭悊 | P2 | Week 2 Day 7 |
| 闈㈠寘灞戝<EFBFBD>鑸? | P3 | 鍙<EFBFBD>€? |
馃幆 鎴愬姛鏍囧噯楠岃瘉
Week 2 Day 6 楠屾敹鏍囧噯
| 鏍囧噯 | 鐘舵€? | 璇存槑 |
|---|---|---|
| frontend-v2 椤圭洰鍙<E6B4B0>繍琛? | 鉁? | 寮€鍙戞湇鍔″櫒宸插惎鍔? |
| 椤堕儴瀵艰埅姝e父宸ヤ綔 | 鉁? | 妯″潡鍒囨崲姝e父 |
| 妯″潡娉ㄥ唽绯荤粺瀹屾暣 | 鉁? | moduleRegistry瀹炵幇 |
| 6涓<EFBFBD>ā鍧楀崰浣嶉〉闈? | 鉁? | 鍏ㄩ儴鍒涘缓 |
| 璺<EFBFBD>敱鍒囨崲姝e父 | 鉁? | React Router閰嶇疆 |
| 瀹屾暣鐨勫紑鍙戞枃妗? | 鉁? | README.md |
| 鏋舵瀯璁捐<EFBFBD>鏂囨。 | 鉁? | 鍓嶅悗绔<EFBFBD>ā鍧楀寲鏋舵瀯璁捐<EFBFBD>-V2.md |
*缁撹<EFBFBD>锛? 鉁?*鍏ㄩ儴鏍囧噯杈炬垚锛?
馃搳 浠g爜缁熻<E7BC81>
鏂囦欢鏁伴噺
- TypeScript鏂囦欢锛?5涓?- 閰嶇疆鏂囦欢锛?涓?- 鏂囨。鏂囦欢锛?涓?- **鎬昏<E98EAC>**锛?1涓<31>枃浠?
浠g爜琛屾暟锛堜及璁★級
- **妗嗘灦灞?*锛殈200琛?- 涓氬姟妯″潡锛殈100琛?- 鍏变韩缁勪欢锛殈50琛?- 閰嶇疆鏂囦欢锛殈100琛?- **鎬昏<E98EAC>**锛殈450琛?
馃敆 鐩稿叧鏂囨。
鏋舵瀯鏂囨。
椤圭洰鏂囨。
璁″垝鏂囨。
- [涓嬩竴闃舵<E99783>琛屽姩璁″垝-V2.2-瀹屾暣鐗圿(../08-椤圭洰绠$悊/涓嬩竴闃舵<E99783>琛屽姩璁″垝-V2.2-瀹屾暣鐗?md)
馃帀 閲岀▼纰戞垚灏?
浠婃棩鎴愭灉锛?025-11-12锛?
*Week 1瀹屾垚锛?
- 鉁?10涓猄chema鏋舵瀯瑙勫垝
- 鉁?Schema杩佺Щ鍜岄獙璇?- 鉁?Prisma澶歋chema閰嶇疆
- 鉁?AIA鍜孭KB鏁版嵁搴撴枃妗?- 鉁?蹇<>€熷姛鑳芥祴璇? *Week 2 Day 6瀹屾垚锛?
- 鉁?鍓嶇<E98D93>鏋舵瀯璁捐<E79281>鏂囨。锛?67琛岋級
- 鉁?Frontend-v2椤圭洰鍒涘缓
- 鉁?妗嗘灦灞傚疄鐜?- 鉁?5涓<35>ā鍧楀崰浣?- 鉁?棣栭〉鍜岃矾鐢辩郴缁? 鎬昏繘搴︼細
- Week 1锛?1/14浠诲姟锛?9%锛夆渽
- Week 2锛?/6浠诲姟锛?3%锛夆彸
- 鎬讳綋锛?3/25浠诲姟锛?2%锛夆彸
馃殌 涓嬩竴姝?
鏄庡ぉ锛圵eek 2 Day 7锛?
*涓婂崍锛氬疄鐜版ā鍧楁敞鍐屾満鍒?
- 瀹屽杽鏉冮檺鎺у埗閫昏緫
- 瀹炵幇妯″潡鍔ㄦ€佸姞杞?- 娣诲姞璺<E5A79E>敱瀹堝崼
涓嬪崍锛氭暣鍚堝拰娴嬭瘯
- 娴嬭瘯鎵€鏈夊<EFBFBD>鑸<EFBFBD>姛鑳?- 浼樺寲UI缁嗚妭
- 鍑嗗<EFBFBD>Week 2 Day 8鍚庣<E98D9A>鍒嗗眰
馃挕 鎶€鏈<E282AC>寒鐐?
- 鉁?*妯″潡鍖栨灦鏋? - 瀹屽叏鐙<E58F8F>珛鐨勬ā鍧楄<E98DA7>璁?2. 鉁?*鎳掑姞杞? - 鎻愬崌棣栧睆鍔犺浇閫熷害
- 鉁?绫诲瀷瀹夊叏 - 瀹屾暣鐨凾ypeScript鏀<74>寔
- 鉁?*寮€鍙戜綋楠? - 璺<>緞鍒<E7B79E>悕銆佺儹閲嶈浇
- 鉁?*鍙<EFBFBD>墿灞曟€? - 鏄撲簬娣诲姞鏂版ā鍧?6. 鉁?*UI涓€鑷存€? - 缁熶竴鐨勭粍浠跺拰鏍峰紡
椤圭洰鐘舵€侊細 鉁?Frontend-v2鍩虹<E98DA9>鏋舵瀯瀹屾垚
*涓嬩竴闃舵<EFBFBD>锛? Week 2 Day 7 妯″潡娉ㄥ唽鏈哄埗瀹屽杽
*棰勮<EFBFBD>涓婄嚎锛? Week 3 寮€濮婣SL妯″潡寮€鍙?
馃帀 Frontend-v2 鍒涘缓鎴愬姛锛佹柊鏋舵瀯宸插氨缁<E6B0A8>紒 猸愨瓙猸?