cloud370 3162cbfad0 feat: add export functionality for web API with demo script
- Add export API endpoint POST /web/v1/accounts/export
- Support two export modes: text (data strings) and object (full account objects)
- Automatically set account status to 'exported' during export
- Add comprehensive demo script that uploads, exports and verifies functionality
- Update API documentation with export endpoint details
- Add TypeScript types for export functionality

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-23 11:32:23 +08:00

Accounts Manager

轻量化账号管理平台 - 专为自动化脚本和Web管理设计的高性能账号管理系统

概述

Accounts Manager 是一个基于 TypeScript 和 Fastify 构建的轻量级账号管理平台,采用单表设计理念,为自动化脚本和管理后台提供独立优化的 API 接口。系统支持账号的获取、锁定、状态更新、批量管理等功能,并提供完善的统计分析能力。

核心特性

  • 🚀 高性能: 基于 Fastify 框架,提供极快的 API 响应速度
  • 🔒 并发安全: 支持账号锁定机制,防止并发获取同一账号
  • 📊 统计分析: 提供详细的账号使用统计和概览数据
  • 🔄 自动化: 支持后台任务自动清理超时锁定
  • 🎯 双API设计: 为脚本和Web端提供专门优化的API接口
  • 💾 简化设计: 单表架构,降低系统复杂性
  • 🛡️ 类型安全: 完整的 TypeScript 支持和 Zod 数据校验

技术栈

  • 运行时: Node.js (v18+)
  • 语言: TypeScript
  • Web框架: Fastify
  • 数据库: PostgreSQL (v14+)
  • ORM: Drizzle ORM
  • 数据校验: Zod

快速开始

1. 安装依赖

npm install

2. 配置环境变量

复制环境变量模板并配置:

cp .env.example .env

编辑 .env 文件配置数据库连接:

DATABASE_URL=postgresql://username:password@localhost:5432/accounts_db
PORT=3000
NODE_ENV=development
LOCK_TIMEOUT_MINUTES=5

3. 数据库设置

初始化数据库:

# 创建数据库(如果不存在)
npm run db:create

# 生成迁移文件
npm run db:generate

# 运行迁移
npm run db:migrate

# 或者一键设置(创建+迁移)
npm run db:setup

4. 启动服务

开发模式:

npm run dev

生产模式:

npm run build
npm start

API 文档

脚本专用 API

Base URL: /s/v1/{ownerId}

1. 获取账号

  • GET /s/v1/{ownerId}/acquire?platform={platform}&count={count}
  • 获取可用账号并锁定

2. 更新账号状态

  • GET /s/v1/{ownerId}/update/{accountId}/{newStatus}?notes={notes}
  • 更新指定账号状态

3. 上传账号

  • POST /s/v1/{ownerId}/upload
  • 批量创建或更新账号

前端管理 API

Base URL: /web/v1

1. 获取账号列表

  • POST /web/v1/accounts/list
  • 支持复杂查询、分页、排序

2. 批量删除账号

  • POST /web/v1/accounts/delete-batch

3. 批量更新账号

  • POST /web/v1/accounts/update-batch

4. 统计概览

  • GET /web/v1/stats/overview

健康检查

  • GET /health

数据库命令

# 生成迁移文件
npm run db:generate

# 运行迁移
npm run db:migrate

# 打开数据库管理界面
npm run db:studio

项目结构

src/
├── api/v1/             # API 路由
│   ├── script/         # 脚本专用API
│   │   └── actions.ts  # 获取、更新、上传账号
│   └── web/            # Web管理API
│       ├── accounts.ts # 账号CRUD操作
│       └── stats.ts    # 统计数据
├── core/               # 核心业务逻辑
│   └── AccountService.ts # 账号服务
├── db/                 # 数据库相关
│   ├── index.ts        # 数据库连接
│   └── schema.ts       # 表结构定义
├── jobs/               # 后台任务
│   └── staleLockCleanup.ts # 锁定清理任务
├── lib/                # 工具库
│   └── apiResponse.ts  # 统一响应格式
├── types/              # 类型定义
│   ├── api.ts          # API类型
│   └── index.ts        # 核心类型
├── scripts/            # 脚本工具
│   └── createDatabase.ts # 数据库创建
├── config.ts           # 应用配置
└── index.ts            # 应用入口

核心功能

账号管理

  • 自动锁定: 防止并发访问同一账号
  • 状态追踪: 支持自定义账号状态管理
  • 批量操作: 支持批量创建、更新、删除账号
  • 智能清理: 自动释放超时锁定的账号

API 接口

  • 脚本API: 专为自动化脚本优化的轻量级接口
  • 管理API: 功能完整的Web管理界面API
  • 统一响应: 标准化的API响应格式
  • 类型安全: 完整的TypeScript类型定义

数据统计

  • 实时概览: 账号总数、平台分布、状态统计
  • 详细分析: 多维度数据统计和分析
  • 可视化友好: 支持前端图表展示

详细文档

Description
No description provided
Readme 90 KiB
Languages
TypeScript 58.7%
JavaScript 41.3%