# 外部平台登录与权限就绪检查
类型:`diagnostic-tool`
风险:`medium`
## 诊断流程样例
### 场景
用户要求把 Get笔记接入 Codex,并希望后续能直接读写笔记。
### 工具入口
```bash
python scripts/external_platform_readiness_doctor.py \
--platform getnote \
--task write \
--target https://getbiji.com/openapi/health
```
### 输入来源
- `~/.codex/secret.env`:检查 `GETNOTE_API_KEY`、`GETNOTE_CLIENT_ID` 是否存在。
- `~/.codex/external-platforms.json`:读取 Get笔记 smoke endpoint、会员权益检查规则、错误码映射。
- 内嵌浏览器:只判断是否遇到登录、验证码、授权按钮,不采集敏感凭证。
### 核心检查
| 步骤 | 检查内容 | 成功信号 | 失败信号 |
|---|---|---|---|
| 1 | 环境变量 | key 和 client id 存在 | `AUTH_MISSING` |
| 2 | API 鉴权 | 返回 2xx 或可识别业务响应 | 401/403/签名错误 |
| 3 | 会员权益 | 返回有 OpenAPI 权限 | `ENTITLEMENT_BLOCKED: not_member` |
| 4 | 浏览器授权 | 已登录且授权完成 | `USER_ACTION_REQUIRED: sms_or_mfa` |
| 5 | 写入 smoke | 创建测试笔记成功并清理 | `WRITE_BLOCKED` |
### 输出样例
```json
{
"platform": "getnote",
"status": "ENTITLEMENT_BLOCKED",
"ready": false,
"auth": "ok",
"entitlement": "not_member",
"next_action": "账号已授权,但需要开通 OpenAPI 会员后才能读写笔记。"
}
```
### 交接结论
不是 skill 安装失败,也不是 API key 未写入;阻塞点是平台会员权益。父任务可以继续保留 skill,但不能承诺当前账号已经具备读写能力。