# 路径改动总结 ## 改动概述 将数据处理脚本从硬编码路径改为配置驱动的路径管理,支持多账号批量处理。 ## 核心变化 ### 1. 目录结构 **原始数据目录保持不变**,只新增 `how解构/` 输出目录: ``` data/账号/阿里多多酱/ ├── what解构/ # 原始数据(不动) ├── what解构_所有帖子/ # 原始数据(不动) ├── pattern/ # 原始数据(不动) │ └── cluster/ │ └── clustered_data.json └── how解构/ # 新增:所有输出结果 ├── intermediate/ # 中间结果 │ ├── 特征名称_分类映射.json │ ├── 分类层级映射.json │ ├── 特征名称_帖子来源.json │ └── 当前帖子_解构任务列表.json ├── results/ # how解构最终结果 │ └── *_how.json └── visualization/ # 可视化结果 └── how解构结果_可视化.html ``` ### 2. 路径对照表 | 文件类型 | 旧路径 | 新路径 | |---------|--------|--------| | pattern聚合结果 | `data/data_1118/过去帖子_pattern聚合结果.json` | `data/账号/阿里多多酱/pattern/cluster/clustered_data.json` | | 当前帖子what解构 | `data/data_1118/当前帖子_what解构结果/` | `data/账号/阿里多多酱/what解构/` | | 过去帖子what解构 | `data/data_1118/过去帖子_what解构结果/` | `data/账号/阿里多多酱/what解构_所有帖子/` | | 特征分类映射 | `data/data_1118/特征名称_分类映射.json` | `data/账号/阿里多多酱/how解构/intermediate/特征名称_分类映射.json` | | 分类层级映射 | `data/data_1118/分类层级映射.json` | `data/账号/阿里多多酱/how解构/intermediate/分类层级映射.json` | | 特征帖子来源 | `data/data_1118/特征名称_帖子来源.json` | `data/账号/阿里多多酱/how解构/intermediate/特征名称_帖子来源.json` | | 解构任务列表 | `data/data_1118/当前帖子_解构任务列表.json` | `data/账号/阿里多多酱/how解构/intermediate/当前帖子_解构任务列表.json` | | how解构结果 | `data/data_1118/当前帖子_how解构结果/` | `data/账号/阿里多多酱/how解构/results/` | | 可视化结果 | `data/data_1118/当前帖子_how解构结果_可视化.html` | `data/账号/阿里多多酱/how解构/visualization/how解构结果_可视化.html` | ## 修改的文件 ### 新增文件 1. **`config/accounts.json`** - 账号配置文件 2. **`script/data_processing/path_config.py`** - 路径配置管理类 3. **`script/data_processing/run_all_with_config.sh`** - 支持多账号的运行脚本 4. **`script/data_processing/migrate_data_structure.sh`** - 数据迁移脚本(已不需要) ### 修改的文件 1. **`script/data_processing/extract_feature_categories.py`** - 添加 `from script.data_processing.path_config import PathConfig` - 使用 `PathConfig` 替代硬编码路径 2. **`script/data_processing/extract_features_from_posts.py`** - 添加 `from script.data_processing.path_config import PathConfig` - 使用 `PathConfig` 替代硬编码路径 3. **`script/data_processing/extract_current_posts.py`** - 添加 `from script.data_processing.path_config import PathConfig` - 使用 `PathConfig` 替代硬编码路径 4. **`script/data_processing/match_inspiration_features.py`** - 添加 `from script.data_processing.path_config import PathConfig` - 使用 `PathConfig` 替代硬编码路径 5. **`script/data_processing/visualize_how_results.py`** - 添加 `from script.data_processing.path_config import PathConfig` - 修改 `load_feature_category_mapping()` 和 `load_feature_source_mapping()` 函数接受 `PathConfig` 参数 - 使用 `PathConfig` 替代硬编码路径 6. **`script/data_processing/run_all.sh`** (旧版本,已更新路径但建议使用新版本) - 更新所有 echo 输出中的路径描述 ## 使用方式 ### 单账号处理 ```bash # 方式1:命令行参数 ./script/data_processing/run_all_with_config.sh 阿里多多酱 # 方式2:环境变量 ACCOUNT_NAME=阿里多多酱 ./script/data_processing/run_all_with_config.sh # 方式3:使用默认账号(配置文件中的 default_account) ./script/data_processing/run_all_with_config.sh ``` ### 批量处理多个账号 ```bash # 处理所有在配置文件中启用的账号 ./script/data_processing/run_all_with_config.sh --all ``` ### Python脚本中使用 ```python from script.data_processing.path_config import PathConfig # 获取路径配置 config = PathConfig() # 使用默认账号 # 或 config = PathConfig(account_name="阿里多多酱") # 使用路径 input_file = config.pattern_cluster_file output_file = config.feature_category_mapping_file # 确保输出目录存在 config.ensure_dirs() # 读写文件 with open(input_file, 'r') as f: data = json.load(f) with open(output_file, 'w') as f: json.dump(result, f) ``` ## 添加新账号 1. 创建账号目录和原始数据: ```bash mkdir -p "data/账号/新账号名/what解构" mkdir -p "data/账号/新账号名/what解构_所有帖子" mkdir -p "data/账号/新账号名/pattern/cluster" # 放入原始数据... ``` 2. 在 `config/accounts.json` 中添加配置: ```json { "name": "新账号名", "enabled": true, "description": "新账号描述" } ``` 3. 运行处理脚本: ```bash ./script/data_processing/run_all_with_config.sh 新账号名 ``` ## 迁移说明 从旧版本迁移到新版本: 1. **数据无需迁移**:原始数据路径保持不变 2. **删除旧输出**:可以删除 `data/data_1118/` 下的中间结果和输出文件 3. **使用新脚本**:用 `run_all_with_config.sh` 替代 `run_all.sh` ## 优势 1. ✅ **原始数据安全**:不修改原始数据目录结构 2. ✅ **输出结构清晰**:所有输出集中在 `how解构/` 目录 3. ✅ **支持多账号**:轻松管理和批量处理多个账号 4. ✅ **配置驱动**:通过配置文件灵活调整路径 5. ✅ **易于维护**:统一的路径管理,避免硬编码 6. ✅ **向后兼容**:旧的 `run_all.sh` 仍可使用(路径已更新) ## 验证 验证配置是否正确: ```bash # 查看路径配置 python script/data_processing/path_config.py 阿里多多酱 # 测试路径并创建输出目录 python -c "from script.data_processing.path_config import PathConfig; config = PathConfig('阿里多多酱'); config.check_and_print_status(); config.ensure_dirs()" ``` ## 注意事项 1. 运行脚本前确保账号目录下有完整的原始数据 2. 首次运行时会自动创建 `how解构/` 目录及子目录 3. 可通过环境变量 `ACCOUNT_NAME` 指定账号,方便CI/CD集成 4. 批量处理时,某个账号失败不会影响其他账号的处理