feat: 每日热点问题共享库(定时生成+管理员手动更新+点击埋点)
数据库: - daily_topics表:每天每场景一条热点问题记录 - sample_clicks表:记录用户点击示例问题行为 后端: - DailyTopicStore: CRUD + 埋点 + 点击统计 - generate_daily_topics: AI生成4场景各25-30个问题 - 定时任务:每天凌晨3点自动生成(后台线程轮询) - GET /topics/daily: 获取当天热点(公开) - POST /topics/click: 点击埋点 - GET /admin/daily-topics: 管理端查看 - POST /admin/daily-topics: 管理员手动更新 - POST /admin/daily-topics/generate: 手动触发AI生成 - GET /admin/sample-clicks: 点击统计 前端: - ChatPanel挂载时取当天热点,无则用硬编码兜底 - 点击示例问题时记录埋点 - AdminDailyTopics管理页面:查看/编辑/手动生成 - 路由 /admin/daily-topics + 导航配置 Generated with [Devin](https://devin.ai) Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
This commit is contained in:
+25
@@ -249,6 +249,31 @@ CREATE TABLE IF NOT EXISTS risk_alerts (
|
||||
CREATE INDEX IF NOT EXISTS idx_risk_alerts_user ON risk_alerts(user_phone);
|
||||
CREATE INDEX IF NOT EXISTS idx_risk_alerts_user_read ON risk_alerts(user_phone, read_at);
|
||||
CREATE INDEX IF NOT EXISTS idx_risk_alerts_created ON risk_alerts(created_at DESC);
|
||||
|
||||
-- 每日热点问题库:每天凌晨 AI 生成,管理员可手动更新
|
||||
CREATE TABLE IF NOT EXISTS daily_topics (
|
||||
id SERIAL PRIMARY KEY,
|
||||
date DATE NOT NULL, -- 生效日期
|
||||
scene TEXT NOT NULL, -- legal/decision/life/emotion
|
||||
questions JSONB NOT NULL, -- 问题数组 ["问题1","问题2",...]
|
||||
source TEXT NOT NULL DEFAULT 'ai', -- ai(自动生成) / admin(管理员手动)
|
||||
created_at TIMESTAMPTZ NOT NULL DEFAULT now()
|
||||
);
|
||||
|
||||
-- 唯一约束:同一天同一场景只有一条记录(更新时覆盖)
|
||||
CREATE UNIQUE INDEX IF NOT EXISTS idx_daily_topics_date_scene ON daily_topics(date, scene);
|
||||
CREATE INDEX IF NOT EXISTS idx_daily_topics_date ON daily_topics(date DESC);
|
||||
|
||||
-- 示例问题点击埋点:记录用户点击哪些示例问题
|
||||
CREATE TABLE IF NOT EXISTS sample_clicks (
|
||||
id SERIAL PRIMARY KEY,
|
||||
user_phone TEXT,
|
||||
scene TEXT NOT NULL, -- legal/decision/life/emotion
|
||||
question TEXT NOT NULL, -- 被点击的示例问题
|
||||
clicked_at TIMESTAMPTZ NOT NULL DEFAULT now()
|
||||
);
|
||||
CREATE INDEX IF NOT EXISTS idx_sample_clicks_scene ON sample_clicks(scene);
|
||||
CREATE INDEX IF NOT EXISTS idx_sample_clicks_clicked ON sample_clicks(clicked_at DESC);
|
||||
"""
|
||||
|
||||
# 专家种子数据(密码统一为 expert123,生产环境应让专家自行注册)
|
||||
|
||||
Reference in New Issue
Block a user