| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- package com.pharmacopoeia.controller;
- import com.pharmacopoeia.config.QwenProperties;
- import org.springframework.jdbc.core.JdbcTemplate;
- import org.springframework.http.ResponseEntity;
- import org.springframework.web.bind.annotation.*;
- import java.util.LinkedHashMap;
- import java.util.List;
- import java.util.Map;
- @RestController
- @RequestMapping("/api/v1/admin")
- public class AdminController {
- private final QwenProperties qwenProperties;
- private final JdbcTemplate jdbc;
- public AdminController(QwenProperties qwenProperties, JdbcTemplate jdbc) {
- this.qwenProperties = qwenProperties;
- this.jdbc = jdbc;
- }
- @GetMapping("/stats")
- public ResponseEntity<Map<String, Object>> getStats() {
- int drugs = jdbc.queryForObject("SELECT COUNT(*) FROM drugs WHERE is_active = TRUE", Integer.class);
- int chunks = jdbc.queryForObject("SELECT COUNT(*) FROM drug_chunks WHERE vec IS NOT NULL", Integer.class);
- int queries = jdbc.queryForObject("SELECT COUNT(*) FROM messages WHERE role = 'user'", Integer.class);
- int users = jdbc.queryForObject("SELECT COUNT(*) FROM users", Integer.class);
- Map<String, Object> result = new LinkedHashMap<>();
- result.put("total_drugs", drugs);
- result.put("total_chunks", chunks);
- result.put("total_queries", queries);
- result.put("total_users", users);
- return ResponseEntity.ok(result);
- }
- @GetMapping("/feedback/list")
- public ResponseEntity<Map<String, Object>> listFeedback(
- @RequestParam(defaultValue = "1") int page,
- @RequestParam(defaultValue = "20") int pageSize) {
- return ResponseEntity.ok(Map.of(
- "items", java.util.Collections.emptyList(),
- "total", 0,
- "page", page,
- "page_size", pageSize
- ));
- }
- @GetMapping("/knowledge/status")
- public ResponseEntity<Map<String, Object>> knowledgeStatus() {
- int drugs = jdbc.queryForObject("SELECT COUNT(*) FROM drugs WHERE is_active = TRUE", Integer.class);
- int chunks = jdbc.queryForObject("SELECT COUNT(*) FROM drug_chunks WHERE vec IS NOT NULL", Integer.class);
- String lastUpdate = jdbc.queryForObject(
- "SELECT COALESCE(MAX(updated_at)::text, '') FROM drugs", String.class);
- Map<String, Object> result = new LinkedHashMap<>();
- result.put("total_drugs", drugs);
- result.put("total_chunks", chunks);
- result.put("last_update", lastUpdate);
- result.put("embedding_model", qwenProperties.getEmbeddingModel());
- return ResponseEntity.ok(result);
- }
- }
|