๐ค ๆบๅจไบบๆฅๅฟๅๆ็ณป็ป
ไธไธชๅ่ฝๅฎๆด็ๆบๅจไบบๆฅๅฟๆบ่ฝๅๆๅนณๅฐ๏ผ้ๆๅๅ็ซฏ Web ๆๅกใๅค็งๅๆๅผๆๅ AI ๅขๅผบๆฅๅ็ๆ่ฝๅ๏ผๆฏๆไปปๅก่ฏๅซใๅผๅธธๆฃๆตใๆ่ฏ้ฎ้ขๅฎไฝใๅๅฒ่ฟฝๆบฏๅๆๅๅฏ่งๅๆฅๅ็ๆใ
๐ ็ฎๅฝ
- ็ณป็ปๆถๆ
- ๆ ธๅฟๅ่ฝ
- ๅฟซ้ๅผๅง
- ้กน็ฎ็ปๆ
- API ๆฅๅฃ
- ้ ็ฝฎ่ฏดๆ
- ๅฝไปค่กไฝฟ็จ
- ๆฅๅ่พๅบ
- ้ซ็บง็จๆณ
- ๆ ้ๆ้ค
- ็ๆฌๅๅฒ
๐๏ธ ็ณป็ปๆถๆ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ ็จๆท็้ขๅฑ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ Web ๅ็ซฏ (HTML/CSS/JavaScript) โ โ
โ โ - ไปช่กจๆฟใๆฅๅฟๅๆใๆฅๅๆฅ็ใ่ฎพ็ฝฎ็ฎก็ โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ ๅ็ซฏๆๅกๅฑ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ Flask REST API Server โ โ
โ โ /api/status | /api/analyze | /api/reports | ... โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ ๆ ธๅฟๅๆๅฑ โ
โ โโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโ โ
โ โ ็ปผๅๅๆๅจ โ โ ๆ่ฏๅๆๅจ โ โ ๅๅฒ่ฟฝๆบฏๅๆๅจ โ โ
โ โ Comprehensive โ โ Complaint โ โ Historical Trace โ โ
โ โโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ ๆฅๅ็ๆๅจ (HTML/JSON/AIๅขๅผบ) โ โ
โ โ EnhancedDetailedReportGenerator + DeepSeek AI โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ ๅค้จๆๅกๅฑ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ DeepSeek / OpenAI API (AI ๆบ่ฝๅๆๅขๅผบ) โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
๐ฏ ๆ ธๅฟๅ่ฝ
1. ็ปผๅๆฅๅฟๅๆๅจ (comprehensive_robot_analyzer.py)
- ๐ ไปปๅก้ถๆฎตๆบ่ฝ่ฏๅซ - ่ชๅจ่ฏๅซไปปๅกๅผๅง/็ปๆใๅ ็ตใ่ฐ่ฏใๅฐๅพ็ปดๆค็ญ้ถๆฎต
- ๐ ไฝ็ฝฎๆฐๆฎๅๆ - ๅฎๆถ่ฟฝ่ธชๆบๅจไบบไฝ็ฝฎๅ่ฟๅจ่ฝจ่ฟน
- โ ๏ธ ๅผๅธธๆฃๆต - ไผ ๆๅจๆ็บฟใCPU้ซ่ด่ฝฝใๆบๆขฐๆ ้ใ้ๅบฆๅผๅธธ็ญๆฃๆต
- ๐ ็ณป็ป็ถๆ็ๆง - CPUใๅ ๅญใ็ตๆฑ ใๆธฉๅบฆ็ญ็ณป็ปๆๆ ๅๆ
2. ๆ่ฏ้ฎ้ขๅๆๅจ (complaint_analyzer.py)
- ๐ ๅๆบ็น็ฒพๅๅฎไฝ - ๆฃๆตๆบๅจไบบๅผๅธธๅๆญขไฝ็ฝฎๅๆถ้ด
- ๐ ๆ นๅ ๅๆ - ้็ข็ฉ้ปๆกใๅฏผ่ชๅคฑ่ดฅใไผ ๆๅจๆ ้็ญๅๅ ่ฏๅซ
- ๐ ๆ่ฏๅบๆฏๅน้ - ่ชๅจๅน้ ๆ่ฏๆ่ฟฐไธๆฅๅฟๅผๅธธ
- ๐ก ๅค็ๅปบ่ฎฎ็ๆ - ๅบไบๅๆ็ปๆ็ปๅบ่งฃๅณๆนๆก
3. ๅๅฒ่ฟฝๆบฏๅๆๅจ (historical_trace_analyzer.py)
- ๐ ไปปๅกๅบๅ่ฟฝๆบฏ - ่ฟฝๆบฏ้ฎ้ขๅ็ๅ็ๅๅฒไปปๅก
- ๐ ๆง่ฝ่ถๅฟๅๆ - ๆฃๆตๆง่ฝไธ้่ถๅฟๅๅผๅธธๆจกๅผ
- ๐ ่ทจไปปๅกๅ ณ่ - ๅ็ฐไปปๅก้ด็ๅ ณ่้ฎ้ข
- ๐ฏ ๆ นๅ ๆ็คบๅจ - ่ฏๅซๆฝๅจ็ๆ นๆฌๅๅ ๆๆ
4. ๆฅๅ็ๆ็ณป็ป
- ๅบ็กๆฅๅ (
report_generator.py) - ๆ ๅ HTML/JSON ๆฅๅ - ๅขๅผบๆฅๅ (
enhanced_detailed_report_generator.py) - ๅฏ่งๅๅพ่กจๅ่ฏฆ็ปๅๆ - AIๅขๅผบๆฅๅ (
deepseek_enhanced_report_generator.py) - DeepSeek AI ๆบ่ฝๅๆๅปบ่ฎฎ
5. Web ๆๅก็ณป็ป
- ๅ็ซฏๆๅก (
backend/server.py) - Flask REST API ๆๅก - ๅ็ซฏ็้ข (
frontend/) - ๅๅบๅผ Web ็ฎก็็้ข- ไปช่กจๆฟๆฆ่ง
- ๆฅๅฟๅๆๆงๅถๅฐ
- ๆฅๅๆฅ็ๅจ
- ็ณป็ป่ฎพ็ฝฎ็ฎก็
๐ ๅฟซ้ๅผๅง
็ฏๅข่ฆๆฑ
- Python: 3.7+
- ๆไฝ็ณป็ป: macOS / Windows / Linux
- ๅฏ้: DeepSeek ๆ OpenAI API Key (็จไบ AI ๅขๅผบๅๆ)
1. ๅฎ่ฃ ไพ่ต
# ่ฟๅ ฅ้กน็ฎ็ฎๅฝ cd log_reader # ๅฎ่ฃ Python ไพ่ต pip install -r requirements.txt
2. ๅฏๅจ Web ๆๅก
# ๅฏๅจๅ็ซฏๆๅก (้ป่ฎค็ซฏๅฃ 8080) python backend/server.py # ๆไฝฟ็จๅฏๅจ่ๆฌ python start_server.py
3. ่ฎฟ้ฎ็ณป็ป
ๆๅผๆต่งๅจ่ฎฟ้ฎ: http://localhost:8080
4. ๅฟซ้ๆต่ฏ
# ๆต่ฏ็ณป็ปๅ่ฝ python test_system.py # ๆต่ฏ API ่ฟๆฅ python test_api_connection.py
๐ ้กน็ฎ็ปๆ
log_reader/
โโโ ๐ backend/ # ๅ็ซฏๆๅก
โ โโโ server.py # Flask Web ๆๅกๅจ
โโโ ๐ frontend/ # ๅ็ซฏ็้ข
โ โโโ index.html # ไธป้กต้ข
โ โโโ script.js # ๅ็ซฏ้ป่พ
โ โโโ styles.css # ๆ ทๅผ่กจ
โโโ ๐ logs/ # ๆฅๅฟๆไปถ็ฎๅฝ (่พๅ
ฅ)
โ โโโ *.txt # ๆๆฌๆฅๅฟ
โ โโโ *.log # ๆ ๅๆฅๅฟ
โ โโโ cartographer_node.* # Cartographer ๆฅๅฟ
โโโ ๐ reports/ # ็ๆ็ๆฅๅ (่พๅบ)
โโโ ๐ temp_reports/ # ไธดๆถๆฅๅ
โโโ ๐ reports_new/ # ๆฐ็ๆฅๅ
โโโ ๐ final_reports/ # ๆ็ปๆฅๅๅญๆกฃ
โ
โโโ ๐ ๆ ธๅฟๅๆๆจกๅ
โ โโโ comprehensive_robot_analyzer.py # ็ปผๅๅๆๅจ (728่ก)
โ โโโ advanced_log_analyzer.py # ้ซ็บงๆฅๅฟๅๆๅจ (585่ก)
โ โโโ complaint_analyzer.py # ๆ่ฏๅๆๅจ (602่ก)
โ โโโ historical_trace_analyzer.py # ๅๅฒ่ฟฝๆบฏๅๆๅจ (626่ก)
โ โโโ complete_robot_log_analyzer.py # ๅๆๅจๅ
ฅๅฃ
โ
โโโ ๐ ๆฅๅ็ๆๆจกๅ
โ โโโ report_generator.py # ๅบ็กๆฅๅ็ๆๅจ
โ โโโ enhanced_report_generator.py # ๅขๅผบๆฅๅ็ๆๅจ
โ โโโ enhanced_detailed_report_generator.py # ่ฏฆ็ปๅขๅผบๆฅๅ (677่ก)
โ โโโ deepseek_enhanced_report_generator.py # AIๅขๅผบๆฅๅ (1023่ก)
โ โโโ gpt_enhanced_report_generator.py # GPTๅขๅผบๆฅๅ
โ
โโโ ๐ ้
็ฝฎไธๅ
ฅๅฃ
โ โโโ config.py # ้
็ฝฎๆไปถ (API/่ทฏๅพ/ๅๆฐ)
โ โโโ start_server.py # ๆๅกๅฏๅจ่ๆฌ
โ โโโ run_frontend.py # ๅ็ซฏๅฏๅจ่ๆฌ
โ โโโ requirements.txt # Python ไพ่ต
โ
โโโ ๐ ๆต่ฏๆไปถ
โ โโโ test_system.py # ็ณป็ปๅ่ฝๆต่ฏ
โ โโโ test_api_connection.py # API่ฟๆฅๆต่ฏ
โ โโโ test_deepseek_connection.py # DeepSeekๆต่ฏ
โ โโโ test_*.py # ๅ
ถไปๆต่ฏ่ๆฌ
โ
โโโ ๐ ๆๆกฃ
โ โโโ README.md # ้กน็ฎ่ฏดๆ (ๆฌๆไปถ)
โ โโโ architecture.md # ๆถๆๆๆกฃ
โ โโโ task.md # ไปปๅก่งๅ
โ โโโ README_SECURITY.md # ๅฎๅ
จ่ฏดๆ
โ
โโโ ๐ trickyuser/ # ๆฉๅฑ็จๆทๆจกๅ
โโโ logs/
โโโ src/
๐ API ๆฅๅฃ
ๅบ็กๆฅๅฃ
| ๆฅๅฃ | ๆนๆณ | ่ฏดๆ |
|---|---|---|
/api/status |
GET | ็ณป็ป็ถๆๆฃๆฅ |
/api/test |
GET | API ่ฟๆฅๆต่ฏ |
/api/logs |
GET | ่ทๅๆฅๅฟๆไปถๅ่กจ |
ๅๆๆฅๅฃ
| ๆฅๅฃ | ๆนๆณ | ่ฏดๆ |
|---|---|---|
/api/analyze |
POST | ๆง่กๆฅๅฟๅๆ |
/api/reports |
GET | ่ทๅๆฅๅๅ่กจ |
/api/report |
GET | ่ทๅๅไธชๆฅๅๅ ๅฎน |
่ฎพ็ฝฎๆฅๅฃ
| ๆฅๅฃ | ๆนๆณ | ่ฏดๆ |
|---|---|---|
/api/settings |
GET | ่ทๅๅฝๅ่ฎพ็ฝฎ |
/api/settings |
POST | ๆดๆฐ่ฎพ็ฝฎ |
ๅๆ่ฏทๆฑ็คบไพ
# ๅบ็กๅๆ curl -X POST http://localhost:8080/api/analyze \ -H "Content-Type: application/json" \ -d '{"log_directory": "./logs", "enable_ai": false, "report_type": "basic"}' # ็ปผๅๅๆ (ๅซAIๅขๅผบ) curl -X POST http://localhost:8080/api/analyze \ -H "Content-Type: application/json" \ -d '{"log_directory": "./logs", "enable_ai": true, "report_type": "comprehensive"}' # ๅธฆๆ่ฏๆถ้ด็ๅๆ curl -X POST http://localhost:8080/api/analyze \ -H "Content-Type: application/json" \ -d '{"log_directory": "./logs", "complaint_time": "2025-10-15 14:30:00"}'
โ๏ธ ้ ็ฝฎ่ฏดๆ
็ฏๅขๅ้้ ็ฝฎ
ๅจ config.py ไธญ้
็ฝฎๆ้่ฟ็ฏๅขๅ้่ฎพ็ฝฎ:
# ๆฅๅฟๅๆฅๅ่ทฏๅพ export LOG_DIRECTORY="./logs" export REPORTS_DIRECTORY="./reports" export TEMP_REPORTS_DIRECTORY="./temp_reports" # OpenAI API (ๅฏ้) export OPENAI_API_KEY="sk-your-key" export BASE_URL="https://api.openai.com/v1" # DeepSeek API (ๅฏ้๏ผ็จไบAIๅขๅผบๆฅๅ) export DEEPSEEK_API_KEY="sk-your-deepseek-key" export DEEPSEEK_BASE_URL="https://api.deepseek.com/v1" export DEEPSEEK_MODEL="deepseek-chat" export USE_DEEPSEEK="true" # AI ่ฏทๆฑๅๆฐ export MAX_TOKENS="1000" export TEMPERATURE="0.7" export REQUEST_TIMEOUT="30"
้
็ฝฎๆไปถ่ฏดๆ (config.py)
import os # ็ฎๅฝ้ ็ฝฎ LOG_DIRECTORY = os.getenv("LOG_DIRECTORY", "./logs") REPORTS_DIRECTORY = os.getenv("REPORTS_DIRECTORY", "./reports") TEMP_REPORTS_DIRECTORY = os.getenv("TEMP_REPORTS_DIRECTORY", "./temp_reports") # AI API ้ ็ฝฎ OPENAI_API_KEY = os.getenv("OPENAI_API_KEY") DEEPSEEK_API_KEY = os.getenv("DEEPSEEK_API_KEY") USE_DEEPSEEK = os.getenv("USE_DEEPSEEK", "false").lower() == "true" # ๅจๆ้ๆฉ API API_KEY = DEEPSEEK_API_KEY if USE_DEEPSEEK else OPENAI_API_KEY
๐ป ๅฝไปค่กไฝฟ็จ
็ดๆฅ่ฟ่กๅๆๅจ
# ๅบ็ก็ปผๅๅๆ python comprehensive_robot_analyzer.py -d ./logs -o ./reports # ๆ่ฏ้ฎ้ขๅๆ python complaint_analyzer.py -d ./logs --complaint-time "2025-10-15 14:30:00" # ๅๅฒ่ฟฝๆบฏๅๆ python historical_trace_analyzer.py -d ./logs -o ./reports
ๅฝไปค่กๅๆฐ
| ๅๆฐ | ่ฏดๆ | ็คบไพ |
|---|---|---|
-d, --directory |
ๆฅๅฟ็ฎๅฝ่ทฏๅพ | -d ./logs |
-o, --output |
่พๅบ็ฎๅฝ่ทฏๅพ | -o ./reports |
--complaint-time |
ๆ่ฏๆถ้ด็น | --complaint-time "2025-10-15 14:30:00" |
--analysis-type |
ๅๆ็ฑปๅ | --analysis-type comprehensive |
ๅๆ็ฑปๅ
basic- ๅบ็กๅๆcomprehensive- ็ปผๅๆทฑๅบฆๅๆcomplaint- ๆ่ฏ้ฎ้ขๅๆhistorical- ๅๅฒ่ฟฝๆบฏๅๆdeepseek_enhanced- AIๅขๅผบๅๆ
๐ ๆฅๅ่พๅบ
่พๅบๆไปถ็ฑปๅ
| ๆไปถ็ฑปๅ | ๆ ผๅผ | ่ฏดๆ |
|---|---|---|
comprehensive_report_*.json |
JSON | ็ปผๅๅๆๆฐๆฎ |
historical_trace_report_*.json |
JSON | ๅๅฒ่ฟฝๆบฏๆฐๆฎ |
integrated_report_*.json |
JSON | ้ๆๆฅๅๆฐๆฎ |
enhanced_detailed_report_*.html |
HTML | ๅฏ่งๅ่ฏฆ็ปๆฅๅ |
deepseek_enhanced_report_*.html |
HTML | AIๅขๅผบๅฏ่งๅๆฅๅ |
ๆฅๅๅ ๅฎน็ปๆ
็ปผๅๅๆๆฅๅ
{
"report_metadata": {
"report_id": "comprehensive_report_20251128_125145",
"generated_at": "2025-11-28T12:51:45",
"analysis_type": "comprehensive"
},
"analysis_summary": {
"total_log_files": 10,
"total_anomalies": 5,
"total_task_segments": 3
},
"task_segments": [...],
"anomalies": [...],
"recommendations": [...]
}HTML ๆฅๅ็นๆง
- ๐ ๆถ้ด็บฟๅฏ่งๅๅพ่กจ
- ๐ ๅผๅธธๅๅธ็ป่ฎกๅพ
- ๐บ๏ธ ไฝ็ฝฎ่ฝจ่ฟนๅฑ็คบ
- ๐ก AI ๆบ่ฝๅปบ่ฎฎ (ๅฆๅฏ็จ)
- ๐ฑ ๅๅบๅผ่ฎพ่ฎก
๐ง ้ซ็บง็จๆณ
่ชๅฎไนๅๆๅๆฐ
from comprehensive_robot_analyzer import ComprehensiveRobotAnalyzer analyzer = ComprehensiveRobotAnalyzer('./logs') # ่ชๅฎไนไปปๅก่ฏๅซๆจกๅผ analyzer.task_patterns['custom_task'] = [ r'่ชๅฎไนไปปๅกๆจกๅผ', r'custom.*task.*pattern' ] # ่ชๅฎไนๅผๅธธๆฃๆตๆจกๅผ analyzer.anomaly_patterns['custom_anomaly'] = [ r'่ชๅฎไนๅผๅธธๅ ณ้ฎ่ฏ', r'custom.*error' ] # ๆง่กๅๆ analyzer.analyze_all_logs() report = analyzer.generate_comprehensive_report()
ๆฉๅฑๆฅๅ็ๆๅจ
from enhanced_detailed_report_generator import EnhancedDetailedReportGenerator class CustomReportGenerator(EnhancedDetailedReportGenerator): def add_custom_section(self, data): # ๆทปๅ ่ชๅฎไนๆฅๅ็ซ ่ pass
้ๆๅค้จ AI ๆๅก
from deepseek_enhanced_report_generator import DeepSeekEnhancedReportGenerator generator = DeepSeekEnhancedReportGenerator( analysis_report_path='./temp_reports/report.json', api_key='your-api-key', base_url='https://your-api-endpoint/v1' ) generator.generate_detailed_report('./reports/ai_report.html')
๐ ๆ ้ๆ้ค
ๅธธ่ง้ฎ้ข
1. ๆๅกๅฏๅจๅคฑ่ดฅ
# ๆฃๆฅ็ซฏๅฃๅ ็จ lsof -i :8080 # ไฝฟ็จๅ ถไป็ซฏๅฃ python backend/server.py --port 9090
2. ไพ่ตๅฎ่ฃ ้ฎ้ข
# ๅ็บง pip pip install --upgrade pip # ้ๆฐๅฎ่ฃ ไพ่ต pip install -r requirements.txt --force-reinstall
3. AI ๅๆๅ่ฝๅผๅธธ
# ๆต่ฏ DeepSeek ่ฟๆฅ python test_deepseek_connection.py # ๆฃๆฅ API Key ้ ็ฝฎ python -c "from config import DEEPSEEK_API_KEY; print(bool(DEEPSEEK_API_KEY))"
4. ๆฅๅฟๆไปถ็ผ็ ้ฎ้ข
- ็กฎไฟๆฅๅฟๆไปถไธบ UTF-8 ็ผ็
- ๆฃๆฅๆถ้ดๆณๆ ผๅผๆฏๅฆๆญฃ็กฎ
่ฐ่ฏๆจกๅผ
import logging logging.basicConfig(level=logging.DEBUG) # ๆๅจ้ ็ฝฎไธญๅฏ็จ export FLASK_DEBUG=1
๐ ็ๆฌๅๅฒ
v2.0 (ๅฝๅ็ๆฌ)
- โ ๅฎๆด็ Web ๅๅ็ซฏ็ณป็ป
- โ DeepSeek AI ๆบ่ฝๅๆ้ๆ
- โ ๅขๅผบ็ๅฏ่งๅ HTML ๆฅๅ
- โ ๅๅบๅผ Web ็ฎก็็้ข
- โ ๅค็งๅๆๅจๅๅๅทฅไฝ
- โ RESTful API ๆฅๅฃ
v1.0
- โ ๆ ธๅฟๆฅๅฟๅๆๅ่ฝ
- โ ไปปๅก่ฏๅซๅๅผๅธธๆฃๆต
- โ ๆ่ฏๅๆๅๅๅฒ่ฟฝๆบฏ
- โ ๅบ็กๆฅๅ็ๆ
๐ ่ฎธๅฏ่ฏ
ๆฌ้กน็ฎไป ไพๅญฆไน ๅ็ ็ฉถไฝฟ็จใ
๐ ๅฟซ้ไฝ้ช
# 1. ๅ ้/ไธ่ฝฝ้กน็ฎ cd log_reader # 2. ๅฎ่ฃ ไพ่ต pip install -r requirements.txt # 3. ๅฏๅจๆๅก python backend/server.py # 4. ๆๅผๆต่งๅจ่ฎฟ้ฎ open http://localhost:8080
๐ ๅผๅงๆข็ดขๆบๅจไบบๆฅๅฟๆบ่ฝๅๆ็ไธ็๏ผ