# 多账号目录管理方案

## 目录结构

```
data/
├── 账号/
│   ├── 阿里多多酱/                        # 账号目录
│   │   ├── what解构/                      # 当前帖子what解构（原始数据，不动）
│   │   ├── what解构_所有帖子/             # 过去帖子what解构（原始数据，不动）
│   │   ├── pattern/                       # pattern聚合结果（原始数据，不动）
│   │   │   └── cluster/
│   │   │       └── clustered_data.json
│   │   └── how解构/                       # 新增：所有输出结果
│   │       ├── intermediate/              # 中间结果
│   │       │   ├── 特征名称_分类映射.json
│   │       │   ├── 分类层级映射.json
│   │       │   ├── 特征名称_帖子来源.json
│   │       │   └── 当前帖子_解构任务列表.json
│   │       ├── results/                   # how解构最终结果
│   │       │   └── *_how.json
│   │       └── visualization/             # 可视化结果
│   │           └── how解构结果_可视化.html
│   │
│   └── 其他账号名/                        # 其他账号，结构相同
│       └── ...
│
└── config/
    └── accounts.json                      # 账号配置文件
```

## 核心设计原则

1. **原始数据目录不动**：`what解构/`、`what解构_所有帖子/`、`pattern/` 保持原样
2. **输出统一管理**：所有输出结果放到新增的 `how解构/` 目录下
3. **账号隔离**：每个账号独立目录，互不影响
4. **配置驱动**：通过配置文件管理路径，支持批量处理

## 使用方式

### 1. 配置账号

编辑 `config/accounts.json`：

```json
{
  "accounts": [
    {
      "name": "阿里多多酱",
      "enabled": true,
      "description": "第一个测试账号"
    },
    {
      "name": "新账号名",
      "enabled": true,
      "description": "新增账号"
    }
  ],
  "default_account": "阿里多多酱"
}
```

### 2. 准备数据

确保账号目录下有以下原始数据：
- `what解构/` - 当前帖子解构结果
- `what解构_所有帖子/` - 过去帖子解构结果
- `pattern/cluster/clustered_data.json` - pattern聚合结果

### 3. 运行处理脚本

#### 方式一：处理单个账号

```bash
# 指定账号名
./script/data_processing/run_all_with_config.sh 阿里多多酱

# 或使用环境变量
ACCOUNT_NAME=阿里多多酱 ./script/data_processing/run_all_with_config.sh
```

#### 方式二：批量处理所有启用的账号

```bash
./script/data_processing/run_all_with_config.sh --all
```

### 4. 查看结果

处理完成后，结果在 `data/账号/<账号名>/how解构/` 目录下：
- `intermediate/` - 中间结果文件
- `results/` - how解构结果
- `visualization/` - 可视化HTML文件

## Python脚本中使用

所有Python脚本都应该使用 `PathConfig` 类来管理路径：

```python
from 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()
```

## 路径配置说明

`PathConfig` 类提供的主要属性：

### 输入路径
- `current_posts_dir` - 当前帖子目录
- `historical_posts_dir` - 过去帖子目录
- `pattern_cluster_file` - pattern聚合文件

### 输出路径
- `intermediate_dir` - 中间结果目录
- `feature_category_mapping_file` - 特征分类映射文件
- `category_hierarchy_file` - 分类层级映射文件
- `feature_source_mapping_file` - 特征来源映射文件
- `task_list_file` - 任务列表文件
- `how_results_dir` - how解构结果目录
- `visualization_dir` - 可视化目录
- `visualization_file` - 可视化HTML文件

## 优势

1. **原始数据安全**：不修改原始数据目录，只新增输出目录
2. **易于扩展**：添加新账号只需创建目录和添加配置
3. **批量处理**：支持一键处理所有账号
4. **配置灵活**：通过配置文件轻松调整路径结构
5. **代码复用**：所有脚本使用统一的路径管理类

## 注意事项

1. 新增账号时，确保账号目录下有完整的原始数据
2. 运行脚本前会自动验证输入路径是否存在
3. 输出目录会自动创建，无需手动创建
4. 可以通过环境变量 `ACCOUNT_NAME` 指定账号，方便在CI/CD中使用
