修正機敏資料

This commit is contained in:
2025-09-24 00:15:04 +08:00
parent 6f3b56d494
commit e2df87c6b7
2 changed files with 32 additions and 28 deletions

View File

@@ -37,17 +37,17 @@ export async function GET(request: NextRequest) {
const today = new Date().toISOString().split('T')[0] const today = new Date().toISOString().split('T')[0]
const yesterday = new Date(Date.now() - 24 * 60 * 60 * 1000).toISOString().split('T')[0] const yesterday = new Date(Date.now() - 24 * 60 * 60 * 1000).toISOString().split('T')[0]
// 批次查詢基本統計數據 // 批次查詢基本統計數據 - 主要使用 activity_logs 表
let basicStats let basicStats
try { try {
basicStats = await db.query(` basicStats = await db.query(`
SELECT SELECT
(SELECT COUNT(*) FROM users) as total_users, (SELECT COUNT(*) FROM users) as total_users,
(SELECT COUNT(DISTINCT user_id) FROM activity_logs WHERE DATE(CONVERT_TZ(created_at, '+00:00', '+08:00')) = ? AND action IN ('login', 'view', 'submit', 'vote', 'like')) as today_active_users, (SELECT COUNT(DISTINCT user_id) FROM activity_logs WHERE DATE(created_at) = ? AND action IN ('login', 'view', 'submit', 'vote', 'like', 'favorite')) as today_active_users,
(SELECT COUNT(DISTINCT user_id) FROM activity_logs WHERE DATE(CONVERT_TZ(created_at, '+00:00', '+08:00')) = ? AND action IN ('login', 'view', 'submit', 'vote', 'like')) as yesterday_active_users, (SELECT COUNT(DISTINCT user_id) FROM activity_logs WHERE DATE(created_at) = ? AND action IN ('login', 'view', 'submit', 'vote', 'like', 'favorite')) as yesterday_active_users,
(SELECT COALESCE(AVG(rating), 0) FROM user_ratings WHERE rating > 0) as avg_rating, (SELECT COALESCE(AVG(rating), 0) FROM user_ratings WHERE rating > 0) as avg_rating,
(SELECT COUNT(*) FROM apps) as total_apps, (SELECT COUNT(*) FROM apps) as total_apps,
(SELECT COUNT(*) FROM apps WHERE DATE(CONVERT_TZ(created_at, '+00:00', '+08:00')) >= DATE_SUB(CURDATE(), INTERVAL 7 DAY)) as new_this_week (SELECT COUNT(*) FROM apps WHERE DATE(created_at) >= DATE_SUB(CURDATE(), INTERVAL 7 DAY)) as new_this_week
`, [today, yesterday]) `, [today, yesterday])
} catch (dbError) { } catch (dbError) {
console.error('📊 資料庫查詢錯誤:', dbError) console.error('📊 資料庫查詢錯誤:', dbError)
@@ -89,7 +89,7 @@ export async function GET(request: NextRequest) {
const debugActivityLogs = await db.query(` const debugActivityLogs = await db.query(`
SELECT action, COUNT(*) as count SELECT action, COUNT(*) as count
FROM activity_logs FROM activity_logs
WHERE DATE(CONVERT_TZ(created_at, '+00:00', '+08:00')) >= DATE_SUB(CURDATE(), INTERVAL 7 DAY) WHERE DATE(created_at) >= DATE_SUB(CURDATE(), INTERVAL 7 DAY)
GROUP BY action GROUP BY action
ORDER BY count DESC ORDER BY count DESC
`) `)
@@ -98,7 +98,7 @@ export async function GET(request: NextRequest) {
const debugTodayActivity = await db.query(` const debugTodayActivity = await db.query(`
SELECT action, COUNT(DISTINCT user_id) as unique_users SELECT action, COUNT(DISTINCT user_id) as unique_users
FROM activity_logs FROM activity_logs
WHERE DATE(CONVERT_TZ(created_at, '+00:00', '+08:00')) = ? WHERE DATE(created_at) = ?
GROUP BY action GROUP BY action
ORDER BY unique_users DESC ORDER BY unique_users DESC
`, [today]) `, [today])
@@ -221,31 +221,35 @@ export async function GET(request: NextRequest) {
console.log('📊 查詢日期範圍:', { startDate, endDate }) console.log('📊 查詢日期範圍:', { startDate, endDate })
// 先測試查詢是否有數據 // 先測試查詢是否有數據 - 使用 activity_logs 表
const testQuery = await db.query(` const testQuery = await db.query(`
SELECT SELECT
viewed_at, created_at,
DATE(viewed_at) as date_direct, DATE(created_at) as date_direct,
user_id, user_id,
app_id action,
FROM user_views resource_type
WHERE DATE(viewed_at) BETWEEN ? AND ? FROM activity_logs
ORDER BY viewed_at DESC WHERE DATE(created_at) BETWEEN ? AND ?
ORDER BY created_at DESC
LIMIT 10 LIMIT 10
`, [startDate, endDate]) `, [startDate, endDate])
console.log('📊 測試查詢結果最近10筆:', testQuery) console.log('📊 測試查詢結果最近10筆:', testQuery)
// 使用 activity_logs 表獲取每日用戶和會話數據
dailyStats = await db.query(` dailyStats = await db.query(`
SELECT SELECT
DATE(viewed_at) as date, DATE(created_at) as date,
COUNT(DISTINCT user_id) as daily_users, COUNT(DISTINCT user_id) as daily_users,
COUNT(*) as daily_sessions COUNT(*) as daily_sessions
FROM user_views FROM activity_logs
WHERE DATE(viewed_at) BETWEEN ? AND ? WHERE DATE(created_at) BETWEEN ? AND ?
GROUP BY DATE(viewed_at) AND action IN ('login', 'view', 'submit', 'vote', 'like', 'favorite')
GROUP BY DATE(created_at)
ORDER BY date DESC ORDER BY date DESC
`, [startDate, endDate]) `, [startDate, endDate])
// 獲取所有活動的統計
dailyActivityStats = await db.query(` dailyActivityStats = await db.query(`
SELECT SELECT
DATE(created_at) as date, DATE(created_at) as date,

View File

@@ -3,18 +3,18 @@
# ===================================================== # =====================================================
# ===== 主機資料庫配置 ===== # ===== 主機資料庫配置 =====
DB_HOST=mysql.theaken.com DB_HOST=XXXXX
DB_PORT=33306 DB_PORT=XXXX
DB_NAME=db_AI_Platform DB_NAME=XXXXX
DB_USER=AI_Platform DB_USER=XXXX
DB_PASSWORD=Aa123456 DB_PASSWORD=XXXX
# ===== 備機資料庫配置 ===== # ===== 備機資料庫配置 =====
SLAVE_DB_HOST=122.100.99.161 SLAVE_DB_HOST=XXXX
SLAVE_DB_PORT=43306 SLAVE_DB_PORT=XXXX
SLAVE_DB_NAME=db_AI_Platform SLAVE_DB_NAME=XXXX
SLAVE_DB_USER=A999 SLAVE_DB_USER=XXXX
SLAVE_DB_PASSWORD=1023 SLAVE_DB_PASSWORD=XXXX
# ===== 資料庫備援配置 ===== # ===== 資料庫備援配置 =====
DB_FAILOVER_ENABLED=true DB_FAILOVER_ENABLED=true
@@ -30,7 +30,7 @@ DB_RETRY_DELAY=2000
# ===== AI API 配置 ===== # ===== AI API 配置 =====
# Gemini API 配置 (主要使用) # Gemini API 配置 (主要使用)
NEXT_PUBLIC_GEMINI_API_KEY=AIzaSyAN3pEJr_Vn2xkCidGZAq9eQqsMVvpj8g4 NEXT_PUBLIC_GEMINI_API_KEY=your_api_key_here
NEXT_PUBLIC_GEMINI_API_URL=https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash-latest:generateContent NEXT_PUBLIC_GEMINI_API_URL=https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash-latest:generateContent
# DeepSeek API 配置 (備用) # DeepSeek API 配置 (備用)