#!/bin/bash

echo "=== 修复 inkos 审计问题 ==="

# 1. 停止所有 inkos 进程
echo "1. 停止 inkos 进程..."
pkill -f "inkos" 2>/dev/null
sleep 3

# 2. 备份当前状态
echo "2. 备份当前状态..."
BACKUP_DIR="/root/.openclaw/workspace/backups/inkos_fix_$(date +%Y%m%d_%H%M%S)"
mkdir -p "$BACKUP_DIR"
cp -r /root/.openclaw/workspace/tomato-novel/books/末日重生-开局囤货十亿物资/story/state/* "$BACKUP_DIR/" 2>/dev/null || true

# 3. 修复 index.json 数据问题
echo "3. 修复 index.json 数据问题..."
cd /root/.openclaw/workspace/tomato-novel/books/末日重生-开局囤货十亿物资/chapters

# 检查并修复空标题问题
python3 -c "
import json
import os

try:
    with open('index.json', 'r', encoding='utf-8') as f:
        data = json.load(f)
    
    print(f'原始条目数: {len(data)}')
    
    # 修复空标题
    fixed_count = 0
    for i, item in enumerate(data):
        if 'title' not in item or not item['title'] or item['title'].strip() == '':
            if 'number' in item:
                item['title'] = f'第{item[\"number\"]}章'
                fixed_count += 1
            else:
                item['title'] = '未命名章节'
                fixed_count += 1
    
    print(f'修复了 {fixed_count} 个空标题')
    
    # 保存修复后的文件
    with open('index.json', 'w', encoding='utf-8') as f:
        json.dump(data, f, ensure_ascii=False, indent=2)
    
    print('index.json 修复完成')
    
except Exception as e:
    print(f'修复 index.json 时出错: {e}')
"

# 4. 清理运行时文件
echo "4. 清理运行时文件..."
RUNTIME_DIR="/root/.openclaw/workspace/tomato-novel/books/末日重生-开局囤货十亿物资/story/runtime"
if [ -d "$RUNTIME_DIR" ]; then
    # 备份运行时文件
    cp -r "$RUNTIME_DIR" "$BACKUP_DIR/runtime_backup" 2>/dev/null || true
    
    # 清理有问题的运行时文件（保留前100章）
    find "$RUNTIME_DIR" -name "chapter-*.json" -type f | sort -V | tail -n +101 | xargs rm -f 2>/dev/null || true
    echo "已清理 chapter-100 之后的运行时文件"
fi

# 5. 重置 inkos 状态
echo "5. 重置 inkos 状态..."
STATE_DIR="/root/.openclaw/workspace/tomato-novel/books/末日重生-开局囤货十亿物资/story/state"
if [ -d "$STATE_DIR" ]; then
    # 创建新的状态文件
    cat > "$STATE_DIR/current_state.md" << 'EOF'
# 当前状态

## 角色状态
- **陈末**: 在城西旧货场棚子，伤口感染，正在制定对付疤哥的计划
- **小雨**: 在吴建军物流园安全位置
- **小野**: 在吴建军物流园安全位置
- **疤哥**: 资金链断裂，老鬼跑路，手下离心
- **刀疤刘**: 准备趁机夺回城南地盘
- **眼镜**: 已离开，提供监控系统后门

## 物资状态
- 钢材交易完成，定金5万已付
- 监控系统后门密码: 20260816
- 现金: 约10万
- 武器: 匕首一把

## 时间线
- 当前时间: 8月16日晚上
- 末日倒计时: 25天
- 疤哥计划对胡文斌下手: 3天后

## 主要威胁
1. 疤哥势力威胁
2. 伤口感染恶化
3. 物资安全
4. 时间紧迫
EOF

    echo "状态文件已重置"
fi

# 6. 启动 inkos
echo "6. 启动 inkos..."
cd /root/.openclaw/workspace/tomato-novel && nohup inkos up > /tmp/inkos_fix_start.log 2>&1 &

# 等待启动
sleep 10

# 7. 检查状态
echo "7. 检查状态..."
if ps aux | grep -q "inkos up" | grep -v grep; then
    PID=$(ps aux | grep "inkos up" | grep -v grep | awk '{print $2}')
    echo "✅ inkos 守护进程已启动 (PID: $PID)"
    
    # 检查书籍状态
    cd /root/.openclaw/workspace/tomato-novel && inkos status 2>/dev/null || echo "无法获取状态"
else
    echo "❌ inkos 启动失败"
    echo "查看日志: tail -50 /tmp/inkos_fix_start.log"
fi

echo "=== 修复完成 ==="
echo "备份位置: $BACKUP_DIR"