# 模拟数据脚本 本目录包含用于生成和管理 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