How jazzblues2024/gua-ai-interview works
瓜分Offer is an AI interview platform: recruiters configure positions, questions, resumes, and interview sessions; candidates then join a live interview, answer streamed questions, and receive an evaluated report. The documented backend flow runs through a gateway workflow engine and agent graph, with checkpoint recovery, asynchronous evaluation/reporting, and supporting RAG, proctoring, and TTS capabilities. Paths and links reflect the tree and supplied excerpts plus explicit README architecture; several feature branches are documented but their internal wiring was not sampled.
Main entry points: InterviewWorkflowEngine.java Workflow engine · service RAG retrieval · controller REST controllers · node Agent graph nodes
Components 24
User experience
- Web application
frontend/src/routes - Live interview UI
frontend/src/routes/interview - Proctoring UI
frontend/src/components/candidate
Gateway and workflow
- REST controllers
interview-gateway/src/main/java/com/aims/gateway/controller - JWT security
interview-gateway/src/main/java/com/aims/gateway/security - Interview WebSocket
interview-gateway/src/main/java/com/aims/gateway/ws - Workflow engine
interview-gateway/src/main/java/com/aims/gateway/orchestration/InterviewWorkflowEngine.java - State persistence
interview-gateway/src/main/java/com/aims/gateway/orchestration/StatePersistenceService.java
Agent intelligence
- Interview graph
interview-agent/src/main/java/com/aims/agent/orchestration/graph/InterviewGraphFactory.java - Agent graph nodes
interview-agent/src/main/java/com/aims/agent/orchestration/node - Interview agents
interview-agent/src/main/java/com/aims/agent - AI chat facade
interview-ai/src/main/java/com/aims/ai/facade - Model routing
interview-ai/src/main/java/com/aims/ai/router
Interview data
- Interview sessions
interview-infra/src/main/java/com/aims/infra/persistence/service/InterviewSessionService.java - Position, question, resume
interview-infra/src/main/java/com/aims/infra/persistence - RAG retrieval
interview-infra/src/main/java/com/aims/infra/persistence/service - Evaluation and reports
interview-gateway/src/main/java/com/aims/gateway/ws
Platform services
- PostgreSQL / pgvector
- Redis
- Kafka
- TTS and audio storage
interview-infra/src/main/java/com/aims/infra/service/impl/VolcanoTtsService.java - AI model provider
Other components
- Recruiter
- Candidate
Connections 32
- Recruiter → Web application: configures interviews
- Candidate → Web application: uses platform
- Candidate → Live interview UI: joins interview
- Web application → REST controllers: REST requests
- Web application → JWT security: authenticates
- Live interview UI → Interview WebSocket: WebSocket messages
- Proctoring UI → Live interview UI: reports focus signals
- REST controllers → Interview sessions: manages sessions
- REST controllers → Position, question, resume: manages records
- REST controllers → RAG retrieval: requests search
- Interview WebSocket → Workflow engine: submits answers
- Workflow engine → Interview graph: invokes graph
- Workflow engine → State persistence: syncs state
- Workflow engine → Redis: checkpoints
- State persistence → Interview sessions: loads session
- State persistence → Position, question, resume: loads and syncs
- Interview graph → Agent graph nodes: dispatches nodes
- Agent graph nodes → Interview agents: runs agent tasks
- Interview agents → AI chat facade: requests completions
- AI chat facade → Model routing: selects model
- Model routing → AI model provider: calls model
- Agent graph nodes → RAG retrieval: retrieves references
- RAG retrieval → Model routing: embeds queries
- RAG retrieval → PostgreSQL / pgvector: searches vectors
- RAG retrieval → Redis: caches searches
- Workflow engine → Kafka: publishes evaluation
- Kafka → Evaluation and reports: dispatches evaluation
- Evaluation and reports → Interview sessions: updates progress
- Evaluation and reports → PostgreSQL / pgvector: stores results
- Agent graph nodes → TTS and audio storage: synthesizes questions
- TTS and audio storage → AI model provider: requests speech
- TTS and audio storage → Redis: stores audio