@newpeak/barista-cli 0.1.131 → 0.1.133
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +78 -63
- package/dist/commands/liberica/issue/close.d.ts +3 -0
- package/dist/commands/liberica/issue/close.d.ts.map +1 -0
- package/dist/commands/liberica/issue/close.js +87 -0
- package/dist/commands/liberica/issue/close.js.map +1 -0
- package/dist/commands/liberica/issue/index.d.ts.map +1 -1
- package/dist/commands/liberica/issue/index.js +4 -0
- package/dist/commands/liberica/issue/index.js.map +1 -1
- package/dist/commands/liberica/issue/reopen.d.ts +3 -0
- package/dist/commands/liberica/issue/reopen.d.ts.map +1 -0
- package/dist/commands/liberica/issue/reopen.js +87 -0
- package/dist/commands/liberica/issue/reopen.js.map +1 -0
- package/dist/commands/skills/index.d.ts +3 -0
- package/dist/commands/skills/index.d.ts.map +1 -0
- package/dist/commands/skills/index.js +252 -0
- package/dist/commands/skills/index.js.map +1 -0
- package/dist/core/api/client.d.ts +9 -1
- package/dist/core/api/client.d.ts.map +1 -1
- package/dist/core/api/client.js +58 -0
- package/dist/core/api/client.js.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/skills/barista-cli/scripts/generate.d.ts +12 -0
- package/dist/skills/barista-cli/scripts/generate.d.ts.map +1 -0
- package/dist/skills/barista-cli/scripts/generate.js +312 -0
- package/dist/skills/barista-cli/scripts/generate.js.map +1 -0
- package/dist/types/issue-report.d.ts +74 -0
- package/dist/types/issue-report.d.ts.map +1 -1
- package/package.json +4 -2
- package/skills/barista-cli/SKILL.md +193 -0
- package/skills/barista-cli/data/commands.json +2470 -0
- package/skills/barista-cli/data/commands.yaml +1593 -0
- package/skills/barista-cli/scripts/search.py +194 -0
- package/skills/barista-cli/skill.json +17 -0
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: barista-cli
|
|
3
|
+
description: >-
|
|
4
|
+
Barista CLI — 让 AI 助手通过命令行操控企业生产管理系统。
|
|
5
|
+
【Liberica】生产管理 SaaS(70+ 模块:基础资料/供应链/库存/生产/BOM/计划/质量/财务/HR/团队等)。
|
|
6
|
+
用户为租户企业员工,通过 tenant + username 登录。
|
|
7
|
+
【Arabica】Liberica 在线订阅平台(套餐/订阅下单/发票/企业管理)。
|
|
8
|
+
用户为会员(个人账号),通过 account + password 登录。
|
|
9
|
+
Actions: list, get, create, update, delete, submit, cancel, review, batch-review,
|
|
10
|
+
enable, disable, copy, track, export, import, compute, release, complete, register.
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# Barista CLI — AI 操控企业生产管理系统
|
|
14
|
+
|
|
15
|
+
## 系统关系
|
|
16
|
+
|
|
17
|
+
**Liberica** = 生产管理 SaaS(制造企业 ERP)。用户=**租户企业员工**,登录=tenant+username+password。
|
|
18
|
+
**Arabica** = Liberica 在线订阅平台。用户=**会员**(个人账号),登录=account+password。
|
|
19
|
+
|
|
20
|
+
两者用户体系完全独立,但有业务流程关联:
|
|
21
|
+
|
|
22
|
+
```
|
|
23
|
+
会员注册 Arabica → 登录 → 注册企业 → 选套餐下单 → 获得 Liberica 权限
|
|
24
|
+
→ 员工登录 Liberica → 日常生产管理(采购/库存/生产/销售等)
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
## When to Apply
|
|
28
|
+
|
|
29
|
+
| 场景 | 系统 | 判断 |
|
|
30
|
+
|------|------|------|
|
|
31
|
+
| 生产数据(订单/库存/物料/BOM/工单/质量/财务/HR) | **Liberica** | 涉及制造企业日常运营 |
|
|
32
|
+
| 订阅/套餐/购买/发票/企业注册 | **Arabica** | 涉及购买 Liberica 服务 |
|
|
33
|
+
| 先看用户意图对应哪个业务领域 | 判断后再选系统 | 不确定时问用户 |
|
|
34
|
+
|
|
35
|
+
## CRITICAL: 关键陷阱(AI 必须遵守)
|
|
36
|
+
|
|
37
|
+
### 1. 邮箱用户名登录
|
|
38
|
+
```bash
|
|
39
|
+
# ✅ 正确:用位置参数
|
|
40
|
+
barista liberica auth login dev shanghai admin@shanghai.newpeaksh.com 123456
|
|
41
|
+
# ❌ 错误:--username 遇到 @ 会报 A0900006
|
|
42
|
+
barista liberica auth login --username admin@shanghai.newpeaksh.com
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
### 2. teams issues 的 --tenant 被忽略
|
|
46
|
+
```bash
|
|
47
|
+
# ✅ 正确:先切换 context
|
|
48
|
+
barista context use-tenant coffee
|
|
49
|
+
barista liberica teams issues update <id> --status CLOSED --assign-to <uid>
|
|
50
|
+
|
|
51
|
+
# ❌ 错误:--tenant coffee 被忽略,使用配置中的默认 tenant
|
|
52
|
+
barista liberica teams issues update <id> --status CLOSED --tenant coffee
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
**已知忽略 --tenant 的命令**:teams issues update/close/get/delete
|
|
56
|
+
|
|
57
|
+
### 3. teams issues close 需要 --assign-to
|
|
58
|
+
```
|
|
59
|
+
A1506: 负责人ID列表不能为空
|
|
60
|
+
# 用 update 代替 close:
|
|
61
|
+
barista liberica teams issues update <id> --status CLOSED --assign-to <userId>
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
### 4. 日期字段用 epoch ms
|
|
65
|
+
```bash
|
|
66
|
+
# ✅ 正确:Date.now() → 1746547200000
|
|
67
|
+
# ❌ 错误:"2025-05-06" 导致 B0001
|
|
68
|
+
```
|
|
69
|
+
影响命令:transfer-out-forms create(stockDate)、finance invoices create(invoiceDate)
|
|
70
|
+
|
|
71
|
+
### 5. Liberica vs Arabica 登录差异
|
|
72
|
+
| | Liberica | Arabica |
|
|
73
|
+
|--|----------|---------|
|
|
74
|
+
| 命令 | `barista liberica auth login <env> <tenant> <username> <password>` | `barista arabica auth login <env> <account> <password>` |
|
|
75
|
+
| 有无 tenant | 有 | 无 |
|
|
76
|
+
| 用户类型 | 企业员工 | 会员 |
|
|
77
|
+
| 注册 | 无注册命令 | `barista arabica auth register` |
|
|
78
|
+
|
|
79
|
+
### 6. 两个独立的问题系统
|
|
80
|
+
- `liberica issue submit` — 向开发团队上报需求/BUG(通过 Typica → GitLab Issue)
|
|
81
|
+
- 默认上报到 **CLI 项目**(barista)
|
|
82
|
+
- `--project-code arabica` 上报到 **Arabica 项目**
|
|
83
|
+
- `--project-code liberica` 上报到 **Liberica 项目**
|
|
84
|
+
- `--type BUG|REQUIREMENT|QUESTION` 指定问题类型
|
|
85
|
+
- 可用 `validate-project <code>` 验证项目代号是否有效
|
|
86
|
+
- `liberica teams issues` — 团队内部项目的问题管理(本地 DB)
|
|
87
|
+
- 关闭已上报的 issue:在 teams issues 中过滤 BARISTA 项目 ID `2048236204222570498`
|
|
88
|
+
|
|
89
|
+
### 7. token 存储
|
|
90
|
+
- Token 存在系统密钥链(keytar),fallback 到 AES-256-GCM 加密文件
|
|
91
|
+
- Liberica key 格式:`liberica:{environment}:{tenant}`
|
|
92
|
+
- Arabica key 格式:`arabica:{environment}`(无 tenant)
|
|
93
|
+
|
|
94
|
+
## 安全规则
|
|
95
|
+
|
|
96
|
+
所有写操作(create/update/delete/batch-*)必须先 dry-run 再 force:
|
|
97
|
+
|
|
98
|
+
```typescript
|
|
99
|
+
// 1. 预览
|
|
100
|
+
const preview = await $`barista liberica <resource> <action> --dry-run --json`
|
|
101
|
+
const { success, data } = JSON.parse(preview.stdout)
|
|
102
|
+
if (!success) throw new Error(data.error?.message)
|
|
103
|
+
|
|
104
|
+
// 2. 验证 preview 内容是否正确
|
|
105
|
+
|
|
106
|
+
// 3. 执行
|
|
107
|
+
const result = await $`barista liberica <resource> <action> --force --json`
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
## 如何查找命令
|
|
111
|
+
|
|
112
|
+
当需要查找具体命令时,使用 search.py 按用户意图搜索。search.py 位于技能安装目录下的 `scripts/search.py`:
|
|
113
|
+
|
|
114
|
+
```bash
|
|
115
|
+
# 示例路径(根据你的 AI 平台调整):
|
|
116
|
+
python3 .claude/skills/barista-cli/scripts/search.py "<用户意图>" [--domain <domain>]
|
|
117
|
+
# 或使用 barista 内置搜索:
|
|
118
|
+
barista skills query "<用户意图>" [--domain <domain>]
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
**domain 选项**:
|
|
122
|
+
|
|
123
|
+
| domain | 搜索范围 |
|
|
124
|
+
|--------|----------|
|
|
125
|
+
| 不传 | 所有服务 |
|
|
126
|
+
| `liberica` | 仅 Liberica |
|
|
127
|
+
| `liberica.purchase-orders` | Liberica 采购订单模块 |
|
|
128
|
+
| `liberica.finance.invoices` | Liberica 财务发票子模块 |
|
|
129
|
+
| `arabica` | 仅 Arabica |
|
|
130
|
+
| `arabica.plans` | Arabica 套餐模块 |
|
|
131
|
+
|
|
132
|
+
**示例**:
|
|
133
|
+
```bash
|
|
134
|
+
python3 search.py "采购订单 列表" --domain liberica
|
|
135
|
+
python3 search.py "创建入库单"
|
|
136
|
+
python3 search.py "subscription" --domain arabica
|
|
137
|
+
python3 search.py "invoice" --domain arabica.invoices
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
## JSON 响应格式
|
|
141
|
+
|
|
142
|
+
所有命令的 `--json` 输出遵循统一格式:
|
|
143
|
+
|
|
144
|
+
```json
|
|
145
|
+
{
|
|
146
|
+
"success": true,
|
|
147
|
+
"data": {
|
|
148
|
+
"items": [...],
|
|
149
|
+
"pagination": { "page": 1, "size": 20, "total": 150 }
|
|
150
|
+
},
|
|
151
|
+
"meta": { "requestId": "...", "timestamp": "...", "environment": "dev", "tenant": "..." }
|
|
152
|
+
}
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
错误格式(两种):
|
|
156
|
+
```json
|
|
157
|
+
{ "success": false, "code": "B0301", "message": "TOKEN解析失败" }
|
|
158
|
+
{ "success": false, "error": { "code": "A150001", "message": "..." } }
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
## 常见错误
|
|
162
|
+
|
|
163
|
+
| 错误 | 含义 | 修复 |
|
|
164
|
+
|------|------|------|
|
|
165
|
+
| B0301 | Liberica token 过期/invalid | `barista liberica auth login <env> <tenant> <username> <password>` |
|
|
166
|
+
| A0307 | 获取 token 失败 | 同上 |
|
|
167
|
+
| Arabica 登录失败 | 会员 token 过期 | `barista arabica auth login <env> <account> <password>` |
|
|
168
|
+
| A958001 | teams issues 的 tenant 不对 | `barista context use-tenant <正确tenant>` 重试 |
|
|
169
|
+
| A1506 | 负责人 ID 列表为空 | 用 `update --status CLOSED --assign-to <id>` 代替 close |
|
|
170
|
+
| B0001 | 系统执行出错 | 检查日期格式(epoch ms)、必填参数 |
|
|
171
|
+
| A0900006 | 错误的账号 | 邮箱用位置参数,不用 --username |
|
|
172
|
+
| A1504 | HTTP 方法错误 | CLI 一般自动处理(list→GET,create→POST) |
|
|
173
|
+
|
|
174
|
+
## 内置 JSON 输出
|
|
175
|
+
|
|
176
|
+
```typescript
|
|
177
|
+
// AI 在 Claude Code / OpenCode 中执行:
|
|
178
|
+
const result = await $`barista liberica <resource> <action> --json`
|
|
179
|
+
const { success, data, error } = JSON.parse(result.stdout)
|
|
180
|
+
|
|
181
|
+
if (!success) {
|
|
182
|
+
if (error?.code === 'B0301') { /* need re-login */ }
|
|
183
|
+
throw new Error(error?.message)
|
|
184
|
+
}
|
|
185
|
+
const items = data?.items || []
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
## ⚠️ 通用约束
|
|
189
|
+
|
|
190
|
+
1. ID 字段必须用 `string` 类型(后端返回 BigInteger 超出 JS number 精度)
|
|
191
|
+
2. 不加 `X-TENANT-ID` header(tenant 在 JWT 中)
|
|
192
|
+
3. Authorization 不加 `Bearer` 前缀
|
|
193
|
+
4. 分页 1-based 直传
|