BindVault:个人数字身份与绑定关系管理系统。
用于管理手机号、邮箱、邮箱别名、第三方账号、域名、支付方式、订阅、恢复方式、风控事件,以及它们之间的绑定关系。
当前 MVP 使用 SQLite 存储数据,由 server.py 同时提供静态页面和 API。
python3 server.py
然后访问:
http://localhost:8080
数据库默认写入:
data/bindvault.sqlite3
Docker Compose 运行:
docker compose up --build
BindVault 不是一个普通密码本,而是一个“个人数字资产台账”。
它要解决的问题是:
核心价值:
资产清单化
绑定关系可追踪
风险状态可管理
恢复路径可查询
敏感凭据不明文存储
BindVault 不直接存储明文密码、2FA Secret、恢复码、银行卡完整信息。
这些敏感数据应该放在:
Vaultwarden
Bitwarden
KeePassXC
1Password
其他密码管理器
BindVault 只保存引用位置,例如:
Vaultwarden 条目名:Apple/apple01
KeePassXC 路径:Digital Assets/Apple/apple01
系统的核心不是账号本身,而是:
手机号 / 邮箱 / 域名 / 支付方式 / 设备
↓
绑定了哪些平台账号
↓
这些绑定在登录、验证、恢复、风控中分别扮演什么角色
MVP 阶段只需要支持个人使用,不需要复杂组织、多租户、审批流。
后续可扩展:
多用户
团队共享
资产分组
权限控制
审计日志
加密字段
首页展示个人数字资产概览。
总资产数
正常账号
异常账号
高风险绑定
即将到期域名
即将到期订阅
待处理事件
用于维护所有个人手机号、虚拟号、海外号、备用号。
| 字段 | 类型 | 说明 |
|---|---|---|
| id | string | 唯一 ID |
| phone_number | string | 手机号,建议 E.164 格式,如 +86131xxxx0000 |
| country_region | string | 国家/地区,如 CN、US、TR |
| carrier | string | 运营商,如 中国移动、联通、T-Mobile |
| owner | string | 实名人,如 本人、家人、公司 |
| sim_type | enum | physical / esim / virtual |
| status | enum | available / inactive / cannot_receive_sms / released / high_risk |
| purpose | string | 用途说明 |
| is_primary | boolean | 是否主力号码 |
| can_receive_sms | boolean | 是否可收短信 |
| can_receive_call | boolean | 是否可接电话 |
| last_verified_at | datetime | 最近验证时间 |
| expires_at | datetime | 到期时间,可选 |
| notes | text | 备注 |
available 可用
inactive 停用
cannot_receive_sms 不可收短信
released 已释放
high_risk 高风险
unknown 未知
用于维护 Gmail、Outlook、QQ 邮箱、自定义域名邮箱、Cloudflare Email Routing 别名。
| 字段 | 类型 | 说明 |
|---|---|---|
| id | string | 唯一 ID |
| string | 邮箱地址 | |
| email_type | enum | gmail / outlook / qq / custom_domain / cloudflare_routing / alias |
| provider | string | Gmail、Cloudflare、腾讯企业邮等 |
| domain | string | 所属域名,如 yunzhihui.ltd |
| forward_to | string | 转发目标邮箱 |
| status | enum | available / cannot_receive / inactive / high_risk |
| can_receive_email | boolean | 是否可收信 |
| can_send_email | boolean | 是否可发信 |
| purpose | string | 用途 |
| is_primary | boolean | 是否主邮箱 |
| last_verified_at | datetime | 最近验证时间 |
| notes | text | 备注 |
用于维护个人域名及其 DNS、邮箱路由、到期信息。
| 字段 | 类型 | 说明 |
|---|---|---|
| id | string | 唯一 ID |
| domain | string | 域名 |
| registrar | string | 注册商 |
| dns_provider | string | DNS 服务商,如 Cloudflare |
| status | enum | active / expired / transferring / high_risk |
| expires_at | datetime | 到期时间 |
| auto_renew | boolean | 是否自动续费 |
| email_routing_enabled | boolean | 是否开启邮件路由 |
| notes | text | 备注 |
用于维护第三方平台账号。
| 字段 | 类型 | 说明 |
|---|---|---|
| id | string | 唯一 ID |
| platform | string | 平台,如 Apple、Google、OpenAI、Claude、GitHub |
| account_identifier | string | 登录账号,如邮箱、手机号、用户名 |
| display_name | string | 展示名 |
| region | string | 注册地区,如 CN、US、TR |
| status | enum | normal / pending_verify / locked / suspended / appealing / recovered / deleted / unusable |
| login_email_id | string | 登录邮箱 ID,关联 emails |
| login_phone_id | string | 登录手机号 ID,关联 phone_numbers |
| recovery_email_id | string | 恢复邮箱 ID |
| recovery_phone_id | string | 恢复手机号 ID |
| two_factor_type | enum | none / sms / email / authenticator / passkey / hardware_key |
| credential_ref | string | 密码管理器条目引用 |
| recovery_ref | string | 恢复码/密保信息引用 |
| registered_at | datetime | 注册时间 |
| last_login_at | datetime | 最近登录时间 |
| last_verified_at | datetime | 最近验证时间 |
| notes | text | 备注 |
normal 正常
pending_verify 待验证
locked 已锁定
suspended 已冻结
appealing 申诉中
recovered 已恢复
deleted 已注销
unusable 不可用
unknown 未知
这是系统最核心的模块。
一个账号可能绑定多个资产:
Apple ID
- 登录邮箱:[email protected]
- 受信任手机号:+86131xxxx0000
- 恢复邮箱:[email protected]
- 支付方式:土耳其礼品卡
一个资产也可能绑定多个账号:
+86131xxxx0000
- Apple ID A:受信任手机号
- Apple ID B:恢复手机号
- Google A:2FA 手机号
- Telegram:登录手机号
| 字段 | 类型 | 说明 |
|---|---|---|
| id | string | 唯一 ID |
| asset_type | enum | phone / email / domain / payment / device / subscription |
| asset_id | string | 对应资产 ID |
| account_id | string | 账号 ID |
| platform | string | 冗余字段,方便查询 |
| binding_role | enum | login / recovery / trusted_phone / two_factor / notification / payment / owner |
| status | enum | active / removed / unknown / risky |
| bound_at | datetime | 绑定时间 |
| unbound_at | datetime | 解绑时间 |
| can_unbind | boolean | 是否可解绑 |
| risk_level | enum | low / medium / high |
| notes | text | 备注 |
login 登录方式
recovery 恢复方式
trusted_phone 受信任手机号
two_factor 二次验证
notification 通知邮箱/手机号
payment 支付方式
owner 所有者/实名关联
alias 邮箱别名
unknown 未知
用于维护礼品卡、虚拟卡、银行卡、PayPal、余额等。
| 字段 | 类型 | 说明 |
|---|---|---|
| id | string | 唯一 ID |
| payment_type | enum | gift_card / virtual_card / bank_card / paypal / balance / crypto |
| provider | string | Apple Gift Card、Wise、PayPal 等 |
| region | string | 地区 |
| masked_identifier | string | 脱敏标识,如 **** 1234 |
| currency | string | 币种,如 USD、TRY、CNY |
| balance | decimal | 余额,可选 |
| status | enum | active / inactive / expired / high_risk |
| expires_at | datetime | 到期时间 |
| credential_ref | string | 凭据引用 |
| notes | text | 备注 |
用于维护机场、云服务、Apple 订阅、域名、SaaS 等。
| 字段 | 类型 | 说明 |
|---|---|---|
| id | string | 唯一 ID |
| service_name | string | 服务名称 |
| account_id | string | 关联账号 |
| plan_name | string | 套餐 |
| price | decimal | 价格 |
| currency | string | 币种 |
| billing_cycle | enum | monthly / quarterly / yearly / lifetime / custom |
| status | enum | active / cancelled / expired / trial |
| started_at | datetime | 开始时间 |
| next_billing_at | datetime | 下次扣费时间 |
| payment_method_id | string | 支付方式 |
| notes | text | 备注 |
用于记录账号锁定、风控、申诉、验证码失败等事件。
| 字段 | 类型 | 说明 |
|---|---|---|
| id | string | 唯一 ID |
| account_id | string | 关联账号 |
| platform | string | 平台 |
| incident_type | enum | locked / suspended / verification_failed / payment_failed / login_failed / appeal / recovered |
| severity | enum | low / medium / high / critical |
| status | enum | open / processing / resolved / abandoned |
| occurred_at | datetime | 发生时间 |
| resolved_at | datetime | 解决时间 |
| description | text | 事件描述 |
| action_taken | text | 已采取动作 |
| next_action | text | 下一步动作 |
| evidence_ref | string | 证据截图/文件引用 |
| notes | text | 备注 |
用于自定义分类。
主力
备用
外区
中国大陆
土耳其区
美国区
高风险
已申诉
可收码
不可收码
Cloudflare Routing
Apple ID
OpenAI
全局搜索必须支持:
手机号
邮箱
平台名称
账号登录名
域名
备注
标签
常用筛选:
平台 = Apple
状态 = 已锁定
地区 = 土耳其
绑定手机号 = +86xxx
邮箱类型 = Cloudflare Routing
风险等级 = 高
即将到期 = 30 天内
MVP 阶段先做静态规则检测。
条件:
phone.status in [cannot_receive_sms, inactive, released]
AND binding.binding_role in [two_factor, trusted_phone, recovery]
AND binding.status = active
风险等级:High
条件:
email.status in [cannot_receive, inactive]
AND binding.binding_role in [login, recovery]
AND binding.status = active
风险等级:High
条件:
count(active bindings where asset_type = phone and asset_id = current_phone_id) >= threshold
默认阈值:5
风险等级:Medium
条件:
account.status in [locked, suspended, unusable]
AND phone.is_primary = true
AND binding.status = active
风险等级:Medium
条件:
domain.expires_at <= now + 30 days
AND email.domain = domain.domain
AND email.status = available
风险等级:High
支持 CSV 导入:
phone_numbers.csv
emails.csv
accounts.csv
bindings.csv
domains.csv
subscriptions.csv
导入时需要:
支持导出:
CSV
JSON
SQLite backup
导出时默认不包含敏感凭据,只导出台账信息。
以下字段不应该明文保存:
密码
2FA Secret
恢复码
完整银行卡号
CVV
身份证号
短信验证码
邮箱验证码
可以保存引用:
credential_ref
recovery_ref
evidence_ref
例如:
Vaultwarden: Apple/apple01
KeePassXC: DigitalAssets/Apple/apple01
LocalFile: encrypted/screenshots/apple-lock-2026-05-24.png
MVP 建议支持本地部署:
Docker Compose
SQLite / PostgreSQL
本地文件备份
系统应提示用户定期备份数据库。
如果项目未指定技术栈,推荐:
React
TypeScript
Vite
Tailwind CSS
shadcn/ui
React Router
TanStack Query
二选一:
Node.js + NestJS / Express + Prisma
或:
Go + Gin/Fiber + GORM/sqlc
MVP:
SQLite
正式自托管:
PostgreSQL
Docker
Docker Compose
/dashboard
/phones
/emails
/domains
/accounts
/bindings
/payments
/subscriptions
/incidents
/tags
/settings
每类资产都应该有详情页。
例如手机号详情页:
手机号基础信息
状态
是否可收短信
绑定账号列表
风险提示
最近验证时间
备注
事件记录
账号详情页:
账号基础信息
登录邮箱
登录手机号
恢复邮箱
恢复手机号
2FA 类型
绑定关系图
风险事件时间线
密码管理器引用
备注
GET /api/phones
POST /api/phones
GET /api/phones/:id
PUT /api/phones/:id
DELETE /api/phones/:id
GET /api/emails
POST /api/emails
GET /api/emails/:id
PUT /api/emails/:id
DELETE /api/emails/:id
GET /api/accounts
POST /api/accounts
GET /api/accounts/:id
PUT /api/accounts/:id
DELETE /api/accounts/:id
GET /api/bindings
POST /api/bindings
PUT /api/bindings/:id
DELETE /api/bindings/:id
GET /api/incidents
POST /api/incidents
PUT /api/incidents/:id
DELETE /api/incidents/:id
GET /api/risks
POST /api/import
GET /api/export
GET /api/accounts?platform=Apple&status=locked
GET /api/bindings?asset_type=phone&asset_id=xxx
GET /api/risks?level=high
phone_numbers
emails
domains
accounts
bindings
payment_methods
subscriptions
incidents
tags
tag_relations
risk_findings
attachments
settings
所有表建议包含:
id
created_at
updated_at
deleted_at
notes
第一版只做这些:
1. 手机号管理
2. 邮箱管理
3. 账号管理
4. 绑定关系管理
5. 风险事件管理
6. Dashboard 概览
7. 全局搜索
8. CSV 导入导出
9. Docker Compose 部署
暂时不做:
团队权限
复杂审批
浏览器插件
自动登录检测
短信自动读取
邮箱自动扫描
密码自动填充
请按以下优先级实现:
P0:数据库模型、CRUD、页面基础结构
P1:绑定关系、详情页、搜索筛选
P2:风险检测、Dashboard、导入导出
P3:标签、附件、关系图、备份提醒
代码要求:
{
"phone_number": "+86131xxxx0000",
"country_region": "CN",
"carrier": "China Mobile",
"owner": "self",
"status": "available",
"can_receive_sms": true,
"is_primary": true,
"notes": "主力手机号,不建议绑定过多外区账号"
}
{
"email": "[email protected]",
"email_type": "cloudflare_routing",
"provider": "Cloudflare",
"domain": "yunzhihui.ltd",
"forward_to": "[email protected]",
"status": "available",
"can_receive_email": true,
"can_send_email": false,
"notes": "用于 Apple ID 注册,只收信不发信"
}
{
"platform": "Apple",
"account_identifier": "[email protected]",
"region": "US",
"status": "normal",
"two_factor_type": "sms",
"credential_ref": "Vaultwarden: Apple/apple01",
"recovery_ref": "Vaultwarden: Apple/apple01-recovery"
}
{
"asset_type": "email",
"binding_role": "login",
"platform": "Apple",
"status": "active",
"risk_level": "low",
"notes": "Apple ID 登录邮箱"
}
BindVault 是一个个人数字身份与绑定关系管理系统,用于维护手机号、邮箱、域名、账号、支付方式、订阅和恢复信息之间的关系,帮助用户清晰掌握自己的数字资产、绑定链路和风险状态。