feat: 生成脚本
This commit is contained in:
122
scripts/README.md
Normal file
122
scripts/README.md
Normal file
@@ -0,0 +1,122 @@
|
||||
# 模拟数据脚本
|
||||
|
||||
本目录包含用于生成和管理 OpenClaw Market 模拟数据的脚本。
|
||||
|
||||
## 快速开始
|
||||
|
||||
```bash
|
||||
# 一键生成模拟数据(清理 + 生成 + 同步 Redis)
|
||||
pnpm seed:mock
|
||||
```
|
||||
|
||||
## 单独脚本
|
||||
|
||||
### 1. 清理数据 (`clear-mock-data.ts`)
|
||||
|
||||
清理所有模拟数据,包括:
|
||||
- MySQL 数据库中的 claws、heartbeats、tasks、token_usage、geo_cache 表
|
||||
- Redis 中的所有相关缓存
|
||||
|
||||
```bash
|
||||
pnpm seed:clear
|
||||
```
|
||||
|
||||
### 2. 生成模拟数据 (`generate-mock-data.ts`)
|
||||
|
||||
生成约 240 只模拟龙虾,特点:
|
||||
- **地区分布**:按真实 AI 使用情况分配
|
||||
- Americas: 35%
|
||||
- Asia: 30%
|
||||
- Europe: 28%
|
||||
- Oceania: 5%
|
||||
- Africa: 2%
|
||||
- **名字生成**:形容词 + 名词 + 后缀(如 `SwiftCoderPrime`)
|
||||
- **平台分布**:claude-code (40%), cursor (25%), copilot (15%) 等
|
||||
- **模型分布**:claude-sonnet-4-6 (35%), claude-haiku-4-5 (20%) 等
|
||||
- **活跃程度**:
|
||||
- 重度用户 (10%):每天 50-500 万 tokens
|
||||
- 中度用户 (30%):每天 10-50 万 tokens
|
||||
- 轻度用户 (40%):每天 2-10 万 tokens
|
||||
- 极少用户 (20%):每天 1千-2 万 tokens
|
||||
- **注册时间**:过去 7 天内随机分布
|
||||
|
||||
```bash
|
||||
pnpm seed:generate
|
||||
```
|
||||
|
||||
### 3. 同步 Redis 统计 (`sync-redis-stats.ts`)
|
||||
|
||||
根据数据库数据初始化 Redis 统计:
|
||||
- 全局统计(总虾数、总任务数、总 tokens)
|
||||
- 地区统计
|
||||
- 活跃 claws
|
||||
- 每小时活动数据
|
||||
|
||||
```bash
|
||||
pnpm seed:sync
|
||||
```
|
||||
|
||||
### 4. 模拟实时活动 (`simulate-live-activity.ts`)
|
||||
|
||||
持续模拟心跳、任务和 token 上报,让数据看起来是"活"的。
|
||||
|
||||
```bash
|
||||
pnpm seed:live
|
||||
```
|
||||
|
||||
按 `Ctrl+C` 停止。
|
||||
|
||||
## 数据结构
|
||||
|
||||
### Claws 表字段
|
||||
| 字段 | 说明 |
|
||||
|------|------|
|
||||
| id | 唯一标识 (nanoid) |
|
||||
| apiKey | API 密钥 |
|
||||
| name | 龙虾名称 |
|
||||
| platform | 平台 (claude-code, cursor 等) |
|
||||
| model | 模型 (claude-sonnet-4-6 等) |
|
||||
| latitude/longitude | 地理坐标 |
|
||||
| city/country/countryCode | 地理位置 |
|
||||
| region | 大洲 |
|
||||
| lastHeartbeat | 最后心跳时间 |
|
||||
| totalTasks | 总任务数 |
|
||||
| createdAt | 注册时间 |
|
||||
|
||||
### 关联数据
|
||||
- **heartbeats**: 心跳记录
|
||||
- **tasks**: 任务记录(摘要、时长、工具)
|
||||
- **token_usage**: Token 使用记录(按天)
|
||||
|
||||
## 环境要求
|
||||
|
||||
运行脚本前需要配置:
|
||||
|
||||
```bash
|
||||
# .env
|
||||
DATABASE_URL=mysql://user:password@host:3306/database
|
||||
REDIS_URL=redis://host:6379
|
||||
```
|
||||
|
||||
## 自定义配置
|
||||
|
||||
如需调整生成参数,编辑 `generate-mock-data.ts` 顶部的配置:
|
||||
|
||||
```typescript
|
||||
const TOTAL_CLAWS = 240; // 总虾数
|
||||
const DAYS_BACK = 7; // 注册时间范围(天)
|
||||
|
||||
const REGION_DISTRIBUTION = [ // 地区分布权重
|
||||
{ region: "Americas", weight: 35, countries: [...] },
|
||||
// ...
|
||||
];
|
||||
```
|
||||
|
||||
## 数据量参考
|
||||
|
||||
生成 240 只虾大约产生:
|
||||
- 240 条 claws 记录
|
||||
- 5,000-10,000 条 heartbeats 记录
|
||||
- 2,000-5,000 条 tasks 记录
|
||||
- 1,000-1,500 条 token_usage 记录
|
||||
- 总计约 50-200M tokens
|
||||
Reference in New Issue
Block a user