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