BytePlan 数据平台 API 封装。提供登录认证、模型查询、数据获取等接口。可被其他 skill(如 byteplan-ppt、byteplan-word、byteplan-video)依赖使用。
提供 BytePlan 数据平台的 JavaScript API 封装,支持:
| 环境值 | API 地址 | 说明 |
|---|---|---|
| dev | https://dev.byteplan.com | 开发环境(密码明文传输) |
| uat |
重要:首先询问用户选择登录环境:
json
{
questions: [
{
header: 登录环境,
question: 请选择 BytePlan 登录环境,
options: [
{ label: 开发环境 (dev), description: https://dev.byteplan.com,密码明文传输 },
{ label: UAT 环境 (uat), description: https://uatapp.byteplan.com,密码加密传输 }
],
multiSelect: false
}
]
}
凭证存储路径:~/.byteplan/.env(用户主目录下的 byteplan 文件夹)
登录成功后,系统会自动在此目录下创建 .env 文件,存储账号密码和 token 信息:
env
BP_ENV=dev # dev: 开发环境, uat: UAT环境
BP_USER=你的手机号
BP_PASSWORD=你的密码
目录结构:
~/.byteplan/
├── .env # 凭证和 token(全局共享)
└── workspaces/ # 各分析主题的工作目录(可选)
├── 计算机资产折旧20260331224600/
│ ├── analysisPlan.json
│ └── analysis_report.md
└── 库存周转分析20260401103000/
│ ├── analysisPlan.json
│ └── analysis_report.md
└ ...
注意:
如果用户没有 .env 文件或文件中缺少账号密码,必须询问用户输入:
javascript
// 从 byteplan-api skill 导入
import { login, loginWithEnv, getUserInfo, setEnvironment } from /Users/fudebao/.claude/skills/byteplan-api/scripts/api.js;
| 函数 | 描述 |
|---|---|
| setEnvironment(env) | 设置登录环境(dev 或 uat) |
| getEnvironment() |
| 函数 | 描述 |
|---|---|
| login(username, password, env?) | 使用凭证登录(自动处理 RSA 加密,自动保存 token) |
| loginWithEnv() |
javascript
// 方式 1:自动使用缓存 token(推荐)
// 首次登录会保存 token,后续调用自动复用
import { loginWithEnv } from ./api.js;
const result = await loginWithEnv();
const token = result.access_token;
if (result._cached) {
console.log(使用缓存的 token); // 无需重新登录
}
// 方式 2:强制重新登录
const result = await loginWithEnv(dev, true); // forceReLogin = true
// 方式 3:手动传入凭证(也会自动保存 token)
import { login } from ./api.js;
const result = await login(手机号, 密码, dev);
const token = result.access_token;
登录成功后,系统会自动将以下信息保存到 ~/.byteplan/.env 文件:
| 字段 | 说明 |
|---|---|
| ACCESSTOKEN | 访问令牌 |
| REFRESHTOKEN |
自动续期机制:
持久化流程:
| 函数 | 描述 |
|---|---|
| getUserInfo(token) | 获取用户和租户信息,返回 { user: {...}, tenantList: [...] } |
| switchTenant(token, tenantId) |
javascript
// 获取用户信息和可用租户列表
const userInfo = await getUserInfo(token);
// userInfo.user = { name, userName, tenantName, ... }
// userInfo.tenantList = [{ tenantId, tenantName }, ...]
// 如需切换到特定租户
await switchTenant(token, tenantId);
| 函数 | 描述 |
|---|---|
| queryModels(token, options?) | 列出可用模型 |
| getModelColumns(token, modelCodes) |
⚠️ 所有 API 函数直接返回后端响应,无需额外处理:
| 函数 | 返回值类型 | 说明 |
|---|---|---|
| queryModels() | Array | 直接返回数组,可用 models.map() 遍历 |
| getModelColumns() |
javascript
// ❌ 错误用法:queryModels 返回的是数组,不要加 .data
const models = await queryModels(token);
const list = models.data; // 错误!models 本身就是数组
// ✅ 正确用法:直接遍历
const models = await queryModels(token);
const modelList = models.map(m => ({ name: m.modelName, code: m.modelCode }));
// models.length = 模型总数
// ✅ getModelData 返回的是对象,需要用 .data 取数据数组
const result = await getModelData(token, model_code);
const items = result.data; // 数据数组
const total = result.total; // 总记录数
// ✅ getModelColumns 返回的是对象
const columns = await getModelColumns(token, [modelcode1]);
// columns.data = 字段定义
该技能支持在以下平台通过对话安装:
帮我安装 SkillHub 和 byteplan-api-1775900882 技能
设置 SkillHub 为我的优先技能安装源,然后帮我安装 byteplan-api-1775900882 技能
skillhub install byteplan-api-1775900882
文件大小: 10.24 KB | 发布时间: 2026-4-12 09:16