Files

146 lines
6.0 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 临时产物清理规范
当创建临时文件、测试文件、浏览器产物、缓存文件、中间产物或 case 目录时,使用本文件约束清理行为。
## 总原则
- **测试完成立即清理**:每次脚本测试、功能验证、浏览器取证小步骤完成后,第一时间清理本步骤产生的测试文件、临时文件、缓存文件、中间产物和空目录,不要等整个项目结束。
- **产物先沉淀再删除**:删除前先把有价值结论写入 `notes/`、`result/` 或最终报告;确认无价值的原始临时文件再清理。
- **临时内容集中存放**:测试文件必须放入系统临时目录或 `case/tmp/` / `case/.tmp/` / `case/cache/` 等可清理目录;不要把 throwaway 文件散落在项目根目录。
- **脚本测试使用 finally**:编写测试命令时使用 `try/finally` 或等价逻辑,确保失败时也删除临时目录。
- **每次交付前复查**:最终回复用户前,必须执行一次清理 dry-run 或说明未执行原因;若 dry-run 发现普通临时产物,应立即 `--force` 清理并再次 dry-run。最终交付还必须运行 `check_env_realism.js` 和 `check_final_artifact.js`,确认补环境真实性 / RuyiTrace 证据完整,且 `result/` 是规范项目目录、只有一个执行入口、没有多余测试文件、临时文件或自动化代码。
- **敏感材料例外**:登录态 Profile、Cookie、localStorage、IndexedDB、Authorization 等敏感材料不自动删除或交付;删除前必须确认用户意图。
## 目录约定
建议 case 结构:
```text
case/
├── js/
│ ├── original/
│ ├── pretty/
│ └── extracted/
├── requests/
├── fixtures/
├── notes/
└── tmp/
```
默认 `tmp/`、`.tmp/`、`temp/`、`.temp/`、`cache/`、`.cache/`、`browser-temp/`、`downloads/failed/`、`__pycache__/`、`.pytest_cache/` 等都是可清理目录。最终产物应尽量简洁,只保留必要内容。
最终 `result/` 目录应是规范项目目录,可以包含必要源码模块和配置模板,但只能有一个执行入口:
```text
result/
├── final.js
├── package.json
├── config.example.json
└── src/
```
或用户明确选择 Python 请求客户端时:
```text
result/
├── final.py
├── requirements.txt
├── config.example.json
└── src/
```
不要把临时 runner、测试脚本、trace、HAR、hook、截图、浏览器 Profile、`server.js`、`bridge.py` 留在最终交付目录。`env`、`signer`、`request` 等代码可以作为 `src/` 下的被调用模块保留,但不得成为第二执行入口。
## 应清理的临时文件
| 类型 | 清理时机 |
|---|---|
| 测试用输入 / 输出文件 | 单个测试命令完成后立即清理 |
| 失败的 JS 下载文件 | JS 文件收集阶段结束后立即清理 |
| 临时格式化文件 | 正式 pretty 文件生成后立即清理 |
| hook 脚本 / 指纹采样 Hook | 调用栈或指纹终端 API 返回值确认并沉淀到 notes / fixtures 后立即清理 |
| 临时 trace / JSONL / 调试日志 | 关键结论写入 notes 后立即清理 |
| 临时 runner / scratch 脚本 | 正式 runner 生成或测试完成后立即清理 |
| 重复样本副本 | fixtures 整理完成后立即清理 |
| cache / `.cache` / `__pycache__` / `.pytest_cache` | 对应测试或脚本执行后立即清理 |
| 空文件 / 空目录 | 每个测试或阶段结束时立即清理 |
| 无登录态浏览器 Profile | 浏览器取证阶段结束后清理 |
## 敏感文件
以下文件按敏感材料处理:
- 包含登录态的浏览器 Profile。
- Cookie / localStorage / sessionStorage 导出。
- Authorization 请求头。
- 含真实 Cookie 或账号标识的 HAR。
- 包含隐私账号信息的截图。
默认不要把这些内容放入最终交付物,除非用户明确要求。优先做脱敏处理。
## 清理检查表
```markdown
## 清理检查
- [ ] 本次测试是否使用系统临时目录或 `case/tmp/`?
- [ ] 单个测试完成后是否立即清理测试文件?
- [ ] 是否删除临时失败下载文件?
- [ ] 是否删除临时 hook 脚本?
- [ ] 是否删除指纹采样 Hook,且只保留必要 fingerprint fixture?
- [ ] 是否删除无用日志?
- [ ] 是否删除缓存目录和中间产物?
- [ ] 是否删除空目录?
- [ ] 是否只保留必要请求样本?
- [ ] 是否只保留必要 JS 文件?
- [ ] 是否已将关键结论写入 notes?
- [ ] 是否确认登录态 Profile 的处理方式?
- [ ] 是否避免 Cookie / token 明文进入最终报告?
- [ ] `result/` 是否是规范项目目录,且只有 `final.js` 或 `final.py` 一个执行入口?
- [ ] 最终项目所有源码是否不包含 ruyiPage / Playwright / Puppeteer / Selenium / CloakBrowser 等自动化代码?
- [ ] 最终请求是否由 Node.js / Python HTTP 客户端实现?
- [ ] 是否已运行 `check_env_realism.js` 检查补环境真实性和 RuyiTrace 证据?
- [ ] 是否已运行 `check_final_artifact.js`?
- [ ] 最终回复前是否重新运行 dry-run 确认无普通临时产物残留?
```
## 脚本用法
先预览:
```bash
node scripts/clean_case.js --case-dir case --dry-run --markdown
```
清理普通临时文件:
```bash
node scripts/clean_case.js --case-dir case --force --markdown
```
只有用户明确确认后,才删除 Profile:
```bash
node scripts/clean_case.js --case-dir case --force --include-profiles --markdown
```
清理后复查:
```bash
node scripts/clean_case.js --case-dir case --dry-run --json
```
期望 `remainingTempLike` 为空;如果不为空,说明仍有普通临时 / 缓存 / 中间产物残留,需要继续处理。
补环境真实性复查:
```bash
node scripts/check_env_realism.js --case-dir case --markdown
```
最终产物复查:
```bash
node scripts/check_final_artifact.js --case-dir case --markdown
```