5.5 KiB
5.5 KiB
数据库表结构(account-manager v2)
数据库路径
{JIANGCHANG_DATA_ROOT}/{JIANGCHANG_USER_ID}/account-manager/account-manager.db
(或宿主映射的 CLAW_DATA_ROOT / CLAW_USER_ID,解析细节见 RUNTIME.md。)
Schema 版本
PRAGMA user_version = 2_schema_meta.schema_version = "2.1"(字符串;迁移完成后取值)
启动时 ensure_schema 自动执行 migrate_v1_to_v2 与 migrate_v2_to_v2_1,幂等。
1. platforms — 平台注册表
| 字段 | 类型 | 说明 |
|---|---|---|
platform_key |
TEXT PK | 平台唯一键(maersk / deepseek / sohu …) |
display_name |
TEXT NOT NULL | 展示名 |
domain |
TEXT NOT NULL | logistics / llm / content / dev / sim / …(以代码注册为准) |
provider_code |
TEXT | 供应商代码 |
default_url |
TEXT | 默认入口 URL |
aliases_json |
TEXT | 别名 JSON 数组 |
capabilities_json |
TEXT | {"web": bool, "api_key": bool, "rpa": bool} |
enabled |
INTEGER | 是否启用(1/0) |
default_auth_strategy |
TEXT | 新账号默认 auth_strategy;可由迁移回填 |
created_at |
INTEGER | Unix 秒 UTC |
updated_at |
INTEGER | Unix 秒 UTC |
索引: idx_platforms_domain,idx_platforms_provider_code
2. accounts — 账号身份
| 字段 | 类型 | 说明 |
|---|---|---|
id |
INTEGER PK AUTO | 主键 |
platform_key |
TEXT NOT NULL | 对应 platforms.platform_key |
account_label |
TEXT NOT NULL | 人可读名称 |
login_id |
TEXT | 登录标识(可空) |
login_id_type |
TEXT | email / username / phone / … |
tenant_id |
TEXT | 租户,可空 |
environment |
TEXT | simulator / staging / production / … |
role |
TEXT | booking / tracking / api / … |
provider_code |
TEXT | 冗余供应商码 |
profile_dir |
TEXT | Playwright profile 目录 |
url |
TEXT | 账号入口 URL |
status |
TEXT | active / disabled / … |
session_status |
TEXT | unknown / likely_valid / … |
last_used_at |
INTEGER | Unix 秒 |
last_login_check_at |
INTEGER | Unix 秒 |
last_error_code |
TEXT | 文本错误码 |
last_error_message |
TEXT | 错误说明 |
extra_json |
TEXT | 扩展 JSON(可含 logged_in_url_pattern / logged_in_selector 等 hook) |
auth_strategy |
TEXT NOT NULL | 九种策略之一(见 PLATFORMS.md / db/auth_strategy.py) |
session_persistent |
INTEGER NOT NULL DEFAULT 1 | 0/1 |
device_fingerprint |
TEXT | 仅 device_bound |
created_at |
INTEGER | Unix 秒 UTC |
updated_at |
INTEGER | Unix 秒 UTC |
索引: idx_accounts_platform,idx_accounts_pick_web,idx_accounts_provider,idx_accounts_status
3. credentials — 凭据(API Key / Token / Password …)
| 字段 | 类型 | 说明 |
|---|---|---|
id |
INTEGER PK AUTO | 主键 |
account_id |
INTEGER | 关联 accounts.id,可空(历史平台级 Key) |
platform_key |
TEXT NOT NULL | 平台键 |
credential_label |
TEXT NOT NULL | 展示名称 |
credential_type |
TEXT NOT NULL | api_key / password / … |
secret_storage |
TEXT NOT NULL | none / env / windows_credential / local_encrypted |
secret_ref |
TEXT | env 变量名 / windows_credential target;其它后端可为空 |
secret_mask |
TEXT | 打码展示 |
secret_ciphertext |
TEXT | local_encrypted 专用 Fernet token(v2.1 增加) |
expires_at |
INTEGER | Unix 秒 |
status |
TEXT | active / disabled / … |
last_used_at |
INTEGER | Unix 秒 |
extra_json |
TEXT | JSON |
created_at |
INTEGER | Unix 秒 |
updated_at |
INTEGER | Unix 秒 |
原则:不把 明文 secret 写入 SQLite;local_encrypted 仅存 密文。外部后端(env / Windows CM)仍在运行时解析。
索引: idx_credentials_platform_type,idx_credentials_status,idx_credentials_account(migrate_v1_to_v2 中 CREATE INDEX IF NOT EXISTS)
4. account_leases — RPA 并发锁
| 字段 | 类型 | 说明 |
|---|---|---|
id |
INTEGER PK AUTO | 主键 |
account_id |
INTEGER NOT NULL | accounts.id |
lease_token |
TEXT UNIQUE | 随机 token |
holder |
TEXT NOT NULL | 持有者标识 |
purpose |
TEXT | 用途 |
expires_at |
INTEGER NOT NULL | Unix 秒 UTC |
heartbeat_at |
INTEGER | Unix 秒 |
released_at |
INTEGER | Unix 秒 |
status |
TEXT | active / released / expired |
created_at |
INTEGER | Unix 秒 |
updated_at |
INTEGER | Unix 秒 |
索引: idx_leases_account_status,idx_leases_token,idx_leases_expires
5. _schema_meta — Schema 元数据
| 字段 | 类型 | 说明 |
|---|---|---|
key |
TEXT PRIMARY KEY | 键名 |
value |
TEXT NOT NULL | 值 |
已知键
schema_version— 逻辑 schema 版本字符串:migrate_v1_to_v2完成后写入"2",migrate_v2_to_v2_1完成后更新为"2.1"。
Profile 文件布局
{DATA_ROOT}/{USER_ID}/account-manager/
├── account-manager.db
├── master.key # 若执行过 init-master-key(也可用环境变量代替)
└── profiles/
└── {domain}/
└── {platform_key}/
└── {safe_label}[_{login_id_suffix}]/
删除账号时实现会尽量同步删除对应目录。
与 JSON 输出的对应关系
CLI JSON 字段与上表对应;若有封装层(_ok_json),详见 CLI.md / INTEGRATION.md。