diff --git a/README.md b/README.md new file mode 100644 index 0000000..cd1606a --- /dev/null +++ b/README.md @@ -0,0 +1,85 @@ +# order-bak + +订单备份 CLI 工具。从 Azure Table 扫描订单数据,按时间范围备份到 CSV,并支持从生产表中删除已备份记录。 + +## 安装 + +```bash +uv tool install . +``` + +## 配置 + +创建 `~/.config/order-bak/config.toml`: + +```toml +[azure] +connection_string = "DefaultEndpointsProtocol=..." + +[scan] +page_size = 500 # 每页行数 +delay_ms = 200 # 页间延迟 (ms) +scan_dir = "./scan" + +[delete] +batch_size = 100 # 每批删除行数 +delay_ms = 300 # 批间延迟 (ms) +``` + +仅 `[azure]` 为必填项,其余有默认值。 + +## 使用 + +### 1. 扫描全表 + +```bash +order-bak scan +``` + +全量扫描 `order` 表,结果保存到 `scan/scan-.csv`。 + +### 2. 按日期备份 + +```bash +order-bak backup --start 2025-01-01 --end 2025-06-30 +``` + +从最新的 scan CSV 中筛选 `state == Recived` 且 `OrderTime` 在 `[start, end)` 范围内的订单,按日期生成独立 CSV 到 `backups/` 目录。 + +可选指定 scan 文件:`--scan scan/scan-2025-01-01.csv` + +### 3. 删除已备份记录 + +```bash +order-bak delete --csv backups/2025-01-01.csv +``` + +读取 CSV 中的记录,按分区分批从 Azure Table 中删除。执行前需确认。 + +## 目录结构 + +``` +scan/ +└── scan-2025-06-01.csv # 全表扫描结果 + +backups/ +├── 2025-01-01.csv # 按日期的备份 +├── 2025-01-02.csv +└── ... +``` + +## 开发 + +```bash +# 安装依赖 +uv sync --group dev + +# 单元测试 +uv run pytest tests/ -v -m "not integration" + +# 集成测试(需要 Azure Storage Emulator) +uv run pytest tests/test_integration.py -v + +# 初始化测试数据 +uv run python scripts/seed_test_data.py +```