# 数据目录迁移完成总结 ## ✅ 已完成的工作 ### 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) ## 🚀 快速使用 ### 当前项目 ```bash 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/ ``` ### 查看输出 ```bash # 查看所有版本 ls ../data/账号/阿里多多酱1/how解构_outputs/ # 打开可视化 open ../data/账号/阿里多多酱1/how解构_outputs/how_1124_v1/visualization/how解构结果_可视化.html ``` ### 验证配置 ```bash python script/data_processing/path_config.py ``` ## 📋 下一步建议 ### 1. 迁移其他活跃项目(可选) 如果其他项目(如 `how_1121_v2`)仍在使用,可以按照《其他项目迁移指南.md》迁移它们。 ```bash # 快速迁移单个项目 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. 清理旧项目(建议) 对于不再使用的旧项目,可以考虑删除: ```bash 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. 创建新项目的最佳实践 下次创建新项目时: ```bash # 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),可以: ```bash # 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) ```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. **向后兼容** - 不破坏现有项目的工作方式 **现在可以放心地并行开发多个版本,所有输出都会自动管理!** 🎉