## ADDED Requirements ### Requirement: 根目录只包含正式项目文件 项目根目录 SHALL 不包含备份文件、一次性测试脚本、个人媒体资源或临时记录文件。具体地: - `*_backup.py` 命名的文件 SHALL 不存在于根目录 - `config copy.json`(或同类配置副本)SHALL 不存在 - `_test_*.py` 命名的一次性测试脚本 SHALL 不存在于根目录 - `*.log` 运行日志文件 SHALL 不进入版本控制(由 `.gitignore` 保证) - 个人图片(`.png`、`.jpg` 等媒体文件)SHALL 不散落在根目录,统一归入 `assets/` 下对应子目录 #### Scenario: 克隆仓库后根目录无冗余文件 - **WHEN** 开发者执行 `git clone` 并查看根目录 - **THEN** 根目录 SHALL 仅包含:`main.py`、服务模块文件(`*_service.py`、`*_client.py`、`*_manager.py`、`*_queue.py`)、标准配置(`config.example.json`、`requirements.txt`、`Dockerfile`、`docker-compose.yml`、`.gitignore`、`.dockerignore`)、自动启动脚本(`_autostart.*`)、文档(`README.md`、`CHANGELOG.md`、`CONTRIBUTING.md`、`mcp.md`) #### Scenario: 备份文件不出现在版本控制 - **WHEN** 开发者执行 `git status` 或 `git ls-files` - **THEN** 输出中 SHALL 不包含 `*_backup.py`、`config copy.json` 等备份/副本文件 ### Requirement: 媒体资源归入 assets/ 目录 项目所需的图片等媒体资源 SHALL 存放于 `assets/` 目录下的对应子目录,根据用途分类: - 换脸/头像相关图片 SHALL 放入 `assets/faces/` - `assets/faces/` SHALL 被 `.gitignore` 覆盖(不进入版本控制,属隐私数据) #### Scenario: 换脸图片存放路径符合规范 - **WHEN** 用户配置换脸头像功能 - **THEN** 头像文件 SHALL 存放于 `assets/faces/` 目录,而非项目根目录 #### Scenario: assets/faces/ 不进入版本控制 - **WHEN** 开发者执行 `git status` - **THEN** `assets/faces/` 目录下的文件 SHALL 显示为已忽略(不出现在 staged 或 unstaged 区域) ### Requirement: .gitignore 覆盖所有非版本控制内容 项目 `.gitignore` SHALL 包含以下规则类别,且每类规则 SHALL 有注释说明用途: - Python 编译产物(`__pycache__/`、`*.py[cod]`) - 虚拟环境目录(`.venv/`、`venv/`) - 敏感配置(`config.json`、`cookies.json`、`*.cookie`) - 运行日志(`*.log`、`logs/`) - 备份与副本文件(`*_backup.py`、`config copy.json`) - 个人媒体资产(`assets/faces/`) - IDE 配置(`.vscode/`、`.idea/`) - 系统文件(`.DS_Store`、`Thumbs.db`) - 工作空间输出目录(`xhs_workspace/`) #### Scenario: 新增备份文件不被 git 追踪 - **WHEN** 开发者在根目录创建 `main_v2_backup.py` - **THEN** `git status` SHALL 将其显示为已忽略文件