Files
DevFlow/scripts/cleanup_orphan_tasks.sh
绝尘 04032a2a8d 重构: 文档汇总+进度看板+孤儿任务清理脚本+gitignore 噪音排除
- docs/02 架构设计: 新增 aichat审查/异步审批构想/流式渲染调研/generating状态机/密钥迁移健壮性/工作流脚本执行边界/条件表达式引擎/F-07 trait下沉/Agent架构说明/任务推进构想/功能创意池;更新功能决策记录+归档/对抗论证/文档记录规范/经验记录
- docs/03 模块文档: 新增 AI对话引擎/DAG引擎详解;更新 df-knowledge/df-nodes/df-storage/df-workflow/df-ai
- docs/05 代码审查: 新增 全栈审查/全局review/架构审查/近期改动审查/工作区多角度走查/自研memo流式渲染审查
- docs/09 问题排查: 新增 aichat-apikey-401
- docs/INDEX+README 索引同步;docs/todo 待办看板(2026-06-15 汇总)
- PROGRESS.md Sprint 22-25;URGENT.md 加急清单快照(5 项 P0 已全修)
- scripts/cleanup_orphan_tasks.{py,sh} 孤儿任务清理工具
- .gitignore 补 *.broken.bak + tmp/ 噪音排除
2026-06-15 05:14:21 +08:00

76 lines
1.9 KiB
Bash
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/usr/bin/env bash
# 清理孤儿任务 — 删除不属于任何现有项目的任务记录
# 用法bash scripts/cleanup_orphan_tasks.sh
#
# 数据库路径Windows %APPDATA%/top.1216.devflow/devflow-dev.db (dev) 或 devflow.db (release)
set -euo pipefail
# 自动定位数据库文件
DB_PATH="${1:-}"
if [ -z "$DB_PATH" ]; then
# 尝试常见路径
for candidate in \
"$APPDATA/top.1216.devflow/devflow-dev.db" \
"$LOCALAPPDATA/top.1216.devflow/devflow-dev.db" \
"$HOME/AppData/Roaming/top.1216.devflow/devflow-dev.db"; do
if [ -f "$candidate" ]; then
DB_PATH="$candidate"
break
fi
done
fi
if [ -z "$DB_PATH" ] || [ ! -f "$DB_PATH" ]; then
echo "❌ 未找到数据库文件,请手动指定路径:"
echo " bash scripts/cleanup_orphan_tasks.sh <db_path>"
echo ""
echo " 通常位于: %APPDATA%\\top.1216.devflow\\devflow-dev.db"
exit 1
fi
echo "📍 数据库: $DB_PATH"
echo ""
# 先查看孤儿任务
echo "=== 孤儿任务列表project_id 不在 projects 表中)==="
sqlite3 "$DB_PATH" "
SELECT t.id, t.title, t.project_id
FROM tasks t
LEFT JOIN projects p ON t.project_id = p.id
WHERE p.id IS NULL
ORDER BY t.project_id, t.created_at;
"
echo ""
# 统计数量
COUNT=$(sqlite3 "$DB_PATH" "
SELECT COUNT(*)
FROM tasks t
LEFT JOIN projects p ON t.project_id = p.id
WHERE p.id IS NULL;
")
echo "📊 孤儿任务总数: $COUNT"
echo ""
if [ "$COUNT" -eq 0 ]; then
echo "✅ 无孤儿任务,无需清理。"
exit 0
fi
read -p "确认删除以上 $COUNT 条孤儿任务?(y/N) " confirm
if [ "$confirm" != "y" ] && [ "$confirm" != "Y" ]; then
echo "已取消。"
exit 0
fi
# 执行删除
sqlite3 "$DB_PATH" "
DELETE FROM tasks
WHERE project_id NOT IN (SELECT id FROM projects);
"
echo "✅ 已删除 $COUNT 条孤儿任务。"