@newpeak/barista-cli 0.1.15 → 0.1.16

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.
Files changed (44) hide show
  1. package/README.ja.md +209 -620
  2. package/README.md +206 -755
  3. package/README.vi.md +206 -623
  4. package/README.zh.md +340 -0
  5. package/dist/commands/liberica/orgs/batch-delete.d.ts +3 -0
  6. package/dist/commands/liberica/orgs/batch-delete.d.ts.map +1 -0
  7. package/dist/commands/liberica/orgs/batch-delete.js +109 -0
  8. package/dist/commands/liberica/orgs/batch-delete.js.map +1 -0
  9. package/dist/commands/liberica/orgs/create.d.ts +3 -0
  10. package/dist/commands/liberica/orgs/create.d.ts.map +1 -0
  11. package/dist/commands/liberica/orgs/create.js +131 -0
  12. package/dist/commands/liberica/orgs/create.js.map +1 -0
  13. package/dist/commands/liberica/orgs/disable.d.ts +3 -0
  14. package/dist/commands/liberica/orgs/disable.d.ts.map +1 -0
  15. package/dist/commands/liberica/orgs/disable.js +98 -0
  16. package/dist/commands/liberica/orgs/disable.js.map +1 -0
  17. package/dist/commands/liberica/orgs/enable.d.ts +3 -0
  18. package/dist/commands/liberica/orgs/enable.d.ts.map +1 -0
  19. package/dist/commands/liberica/orgs/enable.js +98 -0
  20. package/dist/commands/liberica/orgs/enable.js.map +1 -0
  21. package/dist/commands/liberica/orgs/get.d.ts +3 -0
  22. package/dist/commands/liberica/orgs/get.d.ts.map +1 -0
  23. package/dist/commands/liberica/orgs/get.js +79 -0
  24. package/dist/commands/liberica/orgs/get.js.map +1 -0
  25. package/dist/commands/liberica/orgs/index.d.ts.map +1 -1
  26. package/dist/commands/liberica/orgs/index.js +15 -21
  27. package/dist/commands/liberica/orgs/index.js.map +1 -1
  28. package/dist/commands/liberica/orgs/list.d.ts +3 -0
  29. package/dist/commands/liberica/orgs/list.d.ts.map +1 -0
  30. package/dist/commands/liberica/orgs/list.js +51 -0
  31. package/dist/commands/liberica/orgs/list.js.map +1 -0
  32. package/dist/commands/liberica/orgs/update.d.ts +3 -0
  33. package/dist/commands/liberica/orgs/update.d.ts.map +1 -0
  34. package/dist/commands/liberica/orgs/update.js +136 -0
  35. package/dist/commands/liberica/orgs/update.js.map +1 -0
  36. package/dist/core/api/client.d.ts +7 -1
  37. package/dist/core/api/client.d.ts.map +1 -1
  38. package/dist/core/api/client.js +128 -0
  39. package/dist/core/api/client.js.map +1 -1
  40. package/dist/index.js +1 -1
  41. package/dist/types/org.d.ts +38 -0
  42. package/dist/types/org.d.ts.map +1 -1
  43. package/package.json +1 -1
  44. package/README.en.md +0 -757
package/README.vi.md CHANGED
@@ -1,498 +1,268 @@
1
1
  # ☕ Barista CLI
2
2
 
3
- <p align="center">
4
- <a href="./README.md"><img src="https://img.shields.io/badge/-简体中文-green?style=flat-square" alt="简体中文"></a>
5
- <a href="./README.en.md"><img src="https://img.shields.io/badge/-English-blue?style=flat-square" alt="English"></a>
6
- <a href="./README.ja.md"><img src="https://img.shields.io/badge/-日本語-red?style=flat-square" alt="日本語"></a>
7
- <a href="./README.vi.md"><img src="https://img.shields.io/badge/-Tiếng%20Việt-green?style=flat-square" alt="Tiếng Việt"></a>
8
- </p>
9
-
10
- <p align="center">
11
- <img src="https://img.shields.io/badge/AI--Native-CLI-blue?style=flat-square" alt="AI-Native">
12
- <img src="https://img.shields.io/badge/Liberica-Production%20SaaS-green?style=flat-square" alt="Liberica">
13
- <img src="https://img.shields.io/badge/Arabica-Sales%20Platform-orange?style=flat-square" alt="Arabica">
14
- <img src="https://img.shields.io/badge/Node.js-18%2B-brightgreen?style=flat-square" alt="Node.js 18+">
15
- </p>
16
-
17
- <p align="center">
18
- <strong>Công cụ CLI AI-Native</strong> - Kết nối liền mạch giữa Liberica SaaS Quản lý Sản xuất và Nền tảng Bán hàng Arabica
19
- </p>
3
+ > **Để AI assistants điều khiển hệ thống quản lý sản xuất** — Kết nối AI tools (Claude Code, OpenCode, OpenClaw) với SaaS doanh nghiệp
20
4
 
21
- ---
22
-
23
- ## 📋 Mục lục
24
-
25
- - [Giới thiệu Dự án](#giới-thiệu-dự-án)
26
- - [Bắt đầu Nhanh](#bắt-đầu-nhanh)
27
- - [Thiết kế Kiến trúc](#thiết-kế-kiến-trúc)
28
- - [Tài liệu Lệnh](#tài-liệu-lệnh)
29
- - [Tính năng Nâng cao](#tính-năng-nâng-cao)
30
- - [Cấu hình](#cấu-hình)
31
- - [Tích hợp AI](#tích-hợp-ai)
32
- - [Hướng dẫn Phát triển](#hướng-dẫn-phát-triển)
33
- - [Hướng dẫn Đóng góp](#hướng-dẫn-đóng-góp)
34
-
35
- ---
36
-
37
- ## Giới thiệu Dự án
38
-
39
- Barista CLI là công cụ dòng lệnh AI-Native được thiết kế đặc biệt cho hệ sinh thái Newpeak. Nó cung cấp giao diện thống nhất để quản lý Liberica SaaS Quản lý Sản xuất và Nền tảng Bán hàng Arabica.
40
-
41
- ### Tính năng Cốt lõi
42
-
43
- | Tính năng | Mô tả |
44
- |-----------|-------|
45
- | 🌍 **Hỗ trợ Đa Môi trường** | Chuyển đổi liền mạch giữa 4 môi trường dev, test, prod-cn, và prod-jp |
46
- | 🏢 **Kiến trúc Đa Ngưới thuê** | Hỗ trợ cấu hình và cách ly môi trường đa ngưới thuê |
47
- | 🔐 **Xác thực Token** | Lưu trữ an toàn trong chuỗi khóa hệ thống, cách ly môi trường |
48
- | 🧪 **Chế độ Dry-Run** | Tất cả thao tác ghi đều hỗ trợ xem trước để tránh lỗi |
49
- | 🤖 **Tích hợp AI** | Định dạng đầu ra JSON được tối ưu hóa cho Claude Code |
50
- | 🔄 **Thao tác Liên dịch vụ** | Đồng bộ dữ liệu giữa Liberica và Arabica |
51
-
52
- ### Các trường hợp Sử dụng
53
-
54
- - **Quản lý Kế hoạch Sản xuất**: Tạo, truy vấn và hủy đơn hàng sản xuất
55
- - **Quản lý Dữ liệu Sản phẩm**: Tìm kiếm sản phẩm đa nền tảng, đồng bộ thông tin
56
- - **Thao tác Khách hàng**: Truy vấn thông tin khách hàng và tạo báo giá
57
- - **Tự động hóa AI**: Tự động hóa quy trình kinh doanh thông qua Claude Code
5
+ [![npm version](https://img.shields.io/npm/v/@newpeak/barista-cli.svg?style=flat-square)](https://www.npmjs.com/package/@newpeak/barista-cli)
6
+ [![License: MIT](https://img.shields.io/badge/License-MIT-green.svg?style=flat-square)](LICENSE)
7
+ [![Weekly Downloads](https://img.shields.io/npm/dw/@newpeak/barista-cli?style=flat-square)](https://www.npmjs.com/package/@newpeak/barista-cli)
8
+ [![Node.js](https://img.shields.io/badge/Node.js-18%2B-brightgreen?style=flat-square)](https://nodejs.org/)
58
9
 
59
10
  ---
60
11
 
61
- ## Bắt đầu Nhanh
12
+ ## Khởi Đầu Nhanh
62
13
 
63
- ### Cài đặt
14
+ ### 1. Cài Đặt
64
15
 
65
16
  ```bash
66
- # Cài đặt qua npm
67
17
  npm install -g @newpeak/barista-cli
68
-
69
- # Hoặc qua yarn
70
- yarn global add @newpeak/barista-cli
71
-
72
- # Xác minh cài đặt
73
- barista --version
74
18
  ```
75
19
 
76
- ### Cấu hình Ban đầu
20
+ ### 2. Xác Thực
77
21
 
78
22
  ```bash
79
- # 1. Khởi tạo thư mục cấu hình
80
- barista init
81
-
82
- # 2. Đăng nhập bằng thông tin đăng nhập (phương pháp khuyến nghị, tự động đặt môi trường và người thuê)
83
- barista liberica auth login dev your-tenant your-username your-password
23
+ # AI cần credentials để hoạt động thay mặt người dùng
24
+ barista liberica auth login prod-cn your-tenant your-username your-password
84
25
 
85
- # Hoặc đăng nhập tương tác (hệ thống sẽ nhắc thông tin thiếu)
26
+ # Đăng nhập tương tác (nhắc nhập thông tin còn thiếu)
86
27
  barista liberica auth login
87
-
88
- # 3. Xác minh trạng thái đăng nhập
89
- barista auth status
90
-
91
- # 4. Xem ngữ cảnh hiện tại (xác nhận môi trường đã được đặt tự động)
92
- barista context show
93
- ```
94
-
95
- **Lưu ý**: Sau khi sử dụng `barista liberica auth login`, hệ thống tự động đặt ngữ cảnh môi trường hiện tại, vì vậy các lệnh tiếp theo không cần chỉ định tham số `--env` và `--tenant`.
96
-
97
- ### Ví dụ Sử dụng Cơ bản
98
-
99
- ```bash
100
- # Xem ngữ cảnh hiện tại
101
- barista context show
102
-
103
- # Liệt kê tất cả đơn hàng (Liberica)
104
- barista liberica orders list
105
-
106
- # Tìm kiếm sản phẩm (hỗ trợ tìm kiếm mờ)
107
- barista liberica products search --keyword "máy cà phê"
108
-
109
- # Xem danh mục sản phẩm Arabica
110
- barista arabica products public-catalog
111
-
112
- # Tạo đơn hàng sản xuất (chế độ xem trước dry-run)
113
- barista liberica orders create --product-id 123 --quantity 100 --dry-run
114
28
  ```
115
29
 
116
- ---
117
-
118
- ## Thiết kế Kiến trúc
119
-
120
- ### Ánh xạ Môi trường
121
-
122
- #### Liberica (SaaS Quản lý Sản xuất)
123
-
124
- | Môi trường | Định dạng Tên miền | Mô tả |
125
- |------------|-------------------|-------|
126
- | dev | `{tenant}-dev.newpeaksh.com` | Môi trường Phát triển |
127
- | test | `{tenant}-test.newpeaksh.com` | Môi trường Kiểm thử |
128
- | prod-cn | `{tenant}.newpeaksh.com` | Môi trường Sản xuất Trung Quốc |
129
- | prod-jp | `{tenant}.newpeakjp.com` | Môi trường Sản xuất Nhật Bản |
130
-
131
- #### Arabica (Nền tảng Bán hàng)
132
-
133
- | Môi trường | Tên miền | Mô tả |
134
- |------------|----------|-------|
135
- | dev | `arabica-dev.newpeaksh.com` | Môi trường Phát triển |
136
- | test | `arabica-test.newpeaksh.com` | Môi trường Kiểm thử |
137
- | prod-cn | `www.newpeaksh.com` | Môi trường Sản xuất Trung Quốc |
138
- | prod-jp | `members.newpeakjp.com` | Môi trường Sản xuất Nhật Bản |
139
-
140
- ### Cơ chế Xác thực
30
+ ### 3. Tích Hợp AI
141
31
 
142
- Barista CLI sử dụng cơ chế xác thực dựa trên Token:
32
+ ```typescript
33
+ // Trong Claude Code / OpenCode / OpenClaw:
34
+ const orders = await $`barista liberica orders list --env prod-cn --tenant your-tenant --json`
35
+ const { success, data } = JSON.parse(orders.stdout)
143
36
 
144
- ```
145
- ┌─────────────────┐ ┌──────────────────┐ ┌─────────────────┐
146
- │ Barista CLI │────▶│ Auth Server │────▶│ API Servers │
147
- │ │ │ │ │ │
148
- │ • Yêu cầu ĐN │ │ • Xác minh TT │ │ • Xác minh Token│
149
- │ • Lưu Token │◀────│ • Cấp JWT │◀────│ • Trả dữ liệu │
150
- │ (Chuỗi khóa) │ │ │ │ │
151
- └─────────────────┘ └──────────────────┘ └─────────────────┘
37
+ // AI phân tích và xử lý dữ liệu
38
+ if (data.items.length > 0) {
39
+ console.log(`Found ${data.pagination.total} orders`)
40
+ }
152
41
  ```
153
42
 
154
- **Tính năng Bảo mật:**
155
-
156
- - **Lưu trữ Chuỗi khóa**: Token được lưu trữ an toàn trong chuỗi khóa hệ thống (macOS Keychain, Windows Credential, Linux Secret Service)
157
- - **Tự động Bỏ qua Xác thực**: Các giao diện công khai (như truy vấn danh mục sản phẩm) không cần xác thực
158
- - **Cách ly Môi trường**: Mỗi môi trường và ngưới thuê sử dụng Token độc lập
159
- - **Làm mới Token**: Hỗ trợ tự động làm mới Token sắp hết hạn
43
+ **[Xem dụ tích hợp AI →](#ai-integration)**
160
44
 
161
45
  ---
162
46
 
163
- ## Tài liệu Lệnh
164
-
165
- > **Tham chiếu Lệnh Đầy đủ**: Để xem tham chiếu đầy đủ về tất cả các lệnh (bao gồm đã triển khai và đang phát triển), vui lòng xem [Tham chiếu Lệnh](./docs/commands/REFERENCE.md).
166
-
167
- ### Cấu trúc Lệnh
47
+ ## 🤖 Tích Hợp AI
168
48
 
169
- ```
170
- barista <service> <resource> <action> [options]
171
- ```
49
+ Barista CLI được thiết kế cho AI coding assistants. Mọi đầu ra đều có cấu trúc, mọi lỗi đều có thể xử lý.
172
50
 
173
- **Ví dụ:**
174
-
175
- ```bash
176
- barista liberica orders list --page 1 --size 20
177
- barista arabica quotes calculate --product-id 123 --quantity 10
178
- ```
51
+ ### Các AI Tools Được Hỗ Trợ
179
52
 
180
- ### Tùy chọn Toàn cục
53
+ | AI Tool | Phương Thức Tích Hợp | Trạng Thái |
54
+ |---------|----------------------|------------|
55
+ | **Claude Code** | `$` backticks + `--json` | ✅ Đã xác minh |
56
+ | **OpenCode** | Shell command + JSON parse | ✅ Đã xác minh |
57
+ | **OpenClaw** | Shell command + JSON parse | ✅ Đã xác minh |
58
+ | **Cursor** | Terminal integration | ✅ Tương thích |
59
+ | **Continue** | CLI subprocess | ✅ Tương thích |
181
60
 
182
- | Tùy chọn | Mô tả | Ví dụ |
183
- |----------|-------|-------|
184
- | `--env` | Chỉ định môi trường | `--env prod-cn` |
185
- | `--tenant` | Chỉ định ngưới thuê | `--tenant electionjp` |
186
- | `--service` | Chỉ định dịch vụ | `--service liberica` |
187
- | `--dry-run` | Chế độ xem trước | `--dry-run` |
188
- | `--json` | Đầu ra JSON | `--json` |
189
- | `--help` | Hiển thị trợ giúp | `--help` |
61
+ ### Mẫu Tích Hợp
190
62
 
191
- ### Quản lý Ngữ cảnh
63
+ ```typescript
64
+ // 1. Thực thi lệnh với đầu ra JSON
65
+ const result = await $`barista liberica orders list \
66
+ --env prod-cn \
67
+ --tenant your-tenant \
68
+ --status pending \
69
+ --json \
70
+ --page 1 \
71
+ --size 50`
72
+
73
+ // 2. Phân tích phản hồi có cấu trúc
74
+ const { success, data, meta } = JSON.parse(result.stdout)
75
+
76
+ if (!success) {
77
+ throw new Error(`API Error: ${meta.code || meta.error?.code} - ${meta.message || meta.error?.message}`)
78
+ }
192
79
 
193
- Quản ngữ cảnh được sử dụng để chuyển đổi nhanh môi trường làm việc, tránh phải chỉ định tham số môi trường cho mỗi lệnh.
80
+ // 3. Xử dữ liệu
81
+ const pendingOrders = data.items
82
+ console.log(`Found ${data.pagination.total} pending orders`)
194
83
 
195
- ```bash
196
- # Xem ngữ cảnh hiện tại
197
- barista context show
84
+ // 4. Thực thi thao tác an toàn
85
+ for (const order of pendingOrders) {
86
+ // Luôn chạy dry-run trước (an toàn cho AI)
87
+ const preview = await $`barista liberica orders cancel ${order.id} --dry-run`
198
88
 
199
- # dụ đầu ra:
200
- # ┌─────────────┬─────────────────┐
201
- # │ Thuộc tính │ Giá trị │
202
- # ├─────────────┼─────────────────┤
203
- # │ Môi trường │ dev │
204
- # │ Ngưới thuê │ electionjp │
205
- # │ Dịch vụ │ liberica │
206
- # │ Trạng thái │ Đã đăng nhập │
207
- # │ Hết hạn │ 2024-12-31 │
208
- # └─────────────┴─────────────────┘
209
-
210
- # Chuyển đổi môi trường
211
- barista context use-env [dev|test|prod-cn|prod-jp]
212
-
213
- # Chuyển đổi ngưới thuê
214
- barista context use-tenant <tenant-name>
215
-
216
- # Chuyển đổi dịch vụ mặc định
217
- barista context use-service [liberica|arabica]
89
+ // Phân tích preview, xác minh, rồi thực thi với --force
90
+ // ...
91
+ }
218
92
  ```
219
93
 
220
- ### Quản lý Xác thực
221
-
222
- Barista CLI cung cấp hai phương pháp đăng nhập:
94
+ ### Response Envelope
223
95
 
224
- #### 1. Đăng nhập bằng Thông tin đăng nhập (Khuyến nghị)
225
- Sử dụng tên người dùng và mật khẩu cho quy trình xác thực hoàn chỉnh, tự động lấy và lưu Token:
96
+ Tất cả phản hồi JSON đều theo cấu trúc này:
226
97
 
227
- ```bash
228
- # Đăng nhập Liberica bằng thông tin đăng nhập
229
- barista liberica auth login <env> [tenant] [username] [password]
230
-
231
- # Ví dụ: Đăng nhập môi trường kiểm thử Liberica
232
- barista liberica auth login test electionjp admin@shanghai.newpeaksh.com 123456
233
-
234
- # Đăng nhập tương tác (hệ thống sẽ nhắc thông tin thiếu)
235
- barista liberica auth login
236
-
237
- # Sau khi đăng nhập, ngữ cảnh môi trường hiện tại được đặt tự động
98
+ ```json
99
+ {
100
+ "success": true,
101
+ "data": {
102
+ "items": [...],
103
+ "pagination": { "page": 1, "size": 20, "total": 150 }
104
+ },
105
+ "meta": {
106
+ "requestId": "req-abc123",
107
+ "timestamp": "2024-01-15T10:30:00Z",
108
+ "environment": "prod-cn",
109
+ "tenant": "your-tenant"
110
+ }
111
+ }
238
112
  ```
239
113
 
240
- #### 2. Lưu trữ Token trực tiếp
241
- Phù hợp cho các trường hợp đã có JWT Token (ví dụ: lấy từ nguồn khác):
242
-
243
- ```bash
244
- # Lưu trữ Token trực tiếp
245
- barista auth login --service <service> --env <env> [--tenant <tenant>]
246
-
247
- # Ví dụ: Lưu trữ Token môi trường phát triển Liberica
248
- barista auth login --service liberica --env dev --tenant electionjp
249
- # Lời nhắc: Nhập token của bạn: [nhập Token hiện có]
250
-
251
- # Kiểm tra trạng thái đăng nhập
252
- barista auth status
253
-
254
- # Ví dụ đầu ra:
255
- # ✓ Liberica (dev) - Đã đăng nhập (Hết hạn: 2024-12-31)
256
- # ✗ Liberica (test) - Chưa đăng nhập
257
- # ✓ Arabica (prod-cn) - Đã đăng nhập (Hết hạn: 2024-12-30)
258
-
259
- # Đăng xuất (xóa Token)
260
- barista auth logout --service <service> --env <env>
114
+ **Định dạng lỗi:**
261
115
 
262
- # Đăng xuất tất cả môi trường
263
- barista auth logout --all
116
+ ```json
117
+ {
118
+ "success": false,
119
+ "error": {
120
+ "code": "A150001",
121
+ "message": "Order not found"
122
+ },
123
+ "meta": {
124
+ "requestId": "req-xyz789",
125
+ "timestamp": "2024-01-15T10:30:00Z"
126
+ }
127
+ }
264
128
  ```
265
129
 
266
- **Quan trọng**: Sau khi sử dụng `barista liberica auth login`, hệ thống tự động đặt ngữ cảnh môi trường hiện tại, vì vậy các lệnh tiếp theo không cần chỉ định tham số `--env`.
130
+ ### Skills cho Claude Code
267
131
 
268
- ### Lệnh Liberica
269
-
270
- #### Quản lý Đơn hàng
132
+ Cài đặt các file skill có thể tái sử dụng:
271
133
 
272
134
  ```bash
273
- # Liệt đơn hàng (phân trang)
274
- barista liberica orders list [--page <n>] [--size <n>] [--status <status>]
275
-
276
- # Lấy chi tiết đơn hàng
277
- barista liberica orders get <order-id>
278
-
279
- # Tạo đơn hàng
280
- barista liberica orders create \
281
- --product-id <id> \
282
- --quantity <n> \
283
- [--delivery-date <date>] \
284
- [--note <text>]
285
-
286
- # Hủy đơn hàng
287
- barista liberica orders cancel <order-id> [--reason <text>]
135
+ # Skills nằm tại ~/.barista/claude/skills/
136
+ barista skills install
288
137
  ```
289
138
 
290
- #### Quản Sản phẩm
139
+ **Các skills sẵn:**
140
+ - `orders.md` — Quy trình quản lý đơn hàng
141
+ - `products.md` — Tìm kiếm và đồng bộ sản phẩm
142
+ - `warehouses.md` — Thao tác kho hàng
143
+ - `subscriptions.md` — Quản lý đăng ký Arabica
291
144
 
292
- ```bash
293
- # Tìm kiếm sản phẩm
294
- barista liberica products search --keyword <keyword> [--category <id>]
145
+ ---
295
146
 
296
- # Lấy chi tiết sản phẩm
297
- barista liberica products get <product-id>
147
+ ## 🚀 Tính Năng
298
148
 
299
- # Lấy danh sách sản phẩm công khai (không cần xác thực)
300
- barista liberica products public-list [--category <id>] [--page <n>]
301
- ```
149
+ ### Thiết Kế AI-First
302
150
 
303
- #### Kế hoạch Sản xuất
151
+ | Tính Năng | Mô Tả |
152
+ |-----------|--------|
153
+ | 🤖 **JSON-First Output** | Tất cả lệnh hỗ trợ `--json` để AI phân tích |
154
+ | 📦 **Structured Responses** | Cấu trúc nhất quán `{success, data, meta}` |
155
+ | 🔄 **Idempotent Operations** | An toàn cho AI retry loops |
156
+ | 🛡️ **Dry-Run by Default** | Xem trước các thao tác nguy hiểm trước khi thực thi |
157
+ | 🔐 **Secure Storage** | Credentials lưu trong system keychain, không phải env vars |
304
158
 
305
- ```bash
306
- # Xem lịch sản xuất
307
- barista liberica production schedule [--start-date <date>] [--end-date <date>]
159
+ ### Kết Nối Doanh Nghiệp
308
160
 
309
- # Lên lịch lại
310
- barista liberica production reschedule <order-id> --new-date <date> [--dry-run]
161
+ | Dịch Vụ | Khả Năng |
162
+ |---------|----------|
163
+ | ☕ **Liberica** | Đơn hàng, sản phẩm, tồn kho, kho hàng, lập kế hoạch sản xuất |
164
+ | 🛒 **Arabica** | Gói đăng ký, thanh toán, hóa đơn, quản lý doanh nghiệp |
165
+ | 🔗 **Cross-Service** | Báo giá từ đơn hàng, đồng bộ giữa các hệ thống |
311
166
 
312
- # Truy vấn công suất
313
- barista liberica production capacity [--date <date>] [--line <line-id>]
314
- ```
167
+ ### An Toàn Vận Hành
315
168
 
316
- ### Lệnh Arabica
169
+ - 📊 **Audit Trail** — Mỗi thao tác được ghi log với request ID
170
+ - ⚠️ **Confirmation Guards** — `--dry-run` / `--force` cho các thao tác ghi
171
+ - 🏢 **Multi-Tenant Isolation** — Credentials được cô lập theo từng tenant
317
172
 
318
- #### Quản lý Sản phẩm
173
+ ---
319
174
 
320
- ```bash
321
- # Liệt kê sản phẩm
322
- barista arabica products list [--page <n>] [--size <n>] [--category <id>]
175
+ ## 🔧 Tham Khảo Lệnh
323
176
 
324
- # Tìm kiếm sản phẩm
325
- barista arabica products search --keyword <keyword>
177
+ ### Mẫu Bản
326
178
 
327
- # Lấy danh mục sản phẩm (giao diện công khai)
328
- barista arabica products public-catalog [--lang <zh|jp|en>]
329
179
  ```
330
-
331
- #### Quản lý Báo giá
332
-
333
- ```bash
334
- # Tính báo giá
335
- barista arabica quotes calculate \
336
- --product-id <id> \
337
- --quantity <n> \
338
- [--options <json>]
339
-
340
- # Tạo báo giá
341
- barista arabica quotes create \
342
- --customer-id <id> \
343
- --items <json> \
344
- [--valid-days <n>]
180
+ barista <service> <resource> <action> [options]
345
181
  ```
346
182
 
347
- #### Quản Khách hàng
183
+ ### Các Tùy Chọn Toàn Cục
348
184
 
349
- ```bash
350
- # Tìm kiếm khách hàng
351
- barista arabica customers search --keyword <keyword> [--type <type>]
352
-
353
- # Lấy chi tiết khách hàng
354
- barista arabica customers get <customer-id>
355
- ```
185
+ | Tùy Chọn | Mô Tả | Mặc Định |
186
+ |----------|--------|----------|
187
+ | `--env` | Môi trường (dev\|test\|prod-cn\|prod-jp) | `dev` |
188
+ | `--tenant` | Tên tenant | - |
189
+ | `--json` | Đầu ra JSON | `false` |
190
+ | `--dry-run` | Chế độ xem trước (khuyến nghị cho AI) | `false` |
191
+ | `--force` | Bỏ qua xác nhận | `false` |
192
+ | `--page` | Số trang | `1` |
193
+ | `--size` | Kích thước trang (tối đa) | `20` |
356
194
 
357
- ### Lệnh Liên dịch vụ
195
+ ### Tham Khảo Nhanh
358
196
 
359
- Các lệnh liên dịch vụ cho phép đồng bộ dữ liệu và kết nối quy trình kinh doanh giữa Liberica và Arabica.
197
+ | Lệnh | Tả |
198
+ |------|--------|
199
+ | `barista context show` | Hiển thị context env/tenant hiện tại |
200
+ | `barista context use-env <env>` | Chuyển đổi môi trường |
201
+ | `barista liberica orders list --json` | Liệt kê đơn hàng (định dạng AI) |
202
+ | `barista liberica orders get <id> --json` | Xem chi tiết đơn hàng |
203
+ | `barista liberica orders create --dry-run ...` | Xem trước tạo mới |
204
+ | `barista liberica products search --keyword <kw> --json` | Tìm kiếm sản phẩm |
205
+ | `barista arabica plans list --json` | Liệt kê gói đăng ký |
206
+ | `barista arabica invoices list --json` | Liệt kê hóa đơn |
360
207
 
361
- ```bash
362
- # Tạo báo giá từ đơn hàng
363
- barista cross quote-from-order <order-id> [--target-service arabica]
364
-
365
- # Ví dụ đầu ra:
366
- # ✓ Đã tạo báo giá
367
- # ┌──────────┬────────────┐
368
- # │ Thuộc tính│ Giá trị │
369
- # ├──────────┼────────────┤
370
- # │ ID ĐH │ 12345 │
371
- # │ ID Báo giá│ QT-2024-001│
372
- # │ Số tiền │ ¥50,000 │
373
- # │ Hiệu lực │ 30 ngày │
374
- # └──────────┴────────────┘
375
-
376
- # Đồng bộ trạng thái đơn hàng sang Arabica
377
- barista cross sync-order <order-id> [--direction liberica-to-arabica]
378
- ```
208
+ **[→ Tham Khảo Lệnh Chi Tiết](./docs/commands/REFERENCE.md)**
379
209
 
380
210
  ---
381
211
 
382
- ## Tính năng Nâng cao
212
+ ## 🛡️ Hướng Dẫn An Toàn AI
383
213
 
384
- ### Chế độ Dry-Run
214
+ ### 1. Luôn Chạy Dry-Run Trước
385
215
 
386
- Chế độ Dry-Run cho phép bạn xem trước tác động của thao tác ghi trước khi thực hiện, tránh lỗi.
216
+ ```typescript
217
+ // ❌ Sai — Thực thi mù quáng
218
+ await $`barista liberica orders cancel 12345`
387
219
 
388
- ```bash
389
- # Tất cả thao tác ghi đều hỗ trợ tùy chọn --dry-run
390
- barista liberica orders create --product-id 123 --quantity 100 --dry-run
391
-
392
- # Ví dụ đầu ra:
393
- # 🔍 Chế độ Dry-Run: Thao tác sẽ không được thực thi
394
- # ┌─────────────────┬──────────────────────┐
395
- # │ Thao tác │ Tạo đơn hàng │
396
- # ├─────────────────┼──────────────────────┤
397
- # │ Sản phẩm │ Máy cà phê Pro (ID: 123) │
398
- # │ Số lượng │ 100 │
399
- # │ Số tiền dự kiến │ ¥50,000 │
400
- # │ Ngày giao dự kiến│ 2024-12-31 │
401
- # │ Tác động │ Thêm 1 bản ghi đơn hàng │
402
- # └─────────────────┴──────────────────────┘
403
- #
404
- # ⚠️ Xác nhận thực hiện? Thêm tùy chọn --confirm hoặc xóa --dry-run
220
+ // ✅ Đúng — Xem trước trước
221
+ const preview = await $`barista liberica orders cancel 12345 --dry-run`
222
+ // Phân tích preview, xác minh, rồi:
223
+ await $`barista liberica orders cancel 12345 --force`
405
224
  ```
406
225
 
407
- **Thao tác Dry-Run Mặc định:**
408
-
409
- Các thao tác phá hủy sau có chế độ Dry-Run được bật mặc định và yêu cầu xác nhận rõ ràng:
410
-
411
- - Hủy đơn hàng
412
- - Xóa sản phẩm
413
- - Cập nhật hàng loạt
414
-
415
- ### Định dạng Đầu ra JSON
416
-
417
- Barista CLI hỗ trợ đầu ra JSON để xử lý script và tích hợp AI:
418
-
419
- ```bash
420
- barista liberica orders list --json
226
+ ### 2. Kiểm Tra Success Trước Khi Tiếp Tục
421
227
 
422
- # Ví dụ đầu ra:
423
- {
424
- "success": true,
425
- "data": {
426
- "items": [
427
- {
428
- "id": "12345",
429
- "productName": "Máy cà phê Pro",
430
- "quantity": 100,
431
- "status": "in_production",
432
- "createdAt": "2024-01-15T10:30:00Z"
433
- }
434
- ],
435
- "pagination": {
436
- "page": 1,
437
- "size": 20,
438
- "total": 150
439
- }
440
- }
228
+ ```typescript
229
+ const result = JSON.parse(stdout)
230
+ if (!result.success) {
231
+ // Xử lý lỗi, không tiếp tục
232
+ throw new Error(result.error?.message || result.meta?.message)
441
233
  }
442
234
  ```
443
235
 
444
- ### Định dạng Xuất CSV
445
-
446
- Barista CLI hỗ trợ xuất định dạng CSV, phù hợp cho phân tích dữ liệu và xử lý Excel:
236
+ ### 3. Sử Dụng Request ID Để Debug
447
237
 
448
- ```bash
449
- # Xuất dữ liệu loại từ điển dưới dạng CSV
450
- barista liberica dict-types tenant-items --lang ja --all --csv --output ./dict-data.csv
451
-
452
- # Tính năng đầu ra:
453
- # • Mã hóa UTF-8 with BOM đảm bảo nhận dạng chữ Trung Quốc chính xác trong Excel
454
- # • Tự động thoát ký tự đặc biệt (dấu phẩy, dấu ngoặc kép, ngắt dòng)
455
- # • Hỗ trợ đường dẫn tệp đầu ra tùy chỉnh
456
- # • Có thể kết hợp với --json để có cả hai định dạng đầu ra
238
+ ```typescript
239
+ const { meta } = JSON.parse(stdout)
240
+ console.log(`Request ID: ${meta.requestId}`)
457
241
  ```
458
242
 
459
- Tệp CSV sử dụng hóa UTF-8 with BOM để đảm bảo hiển thị chính xác các ký tự Unicode như tiếng Trung, tiếng Nhật, tiếng Việt trong Microsoft Excel và các công cụ khác.
243
+ ### 4. Tuân Thủ Rate Limits
244
+
245
+ - Thêm độ trễ giữa các thao tác hàng loạt
246
+ - Sử dụng `--size 100` cho fetch hàng loạt
247
+ - Cache responses khi phù hợp
460
248
 
461
249
  ---
462
250
 
463
- ## Cấu hình
251
+ ## ⚙️ Cấu Hình
464
252
 
465
- ### Tệp Cấu hình
253
+ ### Vị Trí File
466
254
 
467
- Tệp cấu hình nằm tại `~/.barista/config.yaml`:
255
+ `~/.barista/config.yaml`
468
256
 
469
- ```yaml
470
- # Tệp cấu hình Barista CLI
257
+ ### Cấu Hình Nhanh
471
258
 
472
- # Cài đặt ngữ cảnh mặc định
259
+ ```yaml
473
260
  defaults:
474
- env: dev
475
- tenant: electionjp
261
+ env: prod-cn
262
+ tenant: your-tenant
476
263
  service: liberica
477
264
 
478
- # Cấu hình môi trường
479
265
  environments:
480
- dev:
481
- liberica:
482
- baseUrl: "https://{tenant}-dev.newpeaksh.com"
483
- timeout: 30000
484
- arabica:
485
- baseUrl: "https://arabica-dev.newpeaksh.com"
486
- timeout: 30000
487
-
488
- test:
489
- liberica:
490
- baseUrl: "https://{tenant}-test.newpeaksh.com"
491
- timeout: 30000
492
- arabica:
493
- baseUrl: "https://arabica-test.newpeaksh.com"
494
- timeout: 30000
495
-
496
266
  prod-cn:
497
267
  liberica:
498
268
  baseUrl: "https://{tenant}.newpeaksh.com"
@@ -500,258 +270,71 @@ environments:
500
270
  arabica:
501
271
  baseUrl: "https://www.newpeaksh.com"
502
272
  timeout: 60000
503
-
504
- prod-jp:
505
- liberica:
506
- baseUrl: "https://{tenant}.newpeakjp.com"
507
- timeout: 60000
508
- arabica:
509
- baseUrl: "https://members.newpeakjp.com"
510
- timeout: 60000
511
-
512
- # Cấu hình đầu ra
513
- output:
514
- format: table # table | json
515
- color: true
516
- timestamp: true
517
273
  ```
518
274
 
519
- ### Cấu hình Đa ngưới thuê
520
-
521
- Hỗ trợ cấu hình nhiều ngưới thuê để chuyển đổi nhanh:
275
+ ### Xác Thực
522
276
 
523
277
  ```bash
524
- # Thêm cấu hình ngưới thuê
525
- barista config add-tenant \
526
- --name customer-a \
527
- --liberica-id customer-a-id \
528
- --arabica-id customer-a-arabica-id
278
+ # Đăng nhập bằng credentials (khuyến nghị)
279
+ barista liberica auth login <env> <tenant> <username> <password>
529
280
 
530
- # Liệt ngưới thuê đã cấu hình
531
- barista config list-tenants
281
+ # Kiểm tra trạng thái đăng nhập
282
+ barista auth status
532
283
 
533
- # Chuyển đổi ngưới thuê nhanh
534
- barista context use-tenant customer-a
284
+ # Đăng xuất
285
+ barista auth logout --service liberica --env prod-cn
535
286
  ```
536
287
 
537
288
  ---
538
289
 
539
- ## Tích hợp AI
540
-
541
- Barista CLI được tối ưu hóa cho trợ lý lập trình AI, đặc biệt là Claude Code.
542
-
543
- ### Ví dụ Sử dụng Claude Code
544
-
545
- ```typescript
546
- // Sử dụng Barista CLI trong Claude Code
547
- // Ví dụ: Lấy danh sách đơn hàng và phân tích
548
-
549
- const result = await $`barista liberica orders list --json --page 1 --size 10`;
550
- const orders = JSON.parse(result.stdout);
551
-
552
- // Phân tích dữ liệu đơn hàng
553
- const analysis = orders.data.items.map(order => ({
554
- id: order.id,
555
- status: order.status,
556
- amount: order.amount
557
- }));
558
- ```
559
-
560
- ### Tệp Skills
561
-
562
- Barista CLI cung cấp các tệp Claude Code Skills, nằm tại:
563
-
564
- ```
565
- ~/.barista/claude/skills/
566
- ├── orders.md # Kỹ năng quản lý đơn hàng
567
- ├── products.md # Kỹ năng quản lý sản phẩm
568
- ├── quotes.md # Kỹ năng quản lý báo giá
569
- └── customers.md # Kỹ năng quản lý khách hàng
570
- ```
571
-
572
- **Ví dụ Tệp Skills:**
290
+ ## Xử Lý Sự Cố
573
291
 
574
- ```markdown
575
- # Kỹ năng Quản lý Đơn hàng
576
-
577
- ## Liệt kê Đơn hàng Chờ xử lý
578
-
579
- Khi ngưới dùng hỏi về đơn hàng chờ xử lý:
580
-
581
- 1. Thực thi lệnh: barista liberica orders list --status pending --json
582
- 2. Phân tích JSON trả về
583
- 3. Tóm tắt số lượng đơn hàng và tổng số tiền
584
- 4. Liệt kê thông tin quan trọng của 5 đơn hàng đầu tiên
585
-
586
- ## Tạo Đơn hàng Mới
587
-
588
- Khi ngưới dùng cần tạo đơn hàng:
589
-
590
- 1. Xác nhận ID sản phẩm và số lượng
591
- 2. Sử dụng dry-run để xem trước: barista liberica orders create --dry-run ...
592
- 3. Thực thi lệnh thực sau khi ngưới dùng xác nhận
593
- ```
594
-
595
- ### Đầu ra Thân thiện với AI
596
-
597
- Tất cả lệnh đều hỗ trợ tùy chọn `--json`, trả về dữ liệu JSON có cấu trúc:
292
+ ### Lỗi Xác Thực
598
293
 
599
294
  ```bash
600
- # Truy vấn với đầu ra có cấu trúc
601
- barista liberica orders get 12345 --json
602
-
603
- {
604
- "success": true,
605
- "data": {
606
- "id": "12345",
607
- "status": "in_production",
608
- "product": {
609
- "id": "100",
610
- "name": "Máy cà phê Pro"
611
- },
612
- "quantity": 100,
613
- "amount": 50000,
614
- "timeline": {
615
- "created": "2024-01-15T10:30:00Z",
616
- "delivery": "2024-02-15"
617
- }
618
- },
619
- "meta": {
620
- "requestId": "req-abc123",
621
- "timestamp": "2024-01-15T10:30:00Z"
622
- }
623
- }
624
- ```
625
-
626
- ---
627
-
628
- ## Hướng dẫn Phát triển
295
+ # Kiểm tra trạng thái hiện tại
296
+ barista auth status
629
297
 
630
- ### Cấu trúc Dự án
298
+ # Đăng nhập lại
299
+ barista liberica auth login prod-cn your-tenant your-username your-password
631
300
 
632
- ```
633
- coffee-barista-cli/
634
- ├── bin/
635
- │ └── barista.js # Tệp khởi đầu
636
- ├── src/
637
- │ ├── commands/ # Triển khai lệnh
638
- │ │ ├── context/ # Lệnh quản lý ngữ cảnh
639
- │ │ ├── auth/ # Lệnh xác thực
640
- │ │ ├── liberica/ # Lệnh dịch vụ Liberica
641
- │ │ │ ├── orders.js
642
- │ │ │ ├── products.js
643
- │ │ │ └── production.js
644
- │ │ ├── arabica/ # Lệnh dịch vụ Arabica
645
- │ │ │ ├── products.js
646
- │ │ │ ├── quotes.js
647
- │ │ │ └── customers.js
648
- │ │ └── cross/ # Lệnh liên dịch vụ
649
- │ ├── core/ # Mô-đun cốt lõi
650
- │ │ ├── auth.js # Quản lý xác thực
651
- │ │ ├── config.js # Quản lý cấu hình
652
- │ │ ├── context.js # Quản lý ngữ cảnh
653
- │ │ └── api-client.js # Client API
654
- │ ├── utils/ # Hàm tiện ích
655
- │ │ ├── formatter.js # Định dạng đầu ra
656
- │ │ ├── validator.js # Xác thực tham số
657
- │ │ └── keychain.js # Thao tác chuỗi khóa
658
- │ └── templates/ # Tệp mẫu
659
- ├── skills/ # Claude Code Skills
660
- ├── tests/ # Tệp kiểm thử
661
- ├── package.json
662
- └── README.md
301
+ # Kiểm tra context
302
+ barista context show
663
303
  ```
664
304
 
665
- ### Phát triển Local
305
+ ### Lỗi API
666
306
 
667
307
  ```bash
668
- # 1. Clone kho lưu trữ
669
- git clone https://gitlab.newpeaksh.com/coffee/coffee-barista-cli.git
670
- cd coffee-barista-cli
671
-
672
- # 2. Cài đặt phụ thuộc
673
- npm install
674
-
675
- # 3. Liên kết toàn cục (chế độ phát triển)
676
- npm link
677
-
678
- # 4. Xác minh liên kết
679
- barista --version
680
-
681
- # 5. Chạy kiểm thử
682
- npm test
308
+ # Luôn sử dụng --json để nhận mã lỗi
309
+ barista liberica orders list --json
683
310
 
684
- # 6. Kiểm tra
685
- npm run lint
311
+ # Phản hồi lỗi bao gồm requestId để debug
312
+ # "requestId": "req-abc123"
686
313
  ```
687
314
 
688
- ### Thêm Lệnh Mới
689
-
690
- **Quan trọng**: Lệnh mới phải tuân theo [Đặc tả Thiết kế Lệnh](./docs/COMMAND_DESIGN_SPEC.md), bao gồm viết tài liệu thiết kế, đánh giá kỹ thuật và các quy trình hoàn chỉnh khác.
691
-
692
- Tham khảo chi tiết tại:
693
- - [Tham chiếu Lệnh Đầy đủ](./docs/commands/REFERENCE.md) - Danh sách tất cả lệnh và ưu tiên phát triển
694
- - [Tài liệu Đặc tả Thiết kế Lệnh](./docs/COMMAND_DESIGN_SPEC.md#5-quy-trình-phát-triển-lệnh)
695
- - [Hướng dẫn Phát triển Lệnh](./docs/COMMANDS.md)
696
-
697
- ---
698
-
699
- ## Hướng dẫn Đóng góp
700
-
701
- Chúng tôi hoan nghênh mọi hình thức đóng góp, bao gồm nhưng không giới hạn ở:
702
-
703
- - 🐛 Báo cáo lỗi
704
- - 💡 Đề xuất tính năng mới
705
- - 📝 Cải thiện tài liệu
706
- - 🔧 Gửi bản sửa lỗi
707
- - ✨ Thêm tính năng mới
708
-
709
- ### Quy ước Commit
710
-
711
- Vui lòng tuân theo quy chuẩn [Conventional Commits](https://www.conventionalcommits.org/):
315
+ ### Vấn Đề Timeout
712
316
 
713
317
  ```bash
714
- # Sửa lỗi
715
- fix: sửa lỗi phân trang danh sách đơn hàng
716
-
717
- # Thêm tính năng
718
- feat: thêm lệnh truy vấn tồn kho
719
-
720
- # Cập nhật tài liệu
721
- docs: cập nhật ánh xạ môi trường trong README
318
+ # Chuyển sang môi trường gần hơn
319
+ barista context use-env dev
722
320
 
723
- # Tái cấu trúc
724
- refactor: tái cấu trúc xử lý lỗi client API
321
+ # Hoặc điều chỉnh timeout trong config.yaml
725
322
  ```
726
323
 
727
- ### Quy trình Phát triển
728
-
729
- 1. Fork kho lưu trữ này
730
- 2. Tạo nhánh tính năng: `git checkout -b feature/my-feature`
731
- 3. Commit thay đổi: `git commit -m 'feat: add some feature'`
732
- 4. Push nhánh: `git push origin feature/my-feature`
733
- 5. Tạo Pull Request
734
-
735
324
  ---
736
325
 
737
- ## Dự án Liên quan
326
+ ## 📚 Các Dự Án Liên Quan
738
327
 
739
- | Dự án | Mô tả | Liên kết |
740
- |-------|-------|----------|
741
- | ☕ Liberica Backend | Backend SaaS QuảnSản xuất | [coffee-liberica-end](https://gitlab.newpeaksh.com/coffee/coffee-liberica-end) |
742
- | 🖥️ Liberica Frontend | Frontend Web QuảnSản xuất | [coffee-liberica-front](https://gitlab.newpeaksh.com/coffee/coffee-liberica-front) |
743
- | 📱 Liberica Mobile | Di động QuảnSản xuất | [coffee-liberica-mobile-front](https://gitlab.newpeaksh.com/coffee/coffee-liberica-mobile-front) |
744
- | 🛒 Arabica Backend | Backend Nền tảng Bán hàng | [coffee-arabica-end](https://gitlab.newpeaksh.com/coffee/coffee-arabica-end) |
745
- | 🌐 Arabica Frontend | Frontend Nền tảng Bán hàng | [coffee-arabica-front](https://gitlab.newpeaksh.com/coffee/coffee-arabica-front) |
328
+ | Dự Án | Mô Tả |
329
+ |--------|--------|
330
+ | ☕ Liberica Backend | SaaS backend quản sản xuất |
331
+ | 🖥️ Liberica Frontend | Web UI quản sản xuất |
332
+ | 📱 Liberica Mobile | Ứng dụng di động quảnsản xuất |
333
+ | 🛒 Arabica Backend | SaaS backend đăng trực tuyến |
334
+ | 🌐 Arabica Frontend | Web UI đăng trực tuyến |
746
335
 
747
336
  ---
748
337
 
749
- ## Giấy phép
338
+ ## 📄 Giấy Phép
750
339
 
751
340
  [MIT](LICENSE) © Newpeak Technology
752
-
753
- ---
754
-
755
- <p align="center">
756
- Được cung cấp bởi ☕
757
- </p>