How juliu9/it-project works
RecommenderAgent turns natural-language audiobook requests into structured intents, coordinates session-aware recommendation work, retrieves and ranks catalogue candidates, and returns conversational results. A separate book-search endpoint provides direct catalogue lookup. Redis supports conversational state, PostgreSQL stores long-term profiles, and Solr provides catalogue search. The sampled engine shows recommendation dispatch, candidate retrieval/ranking, and asynchronous session-update events; some gateway, profile, and response wiring is supported by the README rather than sampled implementation.
Main entry points: RecommendationEngine.java Recommendation engine · RequestGateway.java Request gateway · InputParser.java Input parser · BookSearchController.java Book search controller
Components 20
Request handling
- Request gateway
src/main/java/com/gen3/recommenderagent/api/RequestGateway.java - Input parser
src/main/java/com/gen3/recommenderagent/inputparser/InputParser.java - Parsed request
src/main/java/com/gen3/recommenderagent/domain/session/SessionRequest.java
Recommendation workflow
- Recommendation engine
src/main/java/com/gen3/recommenderagent/engine/RecommendationEngine.java - Candidate retriever
src/main/java/com/gen3/recommenderagent/ranker/CandidateRetriever.java - Ranking service
src/main/java/com/gen3/recommenderagent/ranker/RankingService.java - Recommendations
src/main/java/com/gen3/recommenderagent/domain/session/Recommendations.java
Session and profile state
- Session cache
src/main/java/com/gen3/recommenderagent/storage/sessioncache/RedisSessionCache.java - Redis
- Session update event
src/main/java/com/gen3/recommenderagent/engine/SessionUpdateEvent.java - Redis session observer
src/main/java/com/gen3/recommenderagent/storage/sessioncache/RedisSessionObserver.java - User profile database
src/main/java/com/gen3/recommenderagent/storage/userprofiledb/UserProfileDB.java - PostgreSQL
Audiobook catalogue
- Book search controller
src/main/java/com/gen3/recommenderagent/api/BookSearchController.java - Solr audiobook repository
src/main/java/com/gen3/recommenderagent/ranker/SolrAudiobookRepository.java - Apache Solr
- Book search response
src/main/java/com/gen3/recommenderagent/api/BookSearchResponse.java
Response generation
- Response generator
src/main/java/com/gen3/recommenderagent/response/ResponseGenerator.java - AI model service
Other components
- API user
Connections 24
- API user → Request gateway: submits request
- Request gateway → Input parser: parses text
- Input parser → AI model service: extracts intent
- Input parser → Parsed request: creates request
- Request gateway → Recommendation engine: processes request
- Recommendation engine → Session cache: reads session
- Session cache → Redis: reads/writes
- Recommendation engine → Candidate retriever: retrieves candidates
- Candidate retriever → Solr audiobook repository: searches catalogue
- Solr audiobook repository → Apache Solr: queries books
- Recommendation engine → Ranking service: ranks candidates
- Ranking service → Recommendations: creates results
- Recommendation engine → Session update event: publishes update
- Session update event → Redis session observer: notifies listener
- Redis session observer → Session cache: updates session
- Recommendation engine → User profile database: uses profile
- User profile database → PostgreSQL: reads/writes profile
- Request gateway → Response generator: generates reply
- Response generator → AI model service: generates text
- Request gateway → API user: returns reply
- API user → Book search controller: searches books
- Book search controller → Solr audiobook repository: searches catalogue
- Book search controller → Book search response: formats results
- Book search response → API user: returns matches