How rbwnb/so-ai-edu works
Ocean Academy is a Vue/Spring marine-life education platform for learners and administrators. Learners browse species, use AI identification and knowledge Q&A, participate in observation posts, take quizzes, and earn or redeem points; administrators manage content, users, roles, and operations. The frontend calls backend APIs, while the backend provides domain endpoints and persistence. The RAG path is evidenced in sampled controller and service code; other capability links reflect the README and module tree, whose implementation details were not sampled.
Main entry points: http.js HTTP client · index.js Routes and layouts · RagQaServiceImpl.java RAG orchestration · RagController.java RAG and documents
Components 26
Learner experience
- Vue application
frontend/src/main.js - Routes and layouts
frontend/src/router/index.js - HTTP client
frontend/src/utils/http.js - Species browsing
frontend/src/views/edu/encyclopedia/Index.vue - Quiz and review
frontend/src/views/edu/quiz/Index.vue - Observation community
frontend/src/views/edu/obs-community/Index.vue - RAG chat
frontend/src/components/RagChatWindow.vue
Education and community
- Species endpoints
frontend/src/api/species.js - Species API
backend/src/main/java/com/gdou/marine/controller/SpeciesController.java - Quiz endpoints
frontend/src/api/quiz.js - Quiz and exam APIs
backend/src/main/java/com/gdou/marine/controller/ExamController.java - Observation API
backend/src/main/java/com/gdou/marine/controller/UserObservationController.java - Points and shop
backend/src/main/java/com/gdou/marine/controller/PointsController.java - Community highlights
backend/src/main/java/com/gdou/marine/service/HighlightBroadcastService.java
AI knowledge services
- AI identification
backend/src/main/java/com/gdou/marine/controller/VisualController.java - RAG endpoints
frontend/src/api/rag.js - RAG and documents
backend/src/main/java/com/gdou/marine/controller/RagController.java - RAG orchestration
backend/src/main/java/com/gdou/marine/service/impl/RagQaServiceImpl.java - Redis vector store
backend/src/main/java/com/gdou/marine/config/RedisVectorStore.java - AI model services
backend/src/main/java/com/gdou/marine/config/SaaLLMConfig.java
Administration
- Admin console
frontend/src/layout/AdminLayout.vue - Knowledge management
frontend/src/api/knowledge.js - User and role APIs
backend/src/main/java/com/gdou/marine/controller/SysUserController.java
Backend platform
- JWT and RBAC
backend/src/main/java/com/gdou/marine/config/SecurityConfig.java - MySQL records
Other components
- Learner
Connections 30
- Learner → Vue application: uses
- Vue application → Routes and layouts: renders routes
- Routes and layouts → Species browsing: routes to
- Routes and layouts → Quiz and review: routes to
- Routes and layouts → Observation community: routes to
- Species browsing → Species endpoints: requests data
- Species endpoints → HTTP client: sends requests
- HTTP client → Species API: calls API
- Quiz and review → Quiz endpoints: requests quizzes
- Quiz endpoints → HTTP client: sends requests
- HTTP client → Quiz and exam APIs: calls API
- Observation community → HTTP client: uses API
- HTTP client → Observation API: calls API
- Learner → RAG chat: asks questions
- RAG chat → RAG endpoints: loads chat data
- RAG endpoints → HTTP client: sends requests
- HTTP client → RAG and documents: calls API
- RAG and documents → RAG orchestration: delegates Q&A
- RAG orchestration → Redis vector store: retrieves context
- RAG orchestration → AI model services: requests responses
- RAG orchestration → MySQL records: stores conversation
- Admin console → Knowledge management: manages documents
- Knowledge management → HTTP client: sends requests
- HTTP client → RAG and documents: calls API
- Admin console → User and role APIs: manages accounts
- Points and shop → MySQL records: reads and writes
- Observation API → MySQL records: reads and writes
- JWT and RBAC → HTTP client: authenticates requests
- Community highlights → AI model services: generates copy
- Community highlights → MySQL records: reads posts and sends notices