GitHub - velamints2/log_reader

๐Ÿค– ๆœบๅ™จไบบๆ—ฅๅฟ—ๅˆ†ๆž็ณป็ปŸ

ไธ€ไธชๅŠŸ่ƒฝๅฎŒๆ•ด็š„ๆœบๅ™จไบบๆ—ฅๅฟ—ๆ™บ่ƒฝๅˆ†ๆžๅนณๅฐ๏ผŒ้›†ๆˆๅ‰ๅŽ็ซฏ Web ๆœๅŠกใ€ๅคš็งๅˆ†ๆžๅผ•ๆ“Žๅ’Œ AI ๅขžๅผบๆŠฅๅ‘Š็”Ÿๆˆ่ƒฝๅŠ›๏ผŒๆ”ฏๆŒไปปๅŠก่ฏ†ๅˆซใ€ๅผ‚ๅธธๆฃ€ๆต‹ใ€ๆŠ•่ฏ‰้—ฎ้ข˜ๅฎšไฝใ€ๅކๅฒ่ฟฝๆบฏๅˆ†ๆžๅ’Œๅฏ่ง†ๅŒ–ๆŠฅๅ‘Š็”Ÿๆˆใ€‚

๐Ÿ“‹ ็›ฎๅฝ•


๐Ÿ—๏ธ ็ณป็ปŸๆžถๆž„

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                        ็”จๆˆท็•Œ้ขๅฑ‚                                โ”‚
โ”‚   โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”   โ”‚
โ”‚   โ”‚         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

๐ŸŽ‰ ๅผ€ๅง‹ๆŽข็ดขๆœบๅ™จไบบๆ—ฅๅฟ—ๆ™บ่ƒฝๅˆ†ๆž็š„ไธ–็•Œ๏ผ