Files
accounts-manager-web/lib/types.ts
Your Name 0b95ca36f1 Initial project setup with Next.js accounts manager
- Set up Next.js project structure
- Added UI components and styling
- Configured package dependencies
- Added feature documentation

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-23 01:40:14 +08:00

101 lines
1.9 KiB
TypeScript

// 业务状态码
export enum BusinessCode {
Success = 0,
NoResource = 1001,
InvalidParams = 2001,
ResourceConflict = 3001,
PermissionDenied = 4001,
BusinessError = 5001,
}
// 通用响应格式
export interface ApiResponse<T> {
code: BusinessCode;
message: string;
data: T | null;
}
// 账户类型
export interface Account {
id: number;
ownerId: string;
platform: string;
customId: string;
data: string;
status: string;
notes?: string;
lockedAt?: Date | null;
createdAt: Date;
updatedAt: Date;
}
// 分页结果
export interface PaginationResult {
page: number;
pageSize: number;
total: number;
totalPages: number;
}
// 脚本获取响应
export type ScriptAcquireResponse = Pick<Account, 'id' | 'customId' | 'data'>[];
// 脚本上传项
export interface ScriptUploadItem {
platform: string;
customId: string;
data: string;
status?: string;
}
// 账户列表筛选条件
export interface ListAccountsFilters {
platform?: string;
status?: string[];
ownerId?: string;
search?: string;
}
// 账户列表请求体
export interface ListAccountsBody {
filters: ListAccountsFilters;
pagination: {
page: number;
pageSize: number;
};
sort: {
field: keyof Account;
order: 'asc' | 'desc';
};
}
// 账户列表响应
export interface ListAccountsResponse {
list: Account[];
pagination: PaginationResult;
}
// 批量删除请求体
export interface BatchDeleteBody {
ids: number[];
}
// 批量更新请求体
export interface BatchUpdateBody {
ids: number[];
payload: Partial<Pick<Account, 'status' | 'ownerId' | 'notes' | 'platform'>>;
}
// 统计概览
export interface StatsOverview {
totalAccounts: number;
platformSummary: Record<string, number>;
ownerSummary: Record<string, number>;
statusSummary: Record<string, number>;
detailedBreakdown: {
platform: string;
ownerId: string;
status: string;
count: number;
}[];
}