Skip to content

Repository files navigation

AutoResume - ๆ™บ่ƒฝ็ฎ€ๅކไผ˜ๅŒ–็ณป็ปŸ

Python React FastAPI LangGraph

AutoResume ๆ˜ฏไธ€ไธชๅŸบไบŽๅคš Agent ๆžถๆž„็š„ๆ™บ่ƒฝ็ฎ€ๅކไผ˜ๅŒ–็ณป็ปŸ๏ผŒ้€š่ฟ‡ AI ๆŠ€ๆœฏๅธฎๅŠฉๆฑ‚่Œ่€…ๅˆ†ๆž็ฎ€ๅކไธŽๅฒ—ไฝ็š„ๅŒน้…ๅบฆ๏ผŒ่‡ชๅŠจไผ˜ๅŒ–็ฎ€ๅކๅ†…ๅฎน๏ผŒๅนถๆไพ›ๆŠ•้€’ๅปบ่ฎฎใ€‚

โœจ ๆ ธๅฟƒ็‰นๆ€ง

  • ๅคš Agent ๆ™บ่ƒฝๅไฝœ: ๅŸบไบŽ LangGraph ๅฎž็Žฐ 4 ไธชไธ“ไธš Agent ๅๅŒๅทฅไฝœ
  • ๅคš็ปดๅบฆๅŒน้…ๅˆ†ๆž: ไปŽๆŠ€่ƒฝใ€็ป้ชŒใ€ๅญฆๅކใ€ๅ…ณ้”ฎ่ฏๅ››ไธช็ปดๅบฆ่ฏ„ไผฐๅŒน้…ๅบฆ
  • ๆ™บ่ƒฝ็ฎ€ๅކไผ˜ๅŒ–: ๅŸบไบŽ็œŸๅฎž็ปๅކไผ˜ๅŒ–่กจ่ฟฐ๏ผŒๆทปๅŠ ้‡ๅŒ–ๆŒ‡ๆ ‡
  • ็œŸๅฎžๆ€งไฟๆŠค: "็ปๅކๅบ•ๅบง"ๆœบๅˆถ็กฎไฟไธ่™šๆž„ๅ†…ๅฎน
  • ๅฎžๆ—ถไบคไบ’: WebSocket ๅฎžๆ—ถๆŽจ้€ไผ˜ๅŒ–่ฟ›ๅบฆๅ’Œ็ป“ๆžœ
  • ๅฒ—ไฝ่‡ชๅŠจ้‡‡้›†: ๆ”ฏๆŒไปŽๅฎžไน ๅƒง่‡ชๅŠจ้‡‡้›†ๅฒ—ไฝไฟกๆฏ

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

ๆžถๆž„ๅ›พ

็ณป็ปŸๆžถๆž„ๅ›พ

ๅˆ†ๅฑ‚ๆžถๆž„่ฏดๆ˜Ž

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                        ๅ‰็ซฏๅฑ‚ (React)                        โ”‚
โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”      โ”‚
โ”‚  โ”‚   ChatArea   โ”‚  โ”‚  JobSidebar  โ”‚  โ”‚   Header     โ”‚      โ”‚
โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜      โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                         โ”‚ WebSocket / HTTP
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                      API ๅฑ‚ (FastAPI)                        โ”‚
โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”      โ”‚
โ”‚  โ”‚ RouterAgent  โ”‚  โ”‚   WebSocket  โ”‚  โ”‚  REST API    โ”‚      โ”‚
โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜      โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                         โ”‚
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                   LangGraph Agent ๅฑ‚                         โ”‚
โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”      โ”‚
โ”‚  โ”‚JDMatchAnalyzerโ”‚ โ”‚ResumeOptimizerโ”‚ โ”‚ResumeReviewerโ”‚      โ”‚
โ”‚  โ”‚   (JDๅˆ†ๆž)    โ”‚  โ”‚  (็ฎ€ๅކไผ˜ๅŒ–)   โ”‚  โ”‚  (็ฎ€ๅކๅฎกๆ ธ)   โ”‚      โ”‚
โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜      โ”‚
โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”                        โ”‚
โ”‚  โ”‚ JobSubmitter โ”‚  โ”‚ Orchestrator โ”‚                        โ”‚
โ”‚  โ”‚  (ๅฒ—ไฝๅŒน้…)   โ”‚  โ”‚   (็ผ–ๆŽ’ไธญๅฟƒ)  โ”‚                        โ”‚
โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜                        โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                         โ”‚
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                      ๆœๅŠกๅฑ‚                                  โ”‚
โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”      โ”‚
โ”‚  โ”‚  GLM Service โ”‚  โ”‚   Scraper    โ”‚  โ”‚File Storage  โ”‚      โ”‚
โ”‚  โ”‚  (ๆ™บ่ฐฑAI)    โ”‚  โ”‚  (Playwright)โ”‚  โ”‚  (ๆœฌๅœฐๅญ˜ๅ‚จ)   โ”‚      โ”‚
โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜      โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

๐Ÿ“ธ ไบงๅ“้ข„่งˆ

ๆ™บ่ƒฝๅฏน่ฏ็•Œ้ข

็”จๆˆทๅฏไปฅ้€š่ฟ‡่‡ช็„ถ่ฏญ่จ€ไธŽ็ณป็ปŸไบคไบ’๏ผŒๆ่ฟฐๆฑ‚่Œๆ„ๅ‘๏ผŒ็ณป็ปŸไผš่‡ชๅŠจๆœ็ดขๅŒน้…็š„ๅฒ—ไฝใ€‚

้ข„่งˆๅ›พ1-ๅฏน่ฏ็•Œ้ข

JDๅŒน้…ๅˆ†ๆžๆŠฅๅ‘Š

็ณป็ปŸไผšไปŽๆŠ€่ƒฝใ€็ป้ชŒใ€ๅญฆๅކใ€ๅ…ณ้”ฎ่ฏๅ››ไธช็ปดๅบฆๅˆ†ๆž็ฎ€ๅކไธŽๅฒ—ไฝ็š„ๅŒน้…ๅบฆ๏ผŒ็”Ÿๆˆ่ฏฆ็ป†็š„ๅˆ†ๆžๆŠฅๅ‘Šๅ’Œไผ˜ๅŒ–ๅปบ่ฎฎใ€‚

้ข„่งˆๅ›พ2-ๅŒน้…ๅˆ†ๆž

็ฎ€ๅކไผ˜ๅŒ–ๆŠฅๅ‘Š

ๅŸบไบŽๅˆ†ๆž็ป“ๆžœ๏ผŒ็ณป็ปŸ่‡ชๅŠจไผ˜ๅŒ–็ฎ€ๅކๅ†…ๅฎน๏ผŒๆทปๅŠ ้‡ๅŒ–ๆŒ‡ๆ ‡๏ผŒๆๅ‡ไธ“ไธš่กจ่ฟฐใ€‚

้ข„่งˆๅ›พ3-ไผ˜ๅŒ–ๆŠฅๅ‘Š

็ฎ€ๅކๅฎกๆ ธๆŠฅๅ‘Š

ๅคš็ปดๅบฆๅฎกๆ ธไผ˜ๅŒ–ๅŽ็š„็ฎ€ๅކ๏ผŒ็กฎไฟๅ†…ๅฎนๅˆ็†ๆ€งใ€ๅˆ่ง„ๆ€งๅ’Œ็œŸๅฎžๆ€งใ€‚

้ข„่งˆๅ›พ4-ๅฎกๆ ธๆŠฅๅ‘Š

ๅฒ—ไฝๅŒน้…ไธŽๆŽจ่

่ฎก็ฎ—็ฎ€ๅކไธŽๆ‰€ๆœ‰ๅฒ—ไฝ็š„ๅŒน้…ๅบฆ๏ผŒๆŒ‰ๅŒน้…ๅบฆๆŽ’ๅบๅนถ็ป™ๅ‡บๆŠ•้€’ๅปบ่ฎฎใ€‚

้ข„่งˆๅ›พ5-ๅฒ—ไฝๅŒน้…

๐Ÿš€ ๅฟซ้€Ÿๅผ€ๅง‹

็Žฏๅขƒ่ฆๆฑ‚

  • Python 3.10+
  • Node.js 18+
  • Anaconda (ๆŽจ่)

1. ๅ…‹้š†้กน็›ฎ

git clone <repository-url>
cd AutoResume

2. ้…็ฝฎ็Žฏๅขƒๅ˜้‡

cp backend/.env.example backend/.env
# ็ผ–่พ‘ backend/.env๏ผŒ่ฎพ็ฝฎ GLM-APIKEY

3. ๅฏๅŠจๅŽ็ซฏ

# ่ฟ›ๅ…ฅๅŽ็ซฏ็›ฎๅฝ•
cd backend

# ๅฎ‰่ฃ…ไพ่ต–
pip install -r requirements.txt

# ๅฎ‰่ฃ… Playwright ๆต่งˆๅ™จ
playwright install chromium

# ๅฏๅŠจๆœๅŠก
python -m backend.api.main

ๅŽ็ซฏๆœๅŠกๅฏๅŠจๅŽ๏ผš

4. ๅฏๅŠจๅ‰็ซฏ

# ่ฟ›ๅ…ฅๅ‰็ซฏ็›ฎๅฝ•
cd frontend

# ๅฎ‰่ฃ…ไพ่ต–
npm install

# ๅฏๅŠจๅผ€ๅ‘ๆœๅŠกๅ™จ
npm run dev

ๅ‰็ซฏๆœๅŠกๅฏๅŠจๅŽ๏ผš

๐Ÿ“‹ ๆ ธๅฟƒๅŠŸ่ƒฝ

1. JD ๅŒน้…ๅˆ†ๆž (JDMatchAnalyzer)

  • ่พ“ๅ…ฅ: ็”จๆˆท็ฎ€ๅކ + ๅฒ—ไฝ JD ้›†ๅˆ
  • ่พ“ๅ‡บ: ๅ››็ปดๅบฆๅŒน้…่ฏ„ๅˆ† + ็ผบๅคฑๆŠ€่ƒฝ + ไผ˜ๅŒ–ๅปบ่ฎฎ
  • ่ฏ„ๅˆ†็ปดๅบฆ:
    • ๆŠ€่ƒฝๅŒน้… (Skills Match)
    • ็ป้ชŒๅŒน้… (Experience Match)
    • ๅญฆๅކๅŒน้… (Education Match)
    • ๅ…ณ้”ฎ่ฏๅŒน้… (Keywords Match)

2. ็ฎ€ๅކไผ˜ๅŒ– (ResumeOptimizer)

  • ่พ“ๅ…ฅ: ๅŽŸๅง‹็ฎ€ๅކ + ๅˆ†ๆžๅปบ่ฎฎ + ็›ฎๆ ‡ JD
  • ่พ“ๅ‡บ: ไผ˜ๅŒ–ๅŽ็š„็ฎ€ๅކ + ๆ”น่ฟ›็ปŸ่ฎก
  • ไผ˜ๅŒ–ๅ†…ๅฎน:
    • ๅ…ณ้”ฎ่ฏไผ˜ๅŒ–
    • ้‡ๅŒ–ๆŒ‡ๆ ‡ๆทปๅŠ 
    • ็ป“ๆž„้‡็ป„
    • ไธ“ไธš่กจ่ฟฐๆๅ‡

3. ็ฎ€ๅކๅฎกๆ ธ (ResumeReviewer)

  • ่พ“ๅ…ฅ: ไผ˜ๅŒ–ๅŽ็š„็ฎ€ๅކ
  • ่พ“ๅ‡บ: PASS/REJECT + ๅคš็ปดๅบฆ่ฏ„ๅˆ†
  • ๅฎกๆ ธ็ปดๅบฆ:
    • ๅˆ็†ๆ€ง (30%): ้€ป่พ‘ๆ€งใ€ๅฎŒๆ•ดๆ€ง
    • ๅˆ่ง„ๆ€ง (30%): ๆ•ๆ„Ÿไฟกๆฏๆฃ€ๆŸฅ
    • ็œŸๅฎžๆ€ง (40%): ็ปๅކๅบ•ๅบงๆ ก้ชŒ

4. ๅฒ—ไฝๅŒน้… (JobSubmitter)

  • ่พ“ๅ…ฅ: ไผ˜ๅŒ–ๅŽ็š„็ฎ€ๅކ + ๅ…จ้ƒจๅฒ—ไฝ JD
  • ่พ“ๅ‡บ: ๅŒน้…ๅบฆๆŽ’ๅบ + ๆŠ•้€’ๅปบ่ฎฎ
  • ๅŒน้…็ปดๅบฆ: ๆŠ€่ƒฝใ€็ป้ชŒใ€ๅญฆๅކใ€ๅ…ณ้”ฎ่ฏ

๐Ÿ› ๏ธ ๆŠ€ๆœฏๆ ˆ

ๅŽ็ซฏ

ๆŠ€ๆœฏ ็”จ้€”
FastAPI Web ๆก†ๆžถ
LangGraph Agent ็ผ–ๆŽ’
ZhipuAI LLM ๆœๅŠก (GLM-4.7)
Playwright ็ฝ‘้กต้‡‡้›†
WeasyPrint PDF ็”Ÿๆˆ
PyYAML ๆ็คบ่ฏ็ฎก็†

ๅ‰็ซฏ

ๆŠ€ๆœฏ ็”จ้€”
React 18 UI ๆก†ๆžถ
TypeScript ็ฑปๅž‹ๅฎ‰ๅ…จ
Tailwind CSS ๆ ทๅผ
Vite ๆž„ๅปบๅทฅๅ…ท
WebSocket ๅฎžๆ—ถ้€šไฟก

๐Ÿ“ ้กน็›ฎ็ป“ๆž„

AutoResume/
โ”œโ”€โ”€ backend/                  # Python ๅŽ็ซฏ
โ”‚   โ”œโ”€โ”€ agents/              # LangGraph Agent ๅฎž็Žฐ
โ”‚   โ”‚   โ”œโ”€โ”€ langgraph_nodes.py      # Agent ่Š‚็‚น
โ”‚   โ”‚   โ”œโ”€โ”€ langgraph_workflow.py   # ๅทฅไฝœๆตๅฎšไน‰
โ”‚   โ”‚   โ””โ”€โ”€ langgraph_state.py      # ็Šถๆ€ๅฎšไน‰
โ”‚   โ”œโ”€โ”€ api/                 # API ๆŽฅๅฃ
โ”‚   โ”‚   โ”œโ”€โ”€ main.py          # FastAPI ไธปๅบ”็”จ
โ”‚   โ”‚   โ”œโ”€โ”€ websocket.py     # WebSocket ๅค„็†
โ”‚   โ”‚   โ”œโ”€โ”€ router_agent.py  # ่ทฏ็”ฑ Agent
โ”‚   โ”‚   โ””โ”€โ”€ optimization_orchestrator.py  # ็ผ–ๆŽ’ๅ™จ
โ”‚   โ”œโ”€โ”€ prompts/             # LangGPT ๆ็คบ่ฏ
โ”‚   โ”‚   โ”œโ”€โ”€ jd_analyzer_prompt.yaml
โ”‚   โ”‚   โ”œโ”€โ”€ resume_optimizer_prompt.yaml
โ”‚   โ”‚   โ”œโ”€โ”€ resume_reviewer_prompt.yaml
โ”‚   โ”‚   โ””โ”€โ”€ job_submitter_prompt.yaml
โ”‚   โ”œโ”€โ”€ scraper/             # ๅฒ—ไฝ้‡‡้›†
โ”‚   โ”‚   โ”œโ”€โ”€ scraper.py
โ”‚   โ”‚   โ”œโ”€โ”€ playwright_scraper.py
โ”‚   โ”‚   โ””โ”€โ”€ url_builder.py
โ”‚   โ”œโ”€โ”€ utils/               # ๅทฅๅ…ทๆจกๅ—
โ”‚   โ”‚   โ”œโ”€โ”€ llm_service.py   # GLM ๆœๅŠก
โ”‚   โ”‚   โ””โ”€โ”€ file_storage.py  # ๆ–‡ไปถๅญ˜ๅ‚จ
โ”‚   โ”œโ”€โ”€ storage/             # ๆ•ฐๆฎๅญ˜ๅ‚จ
โ”‚   โ”‚   โ”œโ”€โ”€ original/        # ๅŽŸๅง‹็ฎ€ๅކ
โ”‚   โ”‚   โ”œโ”€โ”€ snapshots/       # ไธญ้—ดๅฟซ็…ง
โ”‚   โ”‚   โ””โ”€โ”€ final/           # ๆœ€็ปˆ PDF
โ”‚   โ””โ”€โ”€ test/                # ๆต‹่ฏ•็”จไพ‹
โ”œโ”€โ”€ frontend/                # React ๅ‰็ซฏ
โ”‚   โ”œโ”€โ”€ src/
โ”‚   โ”‚   โ”œโ”€โ”€ components/      # UI ็ป„ไปถ
โ”‚   โ”‚   โ”œโ”€โ”€ contexts/        # React Context
โ”‚   โ”‚   โ”œโ”€โ”€ services/        # ๆœๅŠกๅฑ‚
โ”‚   โ”‚   โ””โ”€โ”€ types/           # TypeScript ็ฑปๅž‹
โ”‚   โ””โ”€โ”€ package.json
โ”œโ”€โ”€ interfaces/              # ๆŽฅๅฃๆ–‡ๆกฃ
โ””โ”€โ”€ README.md

๐Ÿ”Œ API ๆŽฅๅฃ

WebSocket ๆŽฅๅฃ

่ทฏๅพ„ ่ฏดๆ˜Ž
/ws/{session_id} ๅฎžๆ—ถๅฏน่ฏๅ’Œ็Šถๆ€ๅŒๆญฅ

REST API

ๆ–นๆณ• ่ทฏๅพ„ ่ฏดๆ˜Ž
GET /api/v1/health ๅฅๅบทๆฃ€ๆŸฅ
POST /api/v1/sessions ๅˆ›ๅปบไผš่ฏ
POST /api/v1/sessions/{id}/message ๅ‘้€ๆถˆๆฏ
POST /api/v1/sessions/{id}/select-job ้€‰ๆ‹ฉๅฒ—ไฝ
POST /api/v1/sessions/{id}/upload-resume ไธŠไผ ็ฎ€ๅކ
POST /api/v1/jobs/search ๆœ็ดขๅฒ—ไฝ

๐Ÿงช ๆต‹่ฏ•

# ่ฟ่กŒๅŽ็ซฏๆต‹่ฏ•
cd backend
pytest

# ่ฟ่กŒ็‰นๅฎšๆต‹่ฏ•
pytest test/test_router_agent.py -v
pytest test/test_websocket.py -v

๐Ÿ“ ้…็ฝฎ่ฏดๆ˜Ž

็Žฏๅขƒๅ˜้‡

ๅˆ›ๅปบ backend/.env ๆ–‡ไปถ๏ผš

# GLM API ้…็ฝฎ
GLM-APIKEY=your_glm_api_key_here

# ๅฏ้€‰๏ผš่‡ชๅฎšไน‰ๆจกๅž‹
GLM_MODEL=GLM-4.7-Flash

ๆ็คบ่ฏ้…็ฝฎ

ๆ็คบ่ฏไฝไบŽ backend/prompts/ ็›ฎๅฝ•๏ผŒไฝฟ็”จ YAML ๆ ผๅผ๏ผŒ้ตๅพช LangGPT ็ป“ๆž„๏ผš

role:
  name: AgentName
  description: Agent ๆ่ฟฐ

skills:
  - ๆŠ€่ƒฝ1
  - ๆŠ€่ƒฝ2

rules:
  - ่ง„ๅˆ™1
  - ่ง„ๅˆ™2

workflow:
  - name: ๆญฅ้ชค1
    description: ๆญฅ้ชคๆ่ฟฐ

๐Ÿค ่ดก็ŒฎๆŒ‡ๅ—

  1. Fork ๆœฌไป“ๅบ“
  2. ๅˆ›ๅปบ็‰นๆ€งๅˆ†ๆ”ฏ (git checkout -b feature/AmazingFeature)
  3. ๆไบคๆ›ดๆ”น (git commit -m 'Add some AmazingFeature')
  4. ๆŽจ้€ๅˆฐๅˆ†ๆ”ฏ (git push origin feature/AmazingFeature)
  5. ๆ‰“ๅผ€ Pull Request

๐Ÿ“„ ่ฎธๅฏ่ฏ

MIT

๐Ÿ™ ่‡ด่ฐข


Made with โค๏ธ by Hao

About

AutoResume

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages