迁移完成总结.md 7.4 KB

数据目录迁移完成总结

✅ 已完成的工作

1. 数据目录迁移

  • ✅ 将 how_1124_v1/data 移动到 /Users/semsevens/Desktop/workspace/daily/1113/data
  • ✅ 更新配置文件 config/accounts.json,设置 data_root: "../data"
  • ✅ 验证配置正确,所有输入路径验证通过

2. 代码功能增强

  • ✅ 支持数据根目录配置(环境变量 > 配置文件 > 默认值)
  • ✅ 自动使用项目目录名作为输出版本(how_1124_v1
  • ✅ 输出路径支持版本变量 {version}
  • ✅ 增强调试信息(显示项目名称、数据根目录、输出版本)

3. 文档完善

  • ✅ 创建《数据目录配置说明.md》
  • ✅ 创建《其他项目迁移指南.md》
  • ✅ 创建《迁移完成总结.md》

📊 当前目录结构

/Users/semsevens/Desktop/workspace/daily/1113/
├── data/                               ← 共享数据目录(新)
│   ├── .DS_Store
│   ├── 1、匹配人设标签.md
│   ├── data_1117/
│   ├── data_1118/
│   ├── data_1121/
│   ├── 阿里多多酱/
│   └── 账号/
│       └── 阿里多多酱1/
│           ├── what单独解构/                      ← 输入:当前帖子
│           ├── 用于pattern聚类/                   ← 输入:历史帖子
│           ├── pattern相关文件/                   ← 输入:pattern聚合
│           └── how解构_outputs/                   ← 输出(版本化)
│               └── how_1124_v1/                  ← 当前项目输出
│                   ├── intermediate/
│                   ├── results/
│                   └── visualization/
│
├── how_1124_v1/                       ← 当前项目(已完成迁移)
│   ├── config/
│   │   └── accounts.json             ← data_root: "../data"
│   ├── script/
│   │   └── data_processing/
│   │       └── path_config.py        ← 支持版本化输出
│   └── docs/
│       ├── 数据目录配置说明.md
│       ├── 其他项目迁移指南.md
│       └── 迁移完成总结.md
│
├── how_1121_v2/                       ← 待迁移
├── how_1121_v1/                       ← 待迁移
├── how_1120_v3/                       ← 待迁移
└── ...其他项目/                        ← 待迁移

🎯 核心优势

1. 数据共享

  • 所有 how_* 项目共享同一份输入数据
  • 节省磁盘空间
  • 数据更新一次,所有项目受益

2. 版本隔离

  • 每个项目的输出自动保存到独立的版本目录
  • 项目名称即版本名称(how_1124_v1
  • 不同版本互不干扰

3. 便于对比

  • 可以轻松查看和对比不同版本的输出
  • 所有历史版本的输出都保留在同一位置

4. 灵活配置

  • 支持环境变量覆盖
  • 支持相对路径和绝对路径
  • 向后兼容(默认使用项目内 data)

🚀 快速使用

当前项目

cd /Users/semsevens/Desktop/workspace/daily/1113/how_1124_v1

# 运行数据处理(自动使用共享数据)
./script/data_processing/run_all_with_config.sh 阿里多多酱1

# 输出位置
# ../data/账号/阿里多多酱1/how解构_outputs/how_1124_v1/

查看输出

# 查看所有版本
ls ../data/账号/阿里多多酱1/how解构_outputs/

# 打开可视化
open ../data/账号/阿里多多酱1/how解构_outputs/how_1124_v1/visualization/how解构结果_可视化.html

验证配置

python script/data_processing/path_config.py

📋 下一步建议

1. 迁移其他活跃项目(可选)

如果其他项目(如 how_1121_v2)仍在使用,可以按照《其他项目迁移指南.md》迁移它们。

# 快速迁移单个项目
cd ../how_1121_v2
rm -rf data  # 如果有
cp ../how_1124_v1/config/accounts.json config/accounts.json
cp ../how_1124_v1/script/data_processing/path_config.py script/data_processing/path_config.py
python script/data_processing/path_config.py  # 验证

2. 清理旧项目(建议)

对于不再使用的旧项目,可以考虑删除:

cd /Users/semsevens/Desktop/workspace/daily/1113

# 检查是否有需要保留的数据
ls -la how_1113_v1/data  # 如果有独特数据,先备份

# 删除旧项目
rm -rf how_1113_v1
rm -rf how_1113_v2
rm -rf how_1117_v1
# ...

建议保留

  • how_1124_v1(当前最新)
  • how_1121_v2(次新版本,作为参考)
  • how_1120_v3(稳定版本,作为备份)

3. 创建新项目的最佳实践

下次创建新项目时:

# 1. 复制最新项目
cp -r how_1124_v1 how_1125_v1

# 2. 清理(git会自动忽略data)
cd how_1125_v1
git init  # 如果需要
# 配置已经正确(data_root: "../data"),无需修改

# 3. 开始开发
# 输出会自动保存到 ../data/账号/阿里多多酱1/how解构_outputs/how_1125_v1/

4. 设置全局环境变量(可选)

如果希望将数据移到更安全的位置(如 ~/Documents),可以:

# 1. 移动数据
mv /Users/semsevens/Desktop/workspace/daily/1113/data ~/Documents/账号数据

# 2. 设置环境变量(永久)
echo 'export DATA_ROOT=~/Documents/账号数据' >> ~/.zshrc
source ~/.zshrc

# 3. 所有项目自动使用新位置
cd /Users/semsevens/Desktop/workspace/daily/1113/how_1124_v1
python script/data_processing/path_config.py  # 验证

🔍 配置优先级说明

系统会按以下优先级确定配置:

数据根目录

  1. 环境变量 DATA_ROOT(最高优先级)
  2. 配置文件 config/accounts.json 中的 data_root
  3. 默认值 项目根/data(最低优先级)

输出版本

  1. 函数参数 PathConfig(output_version="xxx")(最高优先级)
  2. 环境变量 OUTPUT_VERSION
  3. 配置文件 config/accounts.json 中的 output_version
  4. 项目根目录名称(默认,推荐)

账号名称

  1. 函数参数 PathConfig(account_name="xxx")(最高优先级)
  2. 环境变量 ACCOUNT_NAME
  3. 配置文件 config/accounts.json 中的 default_account
  4. 无默认值(必须指定)

📝 配置文件示例

当前配置(how_1124_v1/config/accounts.json)

{
  "data_root": "../data",
  "accounts": [
    {
      "name": "阿里多多酱1",
      "enabled": true,
      "description": "新目录结构"
    }
  ],
  "default_account": "阿里多多酱1",
  "filter_mode": "exclude_current_posts",
  "paths": {
    "account_base": "账号",
    "input": {
      "current_posts": "what单独解构",
      "historical_posts": "用于pattern聚类",
      "pattern_cluster": "pattern相关文件/optimization/optimized_clustered_data_gemini-3-pro-preview.json"
    },
    "output": {
      "intermediate": "how解构_outputs/{version}/intermediate",
      "how_results": "how解构_outputs/{version}/results",
      "visualization": "how解构_outputs/{version}/visualization"
    }
  }
}

✨ 总结

通过这次迁移,实现了:

  1. 代码与数据分离 - 代码在各自的项目目录,数据统一管理
  2. 版本自动识别 - 无需手动配置版本名,自动使用项目目录名
  3. 输出自动隔离 - 不同版本的输出互不干扰,便于对比
  4. 配置灵活 - 支持多种配置方式,适应不同场景
  5. 向后兼容 - 不破坏现有项目的工作方式

现在可以放心地并行开发多个版本,所有输出都会自动管理! 🎉