diff --git a/ai_knowledge_base_v2/.env.example b/ai_knowledge_base_v2/.env.example index 42c384a..6c4d803 100644 --- a/ai_knowledge_base_v2/.env.example +++ b/ai_knowledge_base_v2/.env.example @@ -28,6 +28,14 @@ PERIODIC_REPORT_MAX_ATTEMPTS=3 PERIODIC_REPORT_WEEKLY_ENABLED=true PERIODIC_REPORT_MONTHLY_ENABLED=true PERIODIC_REPORT_TIMEZONE=Asia/Shanghai +PERIODIC_REPORT_GLOBAL_SCHEDULE_ENABLED=false +PERIODIC_REPORT_LAZY_CHECK_ENABLED=true +PERIODIC_REPORT_LAZY_CHECK_LOCK_SECONDS=60 +PERIODIC_REPORT_WEEKLY_BACKFILL_LIMIT=26 +PERIODIC_REPORT_MONTHLY_BACKFILL_LIMIT=6 +PERIODIC_REPORT_FEATURE_START=2026-07-31T00:00:00+08:00 +PERIODIC_REPORT_SOURCE_CHUNK_CHARS=18000 +USER_BEHAVIOR_RETENTION_DAYS=30 TOPIC_SETTLEMENT_WORKER_ENABLED=true TOPIC_SETTLEMENT_POLL_SECONDS=2 TOPIC_SETTLEMENT_STALE_MINUTES=30 diff --git a/ai_knowledge_base_v2/apps/admin-web/src/App.vue b/ai_knowledge_base_v2/apps/admin-web/src/App.vue index a676323..1cf6de3 100644 --- a/ai_knowledge_base_v2/apps/admin-web/src/App.vue +++ b/ai_knowledge_base_v2/apps/admin-web/src/App.vue @@ -53,6 +53,7 @@ const AdminManagementView = defineAsyncComponent( () => import("./components/AdminManagementView.vue"), ); const FeedbackManagementView = defineAsyncComponent(() => import("./components/FeedbackManagementView.vue")); +const UserBehaviorAnalysisView = defineAsyncComponent(() => import("./components/UserBehaviorAnalysisView.vue")); const admin = ref(null); const activeMenu = ref("dashboard"); @@ -68,6 +69,7 @@ const menuPermissions: Record = { "content-generation": "content-generation.view", configs: "configs.view", sso: "sso.view", records: "records.view", retrievals: "retrievals.view", attention: "attention.view", admins: "admins.view", feedback: "feedback.view", + behavior: "behavior.view", }; const entitlementPlans = ref([]); @@ -717,6 +719,11 @@ async function clearFeishuCache() { :class="{ active: activeMenu === 'feedback' }" @click="switchMenu('feedback')" >反馈管理 + + +