49 lines
1.9 KiB
TypeScript
49 lines
1.9 KiB
TypeScript
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: '浏览器指纹 seed(fingerprint-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;
|
||
}
|