From 62189e53245039ba474ab9f25750ff87756cee02 Mon Sep 17 00:00:00 2001 From: cfdaily Date: Tue, 19 May 2026 22:21:45 +0800 Subject: [PATCH] auto-sync: 2026-05-19 22:21:45 --- scripts/e2e-restore.sh | 99 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 99 insertions(+) create mode 100644 scripts/e2e-restore.sh diff --git a/scripts/e2e-restore.sh b/scripts/e2e-restore.sh new file mode 100644 index 0000000..25318b6 --- /dev/null +++ b/scripts/e2e-restore.sh @@ -0,0 +1,99 @@ +#!/bin/bash +# moziplus v2 E2E 测试恢复脚本(恢复出厂设置) +# 功能:从备份恢复数据 → 清理测试残留 → 重启服务 +# 用法:bash scripts/e2e-restore.sh + +set -e + +DATA_DIR="$HOME/.sanguo_projects/sanguo_moziplus/data" +V2_DATA_DIR="$HOME/.sanguo_projects/sanguo_moziplus_v2/data" +BACKUP_DIR="$HOME/.sanguo_projects/sanguo_moziplus_v2/.e2e-backup" +REGISTRY="$V2_DATA_DIR/_registry.yaml" +TIMESTAMP=$(date +%Y%m%d_%H%M%S) + +echo "=== moziplus v2 恢复出厂设置 ===" +echo "时间: $(date)" +echo "" + +# Step 1: 停止服务 +echo "📦 [1/4] 停止 moziplus-v2 服务..." +pm2 stop sanguo-moziplus-v2 2>/dev/null && echo " ✅ 服务已停止" || echo " ⚠️ 服务未运行" + +# Step 2: 查找最新备份 +LATEST_BACKUP=$(ls -t "$BACKUP_DIR"/_registry.yaml.bak.* 2>/dev/null | head -1) +if [ -z "$LATEST_BACKUP" ]; then + echo "❌ 未找到备份数据,无法恢复" + echo " 将执行全新初始化..." + + # 全新初始化:清理所有数据 + echo "🧹 清理所有项目数据..." + for d in "$V2_DATA_DIR"/*/; do + dirname=$(basename "$d") + if [ "$dirname" != "_mail" ]; then + rm -rf "$d" + echo " 已删除: $dirname" + fi + done + + # 重建干净注册表 + echo "projects:" > "$REGISTRY" + echo " ✅ 注册表已重置" + + # 重建 _mail DB + python3 -c " +from pathlib import Path +import sys +sys.path.insert(0, '$HOME/.sanguo_projects/sanguo_moziplus_v2') +from src.blackboard.db import init_db +init_db(Path('$V2_DATA_DIR/_mail/blackboard.db')) +print(' ✅ _mail DB 已重建') +" + + echo "" + echo "=== 全新初始化完成 ===" + exit 0 +fi + +echo "📂 找到备份: $LATEST_BACKUP" + +# Step 3: 恢复数据 +echo "💾 [2/4] 恢复数据..." + +# 恢复注册表 +cp "$LATEST_BACKUP" "$REGISTRY" +echo " ✅ 注册表已恢复" + +# 恢复 _mail DB +MAIL_BACKUP=$(ls -t "$BACKUP_DIR/_mail/"blackboard.db.bak.* 2>/dev/null | head -1) +if [ -n "$MAIL_BACKUP" ]; then + cp "$MAIL_BACKUP" "$V2_DATA_DIR/_mail/blackboard.db" + echo " ✅ _mail DB 已恢复" +fi + +# 恢复 demo DB +DEMO_BACKUP=$(ls -t "$BACKUP_DIR/demo/"blackboard.db.bak.* 2>/dev/null | head -1) +if [ -n "$DEMO_BACKUP" ]; then + mkdir -p "$V2_DATA_DIR/demo" + cp "$DEMO_BACKUP" "$V2_DATA_DIR/demo/blackboard.db" + echo " ✅ demo DB 已恢复" +fi + +# Step 4: 清理测试产生的项目 +echo "🧹 [3/4] 清理测试产生的项目..." +for d in "$V2_DATA_DIR"/e2e-v27-*/; do + [ -d "$d" ] && rm -rf "$d" && echo " 已删除: $(basename $d)" +done +for d in "$V2_DATA_DIR"/e2e-routing-test/; do + [ -d "$d" ] && rm -rf "$d" && echo " 已删除: $(basename $d)" +done +for d in "$V2_DATA_DIR"/debug-task-*/; do + [ -d "$d" ] && rm -rf "$d" && echo " 已删除: $(basename $d)" +done + +echo "🔄 [4/4] 重启 moziplus-v2 服务..." +pm2 restart sanguo-moziplus-v2 2>/dev/null && echo " ✅ 服务已重启" || echo " ⚠️ 重启失败,请手动检查" + +echo "" +echo "=== 恢复完成 ===" +echo "服务状态:" +pm2 status sanguo-moziplus-v2 2>/dev/null || true