全项目扫描修复: Docker数据卷修复+安全requireAdmin+12页SEO+API白名单+脚本超时+常量提取+假数据删除
This commit is contained in:
@@ -0,0 +1,114 @@
|
||||
#!/bin/bash
|
||||
echo "=========================================="
|
||||
echo " 追光AI 定时任务 + Bot 运行巡检"
|
||||
echo " $(date '+%Y-%m-%d %H:%M:%S')"
|
||||
echo "=========================================="
|
||||
echo ""
|
||||
|
||||
echo "=== 1) PM2 进程状态 ==="
|
||||
pm2 list 2>&1 | head -30
|
||||
echo ""
|
||||
|
||||
echo "=== 2) 本项目 crontab 任务(按时间排) ==="
|
||||
crontab -l 2>/dev/null
|
||||
echo ""
|
||||
|
||||
echo "=== 3) 本项目最近 5 次 PM2 重启事件 ==="
|
||||
pm2 show zhuiguang-ai 2>&1 | grep -E "restarts|unstable|uptime|created at|status" | head -10
|
||||
echo ""
|
||||
|
||||
echo "=== 4) 各定时任务最近 5 条日志 ==="
|
||||
cd /home/ubuntu/zhuiguang-ai/logs 2>/dev/null
|
||||
for f in task1.log task3.log task4.log task5.log task6.log task7.log daily-news.log bot-activity.log; do
|
||||
if [ -f "$f" ]; then
|
||||
sz=$(du -h "$f" | cut -f1)
|
||||
lines=$(wc -l < "$f")
|
||||
last_mod=$(stat -c '%y' "$f" 2>/dev/null | cut -d. -f1)
|
||||
last_line=$(tail -1 "$f" 2>/dev/null)
|
||||
echo " [${f}] size=${sz} lines=${lines} mtime=${last_mod}"
|
||||
echo " tail: ${last_line:0:150}"
|
||||
else
|
||||
echo " [${f}] MISSING"
|
||||
fi
|
||||
done
|
||||
echo ""
|
||||
|
||||
echo "=== 5) Bot 相关脚本最近 3 条日志 ==="
|
||||
for f in bot-activity.log bot-feedback-loop.log bot-weekly-review.log bot-skill-crystallize.log bot-affinity-update.log bot-adversarial-learning.log bot-persona-experiment.log; do
|
||||
if [ -f "$f" ]; then
|
||||
last_line=$(tail -1 "$f" 2>/dev/null)
|
||||
last_mod=$(stat -c '%y' "$f" 2>/dev/null | cut -d. -f1)
|
||||
echo " [${f}] mtime=${last_mod}"
|
||||
echo " tail: ${last_line:0:150}"
|
||||
fi
|
||||
done
|
||||
echo ""
|
||||
|
||||
echo "=== 6) 24h 内任务失败 / ERROR 关键字扫描 ==="
|
||||
for f in *.log; do
|
||||
[ -f "$f" ] || continue
|
||||
err=$(grep -iE 'error|失败|fatal|exception|exit code [^0]|❌|❌' "$f" 2>/dev/null | tail -3)
|
||||
if [ -n "$err" ]; then
|
||||
echo " --- ${f} ---"
|
||||
echo "$err" | sed 's/^/ /'
|
||||
fi
|
||||
done
|
||||
echo ""
|
||||
|
||||
echo "=== 7) 数据库里的 Bot 现状 ==="
|
||||
mysql -h rm-0jlbgr2rv6dj3t6jngo.mysql.rds.aliyuncs.com -u mohe001 -pmohe001 zhuiguang_ai -e "
|
||||
SELECT
|
||||
(SELECT COUNT(*) FROM User WHERE isBot = 1) AS bot_users,
|
||||
(SELECT COUNT(*) FROM BotConfig) AS bot_configs,
|
||||
(SELECT COUNT(*) FROM BotConfig WHERE isActive = 1) AS active_bots,
|
||||
(SELECT COUNT(*) FROM ForumTopic WHERE createdAt > DATE_SUB(NOW(), INTERVAL 7 DAY)) AS topics_7d,
|
||||
(SELECT COUNT(*) FROM ForumPost WHERE createdAt > DATE_SUB(NOW(), INTERVAL 7 DAY)) AS posts_7d,
|
||||
(SELECT COUNT(*) FROM ForumTopic t JOIN User u ON t.authorId = u.id WHERE u.isBot = 1 AND t.createdAt > DATE_SUB(NOW(), INTERVAL 7 DAY)) AS bot_topics_7d,
|
||||
(SELECT COUNT(*) FROM ForumPost p JOIN User u ON p.authorId = u.id WHERE u.isBot = 1 AND p.createdAt > DATE_SUB(NOW(), INTERVAL 7 DAY)) AS bot_posts_7d,
|
||||
(SELECT COUNT(*) FROM BotAdversarialLearning) AS adv_learnings,
|
||||
(SELECT COUNT(*) FROM BotAdversarialLearning WHERE status = 'active') AS active_learnings,
|
||||
(SELECT COUNT(*) FROM BotPersonaVariant) AS persona_variants,
|
||||
(SELECT COUNT(*) FROM BotPersonaExperiment) AS experiments;
|
||||
" 2>&1 | grep -v "Warning"
|
||||
echo ""
|
||||
|
||||
echo "=== 8) 最近 24h 论坛板块活跃度(按板块) ==="
|
||||
mysql -h rm-0jlbgr2rv6dj3t6jngo.mysql.rds.aliyuncs.com -u mohe001 -pmohe001 zhuiguang_ai -e "
|
||||
SELECT
|
||||
c.name AS 板块,
|
||||
c.slug AS slug,
|
||||
(SELECT COUNT(*) FROM ForumTopic t WHERE t.categoryId = c.id AND t.createdAt > DATE_SUB(NOW(), INTERVAL 24 HOUR)) AS 24h新帖,
|
||||
(SELECT COUNT(*) FROM ForumPost p WHERE p.topicId IN (SELECT id FROM ForumTopic WHERE categoryId = c.id) AND p.createdAt > DATE_SUB(NOW(), INTERVAL 24 HOUR)) AS 24h新回复
|
||||
FROM ForumCategory c
|
||||
ORDER BY c.id;
|
||||
" 2>&1 | grep -v "Warning"
|
||||
echo ""
|
||||
|
||||
echo "=== 9) 最近 7 天发 Bot 帖前 10 名 ==="
|
||||
mysql -h rm-0jlbgr2rv6dj3t6jngo.mysql.rds.aliyuncs.com -u mohe001 -pmohe001 zhuiguang_ai -e "
|
||||
SELECT
|
||||
u.name AS bot,
|
||||
COUNT(DISTINCT t.id) AS 发帖数,
|
||||
COUNT(DISTINCT p.id) AS 回复数,
|
||||
COALESCE(SUM(t.likeCount), 0) AS 获赞,
|
||||
COALESCE(SUM(t.viewCount), 0) AS 浏览
|
||||
FROM User u
|
||||
LEFT JOIN ForumTopic t ON t.authorId = u.id AND t.createdAt > DATE_SUB(NOW(), INTERVAL 7 DAY)
|
||||
LEFT JOIN ForumPost p ON p.authorId = u.id AND p.createdAt > DATE_SUB(NOW(), INTERVAL 7 DAY)
|
||||
WHERE u.isBot = 1
|
||||
GROUP BY u.id, u.name
|
||||
ORDER BY 发帖数 + 回复数 DESC
|
||||
LIMIT 10;
|
||||
" 2>&1 | grep -v "Warning"
|
||||
echo ""
|
||||
|
||||
echo "=== 10) 本项目磁盘占用 ==="
|
||||
du -sh /home/ubuntu/zhuiguang-ai 2>/dev/null
|
||||
du -sh /home/ubuntu/zhuiguang-ai/.next 2>/dev/null
|
||||
du -sh /home/ubuntu/zhuiguang-ai/node_modules 2>/dev/null
|
||||
du -sh /home/ubuntu/zhuiguang-ai/logs 2>/dev/null
|
||||
echo ""
|
||||
|
||||
echo "=========================================="
|
||||
echo " 巡检完成"
|
||||
echo "=========================================="
|
||||
Reference in New Issue
Block a user