49 lines
1.9 KiB
TypeScript
Raw Normal View History

import { BaseEntity } from '../../base/entity/base';
import { Column, Entity, Index } from 'typeorm';
@Entity('geo_account')
export class GeoAccountEntity extends BaseEntity {
@Column({ comment: '账号昵称(用户填写)' })
name: string;
@Index()
@Column({ comment: '平台 xiaohongshu/douyin/weibo/zhihu/taobao/wechat', length: 32 })
platform: string;
@Column({ comment: '登录账号/手机号(登录后自动从浏览器抓取)', length: 128, nullable: true })
loginAccount: string;
@Index({ unique: true, where: 'session_name IS NOT NULL' })
@Column({ comment: 'netabrowser-cli sessionName唯一标识浏览器 profile', length: 128, nullable: true })
sessionName: string;
@Index()
@Column({ comment: '关联 Agent ID哪个 Agent 来执行账号管理)', nullable: true })
agentId: number;
@Column({ comment: '浏览器指纹 seedfingerprint-chromium 用,同账号每次启动指纹一致;不同账号 seed 不同→看作不同物理设备)', nullable: true })
fingerprintSeed: number;
@Column({ comment: 'cookies明文 JSON本地后台工具', type: 'text', nullable: true })
cookies: string;
@Column({ comment: 'Cookie 抓取时间', type: 'datetime', nullable: true })
cookieCapturedAt: Date;
@Column({ comment: 'Cookie 最早过期时间(关键登录 cookie 中最早失效的)', type: 'datetime', nullable: true })
cookieExpiresAt: Date;
@Column({ comment: '登录状态 never/logged_in/expired/banned/deleted', length: 16, default: 'never' })
loginStatus: string;
@Index({ unique: true, where: 'proxy_id IS NOT NULL' })
@Column({ comment: '绑定 IP', nullable: true })
proxyId: number;
@Column({ comment: '上次活跃时间', type: 'datetime', nullable: true })
lastActiveAt: Date;
@Column({ comment: '平台特定字段', type: 'json', nullable: true })
extra: any;
}