@newpeak/barista-cli 0.1.4 → 0.1.6

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 (222) hide show
  1. package/dist/commands/liberica/auth/index.d.ts.map +1 -1
  2. package/dist/commands/liberica/auth/index.js +5 -0
  3. package/dist/commands/liberica/auth/index.js.map +1 -1
  4. package/dist/commands/liberica/currency/create.d.ts +3 -0
  5. package/dist/commands/liberica/currency/create.d.ts.map +1 -0
  6. package/dist/commands/liberica/currency/create.js +168 -0
  7. package/dist/commands/liberica/currency/create.js.map +1 -0
  8. package/dist/commands/liberica/currency/delete.d.ts +3 -0
  9. package/dist/commands/liberica/currency/delete.d.ts.map +1 -0
  10. package/dist/commands/liberica/currency/delete.js +122 -0
  11. package/dist/commands/liberica/currency/delete.js.map +1 -0
  12. package/dist/commands/liberica/currency/disable.d.ts +3 -0
  13. package/dist/commands/liberica/currency/disable.d.ts.map +1 -0
  14. package/dist/commands/liberica/currency/disable.js +145 -0
  15. package/dist/commands/liberica/currency/disable.js.map +1 -0
  16. package/dist/commands/liberica/currency/enable.d.ts +3 -0
  17. package/dist/commands/liberica/currency/enable.d.ts.map +1 -0
  18. package/dist/commands/liberica/currency/enable.js +125 -0
  19. package/dist/commands/liberica/currency/enable.js.map +1 -0
  20. package/dist/commands/liberica/currency/get.d.ts +3 -0
  21. package/dist/commands/liberica/currency/get.d.ts.map +1 -0
  22. package/dist/commands/liberica/currency/get.js +80 -0
  23. package/dist/commands/liberica/currency/get.js.map +1 -0
  24. package/dist/commands/liberica/currency/index.d.ts +3 -0
  25. package/dist/commands/liberica/currency/index.d.ts.map +1 -0
  26. package/dist/commands/liberica/currency/index.js +21 -0
  27. package/dist/commands/liberica/currency/index.js.map +1 -0
  28. package/dist/commands/liberica/currency/list.d.ts +3 -0
  29. package/dist/commands/liberica/currency/list.d.ts.map +1 -0
  30. package/dist/commands/liberica/currency/list.js +106 -0
  31. package/dist/commands/liberica/currency/list.js.map +1 -0
  32. package/dist/commands/liberica/currency/update.d.ts +3 -0
  33. package/dist/commands/liberica/currency/update.d.ts.map +1 -0
  34. package/dist/commands/liberica/currency/update.js +123 -0
  35. package/dist/commands/liberica/currency/update.js.map +1 -0
  36. package/dist/commands/liberica/index.d.ts.map +1 -1
  37. package/dist/commands/liberica/index.js +11 -0
  38. package/dist/commands/liberica/index.js.map +1 -1
  39. package/dist/commands/liberica/materials/create.d.ts +3 -0
  40. package/dist/commands/liberica/materials/create.d.ts.map +1 -0
  41. package/dist/commands/liberica/materials/create.js +154 -0
  42. package/dist/commands/liberica/materials/create.js.map +1 -0
  43. package/dist/commands/liberica/materials/delete.d.ts +3 -0
  44. package/dist/commands/liberica/materials/delete.d.ts.map +1 -0
  45. package/dist/commands/liberica/materials/delete.js +104 -0
  46. package/dist/commands/liberica/materials/delete.js.map +1 -0
  47. package/dist/commands/liberica/materials/disable.d.ts +3 -0
  48. package/dist/commands/liberica/materials/disable.d.ts.map +1 -0
  49. package/dist/commands/liberica/materials/disable.js +146 -0
  50. package/dist/commands/liberica/materials/disable.js.map +1 -0
  51. package/dist/commands/liberica/materials/enable.d.ts +3 -0
  52. package/dist/commands/liberica/materials/enable.d.ts.map +1 -0
  53. package/dist/commands/liberica/materials/enable.js +126 -0
  54. package/dist/commands/liberica/materials/enable.js.map +1 -0
  55. package/dist/commands/liberica/materials/get.d.ts +3 -0
  56. package/dist/commands/liberica/materials/get.d.ts.map +1 -0
  57. package/dist/commands/liberica/materials/get.js +71 -0
  58. package/dist/commands/liberica/materials/get.js.map +1 -0
  59. package/dist/commands/liberica/materials/index.d.ts +3 -0
  60. package/dist/commands/liberica/materials/index.d.ts.map +1 -0
  61. package/dist/commands/liberica/materials/index.js +21 -0
  62. package/dist/commands/liberica/materials/index.js.map +1 -0
  63. package/dist/commands/liberica/materials/list.d.ts +3 -0
  64. package/dist/commands/liberica/materials/list.d.ts.map +1 -0
  65. package/dist/commands/liberica/materials/list.js +107 -0
  66. package/dist/commands/liberica/materials/list.js.map +1 -0
  67. package/dist/commands/liberica/materials/update.d.ts +3 -0
  68. package/dist/commands/liberica/materials/update.d.ts.map +1 -0
  69. package/dist/commands/liberica/materials/update.js +118 -0
  70. package/dist/commands/liberica/materials/update.js.map +1 -0
  71. package/dist/commands/liberica/suppliers/create.d.ts +3 -0
  72. package/dist/commands/liberica/suppliers/create.d.ts.map +1 -0
  73. package/dist/commands/liberica/suppliers/create.js +140 -0
  74. package/dist/commands/liberica/suppliers/create.js.map +1 -0
  75. package/dist/commands/liberica/suppliers/delete.d.ts +3 -0
  76. package/dist/commands/liberica/suppliers/delete.d.ts.map +1 -0
  77. package/dist/commands/liberica/suppliers/delete.js +102 -0
  78. package/dist/commands/liberica/suppliers/delete.js.map +1 -0
  79. package/dist/commands/liberica/suppliers/disable.d.ts +3 -0
  80. package/dist/commands/liberica/suppliers/disable.d.ts.map +1 -0
  81. package/dist/commands/liberica/suppliers/disable.js +144 -0
  82. package/dist/commands/liberica/suppliers/disable.js.map +1 -0
  83. package/dist/commands/liberica/suppliers/enable.d.ts +3 -0
  84. package/dist/commands/liberica/suppliers/enable.d.ts.map +1 -0
  85. package/dist/commands/liberica/suppliers/enable.js +124 -0
  86. package/dist/commands/liberica/suppliers/enable.js.map +1 -0
  87. package/dist/commands/liberica/suppliers/get.d.ts +3 -0
  88. package/dist/commands/liberica/suppliers/get.d.ts.map +1 -0
  89. package/dist/commands/liberica/suppliers/get.js +75 -0
  90. package/dist/commands/liberica/suppliers/get.js.map +1 -0
  91. package/dist/commands/liberica/suppliers/index.d.ts +3 -0
  92. package/dist/commands/liberica/suppliers/index.d.ts.map +1 -0
  93. package/dist/commands/liberica/suppliers/index.js +21 -0
  94. package/dist/commands/liberica/suppliers/index.js.map +1 -0
  95. package/dist/commands/liberica/suppliers/list.d.ts +3 -0
  96. package/dist/commands/liberica/suppliers/list.d.ts.map +1 -0
  97. package/dist/commands/liberica/suppliers/list.js +100 -0
  98. package/dist/commands/liberica/suppliers/list.js.map +1 -0
  99. package/dist/commands/liberica/suppliers/update.d.ts +3 -0
  100. package/dist/commands/liberica/suppliers/update.d.ts.map +1 -0
  101. package/dist/commands/liberica/suppliers/update.js +122 -0
  102. package/dist/commands/liberica/suppliers/update.js.map +1 -0
  103. package/dist/commands/liberica/uoms/create.d.ts +3 -0
  104. package/dist/commands/liberica/uoms/create.d.ts.map +1 -0
  105. package/dist/commands/liberica/uoms/create.js +120 -0
  106. package/dist/commands/liberica/uoms/create.js.map +1 -0
  107. package/dist/commands/liberica/uoms/delete.d.ts +3 -0
  108. package/dist/commands/liberica/uoms/delete.d.ts.map +1 -0
  109. package/dist/commands/liberica/uoms/delete.js +104 -0
  110. package/dist/commands/liberica/uoms/delete.js.map +1 -0
  111. package/dist/commands/liberica/uoms/disable.d.ts +3 -0
  112. package/dist/commands/liberica/uoms/disable.d.ts.map +1 -0
  113. package/dist/commands/liberica/uoms/disable.js +146 -0
  114. package/dist/commands/liberica/uoms/disable.js.map +1 -0
  115. package/dist/commands/liberica/uoms/enable.d.ts +3 -0
  116. package/dist/commands/liberica/uoms/enable.d.ts.map +1 -0
  117. package/dist/commands/liberica/uoms/enable.js +126 -0
  118. package/dist/commands/liberica/uoms/enable.js.map +1 -0
  119. package/dist/commands/liberica/uoms/get.d.ts +3 -0
  120. package/dist/commands/liberica/uoms/get.d.ts.map +1 -0
  121. package/dist/commands/liberica/uoms/get.js +71 -0
  122. package/dist/commands/liberica/uoms/get.js.map +1 -0
  123. package/dist/commands/liberica/uoms/index.d.ts +3 -0
  124. package/dist/commands/liberica/uoms/index.d.ts.map +1 -0
  125. package/dist/commands/liberica/uoms/index.js +21 -0
  126. package/dist/commands/liberica/uoms/index.js.map +1 -0
  127. package/dist/commands/liberica/uoms/list.d.ts +3 -0
  128. package/dist/commands/liberica/uoms/list.d.ts.map +1 -0
  129. package/dist/commands/liberica/uoms/list.js +98 -0
  130. package/dist/commands/liberica/uoms/list.js.map +1 -0
  131. package/dist/commands/liberica/uoms/update.d.ts +3 -0
  132. package/dist/commands/liberica/uoms/update.d.ts.map +1 -0
  133. package/dist/commands/liberica/uoms/update.js +115 -0
  134. package/dist/commands/liberica/uoms/update.js.map +1 -0
  135. package/dist/core/api/client.d.ts +34 -0
  136. package/dist/core/api/client.d.ts.map +1 -1
  137. package/dist/core/api/client.js +650 -0
  138. package/dist/core/api/client.js.map +1 -1
  139. package/dist/index.js +1 -1
  140. package/dist/types/currency.d.ts +74 -0
  141. package/dist/types/currency.d.ts.map +1 -0
  142. package/dist/types/currency.js +2 -0
  143. package/dist/types/currency.js.map +1 -0
  144. package/dist/types/index.d.ts +5 -1
  145. package/dist/types/index.d.ts.map +1 -1
  146. package/dist/types/material.d.ts +49 -0
  147. package/dist/types/material.d.ts.map +1 -0
  148. package/dist/types/material.js +2 -0
  149. package/dist/types/material.js.map +1 -0
  150. package/dist/types/supplier.d.ts +53 -0
  151. package/dist/types/supplier.d.ts.map +1 -0
  152. package/dist/types/supplier.js +2 -0
  153. package/dist/types/supplier.js.map +1 -0
  154. package/dist/types/uom.d.ts +47 -0
  155. package/dist/types/uom.d.ts.map +1 -0
  156. package/dist/types/uom.js +2 -0
  157. package/dist/types/uom.js.map +1 -0
  158. package/docs/COMMAND_DESIGN_SPEC.md +42 -13
  159. package/docs/commands/liberica/currency/create.md +145 -0
  160. package/docs/commands/liberica/currency/delete.md +121 -0
  161. package/docs/commands/liberica/currency/disable.md +119 -0
  162. package/docs/commands/liberica/currency/enable.md +115 -0
  163. package/docs/commands/liberica/currency/get.md +118 -0
  164. package/docs/commands/liberica/currency/list.md +149 -0
  165. package/docs/commands/liberica/currency/update.md +141 -0
  166. package/docs/commands/liberica/materials/create.md +293 -0
  167. package/docs/commands/liberica/materials/delete.md +240 -0
  168. package/docs/commands/liberica/materials/disable.md +150 -0
  169. package/docs/commands/liberica/materials/enable.md +146 -0
  170. package/docs/commands/liberica/materials/get.md +188 -0
  171. package/docs/commands/liberica/materials/list.md +198 -0
  172. package/docs/commands/liberica/materials/update.md +250 -0
  173. package/docs/commands/liberica/uoms/create.md +136 -0
  174. package/docs/commands/liberica/uoms/delete.md +119 -0
  175. package/docs/commands/liberica/uoms/disable.md +117 -0
  176. package/docs/commands/liberica/uoms/enable.md +115 -0
  177. package/docs/commands/liberica/uoms/get.md +119 -0
  178. package/docs/commands/liberica/uoms/list.md +155 -0
  179. package/docs/commands/liberica/uoms/update.md +148 -0
  180. package/package.json +2 -4
  181. package/src/commands/liberica/auth/index.ts +6 -0
  182. package/src/commands/liberica/currency/create.ts +183 -0
  183. package/src/commands/liberica/currency/delete.ts +124 -0
  184. package/src/commands/liberica/currency/disable.ts +147 -0
  185. package/src/commands/liberica/currency/enable.ts +128 -0
  186. package/src/commands/liberica/currency/get.ts +91 -0
  187. package/src/commands/liberica/currency/index.ts +23 -0
  188. package/src/commands/liberica/currency/list.ts +140 -0
  189. package/src/commands/liberica/currency/update.ts +129 -0
  190. package/src/commands/liberica/index.ts +11 -0
  191. package/src/commands/liberica/materials/create.ts +168 -0
  192. package/src/commands/liberica/materials/delete.ts +105 -0
  193. package/src/commands/liberica/materials/disable.ts +148 -0
  194. package/src/commands/liberica/materials/enable.ts +129 -0
  195. package/src/commands/liberica/materials/get.ts +83 -0
  196. package/src/commands/liberica/materials/index.ts +23 -0
  197. package/src/commands/liberica/materials/list.ts +142 -0
  198. package/src/commands/liberica/materials/update.ts +125 -0
  199. package/src/commands/liberica/suppliers/create.ts +149 -0
  200. package/src/commands/liberica/suppliers/delete.ts +102 -0
  201. package/src/commands/liberica/suppliers/disable.ts +145 -0
  202. package/src/commands/liberica/suppliers/enable.ts +126 -0
  203. package/src/commands/liberica/suppliers/get.ts +86 -0
  204. package/src/commands/liberica/suppliers/index.ts +23 -0
  205. package/src/commands/liberica/suppliers/list.ts +134 -0
  206. package/src/commands/liberica/suppliers/update.ts +128 -0
  207. package/src/commands/liberica/uoms/create.ts +134 -0
  208. package/src/commands/liberica/uoms/delete.ts +105 -0
  209. package/src/commands/liberica/uoms/disable.ts +148 -0
  210. package/src/commands/liberica/uoms/enable.ts +129 -0
  211. package/src/commands/liberica/uoms/get.ts +83 -0
  212. package/src/commands/liberica/uoms/index.ts +23 -0
  213. package/src/commands/liberica/uoms/list.ts +129 -0
  214. package/src/commands/liberica/uoms/update.ts +124 -0
  215. package/src/core/api/client.ts +878 -57
  216. package/src/index.ts +1 -1
  217. package/src/types/currency.ts +90 -0
  218. package/src/types/index.ts +5 -2
  219. package/src/types/material.ts +61 -0
  220. package/src/types/supplier.ts +66 -0
  221. package/src/types/uom.ts +60 -0
  222. package/bin/barista.js +0 -3
@@ -0,0 +1,149 @@
1
+ # barista liberica currency list
2
+
3
+ 分页查询币种列表。
4
+
5
+ ## 2.1 命令元数据
6
+
7
+ | 字段 | 值 |
8
+ |------|-----|
9
+ | 完整命令 | `barista liberica currency list` |
10
+ | 功能描述 | 分页查询币种列表 |
11
+ | HTTP方法 | GET |
12
+ | 是否需要认证 | ✅ 是 |
13
+ | 是否支持dry-run | ⬜ 否 |
14
+
15
+ ## 2.2 后端接口引用
16
+
17
+ ### Controller位置
18
+ ```
19
+ coffee-liberica-end/
20
+ └── facade/liberica-facade-enterprise/
21
+ └── src/main/java/com/newpeak/liberica/facade/enterprise/controller/finance/
22
+ └── FinanceCurrencyController.java
23
+ └── listCurrencies(@GetResource(path = "/page"))
24
+ └── public ResponseData<PageResult<CurrencyResponse>> listCurrencies(
25
+ @ParameterObject CurrencyRequest request
26
+ )
27
+ ```
28
+
29
+ ### Request DTO位置
30
+ ```
31
+ coffee-liberica-end/
32
+ └── business/liberica-business-finance/finance-api/src/main/java/com/newpeak/liberica/finance/api/pojo/request/CurrencyRequest.java
33
+ ├── pageNo: Long (分页页码,从0开始)
34
+ ├── pageSize: Long (分页大小)
35
+ ├── currencyCode: String (币种编码,如 CNY, USD)
36
+ ├── currencyName: String (币种名称)
37
+ └── statusFlag: Integer (状态:1=启用,2=禁用)
38
+ ```
39
+
40
+ ### Response DTO位置
41
+ ```
42
+ coffee-liberica-end/
43
+ └── business/liberica-business-finance/finance-api/src/main/java/com/newpeak/liberica/finance/api/pojo/response/CurrencyResponse.java
44
+ ├── currencyId: String
45
+ ├── currencyCode: String (3位编码,如 CNY)
46
+ ├── currencyName: String (币种名称)
47
+ ├── currencySign: String (符号,如 ¥)
48
+ ├── statusFlag: Integer (1=启用,2=禁用)
49
+ ├── createTime: String
50
+ └── updateTime: String
51
+ ```
52
+
53
+ ### 分页包装器
54
+ ```
55
+ cn.stylefeng.roses.kernel.db.api.pojo.page.PageResult
56
+ ├── totalRows: long
57
+ ├── pageSize: long
58
+ ├── pageNo: long
59
+ └── rows: List<CurrencyResponse>
60
+ ```
61
+
62
+ ## 2.3 CLI参数设计
63
+
64
+ ### 命令结构
65
+ ```
66
+ barista liberica currency list [options]
67
+ ```
68
+
69
+ ### 全局选项
70
+ | 选项 | 类型 | 说明 |
71
+ |------|------|------|
72
+ | `--env` | string | 目标环境(dev\|test\|prod-cn\|prod-jp) |
73
+ | `--tenant` | string | 租户代码 |
74
+ | `--json` | boolean | JSON输出 |
75
+
76
+ ### 命令选项
77
+ | 选项 | 短选项 | 类型 | 必填 | 默认值 | 说明 | 对应DTO字段 |
78
+ |------|--------|------|------|--------|------|-------------|
79
+ | --page | -p | number | ⬜ | 1 | 页码(从1开始) | pageNo (转换:CLI页码-1) |
80
+ | --size | -s | number | ⬜ | 20 | 每页条数 | pageSize |
81
+ | --status | — | string | ⬜ | - | 状态:enable/disable | statusFlag (enable=1, disable=2) |
82
+ | --code | -c | string | ⬜ | - | 币种编码(3位) | currencyCode |
83
+ | --name | -n | string | ⬜ | - | 币种名称 | currencyName |
84
+
85
+ ## 2.4 字段映射表
86
+
87
+ | CLI参数 | DTO字段 | 类型转换 | 验证规则 |
88
+ |---------|---------|----------|----------|
89
+ | --page / -p | pageNo | number→Long,CLI页码-1 | >= 1 |
90
+ | --size / -s | pageSize | number→Long | 1-100 |
91
+ | --status | statusFlag | string→Integer | enable=1, disable=2 |
92
+ | --code / -c | currencyCode | string→String | 3位字母 |
93
+ | --name / -n | currencyName | string→String | - |
94
+
95
+ ## 2.5 错误码引用
96
+
97
+ ### ExceptionEnum位置
98
+ ```
99
+ coffee-liberica-end/
100
+ └── business/liberica-business-finance/finance-api/src/main/java/com/newpeak/liberica/finance/api/exception/enums/CurrencyExceptionEnum.java
101
+ ```
102
+
103
+ ### 已知错误码
104
+ | 错误码 | 错误消息 | 触发条件 |
105
+ |--------|----------|----------|
106
+ | CURRENCY_NOT_EXIST | 币种不存在 | 查询/编辑/删除时ID不存在 |
107
+ | CURRENCY_CODE_DUPLICATE | 币种编码重复 | 创建/编辑时编码已存在 |
108
+
109
+ ## 2.6 权限检查
110
+
111
+ | 检查项 | 位置 | 说明 |
112
+ |--------|------|------|
113
+ | 注解 | 无需权限 | 登录用户可访问 |
114
+
115
+ ## 2.7 实现要点
116
+
117
+ 1. **分页默认值**:page=1, size=20
118
+ 2. **分页转换**:CLI使用1-based页码,API使用0-based页码(调用时需减1)
119
+ 3. **编码格式**:currencyCode 为3位字母编码(ISO 4217标准,如 CNY, USD, EUR)
120
+ 4. **状态映射**:CLI参数 `enable`/`disable` 映射到 API 值 `1`/`2`
121
+ 5. **无结果处理**:返回空列表,不抛出异常
122
+ 6. **tenantId来源**:来自 JWT token(无需 X-TENANT-ID header)
123
+ 7. **输出格式**:表格形式展示,分页信息在底部显示
124
+ 8. **API路径**:GET `/api/enterprise/finance/currency/page`
125
+
126
+ ## 2.8 示例用法
127
+
128
+ ```bash
129
+ # 默认分页
130
+ barista liberica currency list
131
+
132
+ # 指定页码和每页条数
133
+ barista liberica currency list --page 2 --size 50
134
+
135
+ # 按状态筛选
136
+ barista liberica currency list --status enable
137
+
138
+ # 按编码筛选
139
+ barista liberica currency list --code "CNY"
140
+
141
+ # 按名称搜索
142
+ barista liberica currency list --name "人民币"
143
+
144
+ # 组合筛选
145
+ barista liberica currency list --page 1 --size 10 --status enable --code "CNY"
146
+
147
+ # JSON 输出(便于脚本处理)
148
+ barista liberica currency list --page 1 --size 20 --json
149
+ ```
@@ -0,0 +1,141 @@
1
+ # barista liberica currency update
2
+
3
+ 更新币种信息。
4
+
5
+ ## 2.1 命令元数据
6
+
7
+ | 字段 | 值 |
8
+ |------|-----|
9
+ | 完整命令 | `barista liberica currency update <currency-id>` |
10
+ | 功能描述 | 更新币种信息 |
11
+ | HTTP方法 | POST |
12
+ | 是否需要认证 | ✅ 是 |
13
+ | 是否支持dry-run | ✅ 是 |
14
+
15
+ ## 2.2 后端接口引用
16
+
17
+ ### Controller位置
18
+ ```
19
+ coffee-liberica-end/
20
+ └── facade/liberica-facade-enterprise/
21
+ └── src/main/java/com/newpeak/liberica/facade/enterprise/controller/finance/
22
+ └── FinanceCurrencyController.java
23
+ └── editCurrency(@PostResource(path = "/edit"))
24
+ └── public ResponseData<CurrencyResponse> editCurrency(
25
+ @RequestBody @Validated CurrencyRequest request
26
+ )
27
+ ```
28
+
29
+ ### Request DTO位置
30
+ ```
31
+ coffee-liberica-end/
32
+ └── business/liberica-business-finance/finance-api/src/main/java/com/newpeak/liberica/finance/api/pojo/request/CurrencyRequest.java
33
+ ├── currencyId: String (@NotBlank)
34
+ ├── currencyCode: String (@NotBlank, 3位编码)
35
+ ├── currencyName: String (@NotBlank)
36
+ ├── currencySign: String (符号)
37
+ └── statusFlag: Integer (1=启用, 2=禁用)
38
+ ```
39
+
40
+ ### Response DTO位置
41
+ ```
42
+ coffee-liberica-end/
43
+ └── business/liberica-business-finance/finance-api/src/main/java/com/newpeak/liberica/finance/api/pojo/response/CurrencyResponse.java
44
+ ├── currencyId: String
45
+ ├── currencyCode: String
46
+ ├── currencyName: String
47
+ ├── currencySign: String
48
+ ├── statusFlag: Integer
49
+ ├── createTime: String
50
+ └── updateTime: String
51
+ ```
52
+
53
+ ## 2.3 CLI参数设计
54
+
55
+ ### 命令结构
56
+ ```
57
+ barista liberica currency update <currency-id> [options]
58
+ ```
59
+
60
+ ### 全局选项
61
+ | 选项 | 类型 | 说明 |
62
+ |------|------|------|
63
+ | `--env` | string | 目标环境(dev\|test\|prod-cn\|prod-jp) |
64
+ | `--tenant` | string | 租户代码 |
65
+ | `--dry-run` | boolean | 预览模式 |
66
+ | `--json` | boolean | JSON输出 |
67
+
68
+ ### 位置参数
69
+ | 参数 | 类型 | 必填 | 说明 |
70
+ |------|------|------|------|
71
+ | currency-id | string | ✅ | 币种ID |
72
+
73
+ ### 命令选项
74
+ | 选项 | 短选项 | 类型 | 必填 | 默认值 | 说明 | 对应DTO字段 |
75
+ |------|--------|------|------|--------|------|-------------|
76
+ | --currency-id | -i | string | ⬜ | - | 币种ID(与位置参数互斥) | currencyId |
77
+ | --code | -c | string | ✅ | - | 币种编码(3位) | currencyCode |
78
+ | --name | -n | string | ✅ | - | 币种名称 | currencyName |
79
+ | --sign | -S | string | ⬜ | - | 币种符号 | currencySign |
80
+
81
+ ## 2.4 字段映射表
82
+
83
+ | CLI参数 | DTO字段 | 类型转换 | 验证规则 |
84
+ |---------|---------|----------|----------|
85
+ | currency-id (位置参数) | currencyId | string→String | @NotBlank |
86
+ | --currency-id / -i | currencyId | string→String | @NotBlank |
87
+ | --code / -c | currencyCode | string→String | @NotBlank, 3位字母 |
88
+ | --name / -n | currencyName | string→String | @NotBlank, max=255 |
89
+ | --sign / -S | currencySign | string→String | max=10 |
90
+
91
+ ## 2.5 错误码引用
92
+
93
+ ### ExceptionEnum位置
94
+ ```
95
+ coffee-liberica-end/
96
+ └── business/liberica-business-finance/finance-api/src/main/java/com/newpeak/liberica/finance/api/exception/enums/CurrencyExceptionEnum.java
97
+ ```
98
+
99
+ ### 已知错误码
100
+ | 错误码 | 错误消息 | 触发条件 |
101
+ |--------|----------|----------|
102
+ | CURRENCY_NOT_EXIST | 币种不存在 | 币种不存在 |
103
+ | CURRENCY_CODE_DUPLICATE | 币种编码重复 | 编码重复 |
104
+ | CURRENCY_CODE_EMPTY | 币种编码不能为空 | 编码为空 |
105
+ | CURRENCY_NAME_EMPTY | 币种名称不能为空 | 名称为空 |
106
+
107
+ ## 2.6 权限检查
108
+
109
+ | 检查项 | 位置 | 说明 |
110
+ |--------|------|------|
111
+ | 注解 | FinanceCurrencyController.java | 需要 `finance_currency:edit` 权限 |
112
+
113
+ ## 2.7 实现要点
114
+
115
+ 1. **ID必填**:currencyId为必填参数(位置参数或 --currency-id 选项)
116
+ 2. **必填字段**:currencyCode 和 currencyName 为必填参数(通常需要先获取现有值再修改)
117
+ 3. **dry-run 支持**:支持 `--dry-run` 预览模式,显示将要更新的字段变化
118
+ 4. **完整更新**:后端可能是完整更新模式,需要提供所有字段值
119
+ 5. **建议用法**:先执行 `barista liberica currency get <id>` 获取当前值,再更新指定字段
120
+ 6. **API路径**:POST `/api/enterprise/finance/currency/edit`
121
+ 7. **成功响应**:返回更新后的币种详情
122
+
123
+ ## 2.8 示例用法
124
+
125
+ ```bash
126
+ # 更新币种(通过位置参数)
127
+ barista liberica currency update "1234567890123456789" --code "CNY" --name "人民币"
128
+
129
+ # 更新币种(通过选项参数)
130
+ barista liberica currency update --currency-id "1234567890123456789" --code "CNY" --name "人民币"
131
+ barista liberica currency update -i "1234567890123456789" -c "CNY" -n "人民币"
132
+
133
+ # 更新符号
134
+ barista liberica currency update "1234567890123456789" --code "USD" --name "美元" --sign "$"
135
+
136
+ # 预览模式(dry-run)
137
+ barista liberica currency update "1234567890123456789" --code "EUR" --name "欧元" --dry-run
138
+
139
+ # JSON 输出
140
+ barista liberica currency update "1234567890123456789" --code "CNY" --name "人民币" --json
141
+ ```
@@ -0,0 +1,293 @@
1
+ # barista liberica materials create
2
+
3
+ Create a new material (product).
4
+
5
+ ## 2.1 Command Metadata
6
+
7
+ | Field | Value |
8
+ |------|-----|
9
+ | Full Command | `barista liberica materials create` |
10
+ | Description | Create a new material |
11
+ | HTTP Method | POST |
12
+ | Requires Authentication | Yes |
13
+ | Supports Dry-Run | Yes |
14
+
15
+ ## 2.2 Backend API Reference
16
+
17
+ ### Controller Location
18
+ ```
19
+ coffee-liberica-end/
20
+ └── facade/liberica-facade-enterprise/
21
+ └── src/main/java/com/newpeak/liberica/facade/enterprise/controller/master/
22
+ └── EnterpriseMaterialController.java
23
+ └── add(@PostResource(path = "/add", requiredPermission = true, requirePermissionCode = MasterMaterialPermissionConstants.ADD_MASTER_MATERIAL))
24
+ └── public ResponseData<MasterMaterialResponse> add(
25
+ @RequestHeader("X-TENANT-ID") Long tenantId,
26
+ @RequestBody @Validated(BaseRequest.add.class) MasterMaterialRequest request
27
+ )
28
+ ```
29
+
30
+ ### Request DTO Location
31
+ ```
32
+ coffee-liberica-end/
33
+ └── business/liberica-business-sales/sales-api/
34
+ └── src/main/java/com/newpeak/liberica/sales/api/pojo/request/
35
+ └── MasterMaterialRequest.java
36
+ ├── materialCode: String (@NotBlank on add, max=255)
37
+ ├── materialNo: String (@NotBlank on add, max=255)
38
+ ├── materialName: String (@NotBlank on add, max=255)
39
+ ├── materialShortName: String (max=255)
40
+ ├── materialClass: String (@NotBlank on add, max=255)
41
+ ├── materialType: String (max=255)
42
+ ├── materialUomCode: String (max=255)
43
+ ├── enableSale: String (Y/N, max=1)
44
+ ├── enablePurchase: String (Y/N, max=1)
45
+ ├── enableSubMaterial: String (Y/N, max=1)
46
+ ├── enableOutsourcing: String (Y/N, max=1)
47
+ ├── enableDivision: String (Y/N, max=1)
48
+ ├── materialMaker: String (max=255)
49
+ ├── defaultWarehouse: String (max=255)
50
+ ├── defaultSupplier: String (max=255)
51
+ ├── unitPrice: BigDecimal
52
+ ├── currency: String (max=255)
53
+ └── remark: String (max=255)
54
+ ```
55
+
56
+ ### Response DTO Location
57
+ ```
58
+ coffee-liberica-end/
59
+ └── business/liberica-business-sales/sales-api/
60
+ └── src/main/java/com/newpeak/liberica/sales/api/pojo/response/
61
+ └── MasterMaterialResponse.java
62
+ ├── materialId: Long
63
+ ├── materialCode: String
64
+ ├── materialNo: String
65
+ ├── materialName: String
66
+ ├── materialShortName: String
67
+ ├── materialClass: String
68
+ ├── materialType: String
69
+ ├── materialUomCode: String
70
+ ├── enableSale: String (Y/N)
71
+ ├── enablePurchase: String (Y/N)
72
+ ├── statusFlag: Integer (1=enable, 2=disable)
73
+ └── createTime: String
74
+ ```
75
+
76
+ ## 2.3 CLI Parameter Design
77
+
78
+ ### Command Structure
79
+ ```
80
+ barista liberica materials create [options]
81
+ ```
82
+
83
+ ### Global Options
84
+ | Option | Type | Description |
85
+ |------|------|------|
86
+ | `--env` | string | Target environment (dev\|test\|prod-cn\|prod-jp) |
87
+ | `--tenant` | string | Tenant code |
88
+ | `--dry-run` | boolean | Preview mode (no actual API call) |
89
+ | `--json` | boolean | JSON output |
90
+
91
+ ### Command Options
92
+ | Option | Short | Type | Required | Default | Description | Maps to DTO Field |
93
+ |------|--------|------|------|--------|------|-------------|
94
+ | --name | -n | string | Yes | - | Material name | materialName |
95
+ | --class | -c | string | Yes | - | Material class/category | materialClass |
96
+ | --type | -t | string | No | - | Specification/model | materialType |
97
+ | --unit | -u | string | No | - | Unit of measure | materialUomCode |
98
+ | --code | — | string | No | Auto-generated | Material code | materialCode |
99
+ | --no | — | string | No | Same as code | Material number | materialNo |
100
+ | --short-name | — | string | No | - | Short name | materialShortName |
101
+ | --maker | — | string | No | - | Manufacturer | materialMaker |
102
+ | --sale | — | boolean | No | true | Enable sale flag | enableSale |
103
+ | --purchase | — | boolean | No | true | Enable purchase flag | enablePurchase |
104
+ | --sub-material | — | boolean | No | false | Can be sub-material | enableSubMaterial |
105
+ | --outsourcing | — | boolean | No | false | Enable outsourcing | enableOutsourcing |
106
+ | --division | — | boolean | No | false | Enable cutting/division | enableDivision |
107
+ | --warehouse | -w | string | No | - | Default warehouse | defaultWarehouse |
108
+ | --supplier | -s | string | No | - | Default supplier | defaultSupplier |
109
+ | --price | -p | number | No | - | Unit price | unitPrice |
110
+ | --currency | — | string | No | - | Currency code | currency |
111
+ | --remark | -r | string | No | - | Remarks | remark |
112
+
113
+ ## 2.4 Field Mapping Table
114
+
115
+ | CLI Parameter | DTO Field | Type Conversion | Validation Rule |
116
+ |---------|---------|----------|----------|
117
+ | --name / -n | materialName | Direct | @NotBlank, max=255 |
118
+ | --class / -c | materialClass | Direct | @NotBlank, max=255 |
119
+ | --type / -t | materialType | Direct | max=255 |
120
+ | --unit / -u | materialUomCode | Direct | max=255 |
121
+ | --code | materialCode | Direct | max=255, auto-generated if empty |
122
+ | --no | materialNo | Direct | max=255, defaults to code |
123
+ | --short-name | materialShortName | Direct | max=255 |
124
+ | --maker | materialMaker | Direct | max=255 |
125
+ | --sale | enableSale | boolean->String (Y/N) | max=1 |
126
+ | --purchase | enablePurchase | boolean->String (Y/N) | max=1 |
127
+ | --sub-material | enableSubMaterial | boolean->String (Y/N) | max=1 |
128
+ | --outsourcing | enableOutsourcing | boolean->String (Y/N) | max=1 |
129
+ | --division | enableDivision | boolean->String (Y/N) | max=1 |
130
+ | --warehouse / -w | defaultWarehouse | Direct | max=255 |
131
+ | --supplier / -s | defaultSupplier | Direct | max=255 |
132
+ | --price / -p | unitPrice | number->BigDecimal | - |
133
+ | --currency | currency | Direct | max=255 |
134
+ | --remark / -r | remark | Direct | max=255 |
135
+
136
+ **Auto-Generated Fields:**
137
+ | Field | Value |
138
+ |------|-----|
139
+ | tenantId | From JWT token (do NOT pass X-TENANT-ID header) |
140
+ | statusFlag | Default 1 (enabled) |
141
+ | materialCode | Auto-generated via getCodeByType('TenantMaterialCode') if not provided |
142
+ | materialNo | Defaults to materialCode if not provided |
143
+
144
+ ## 2.5 Auto Code Generation Flow
145
+
146
+ When `--code` is not provided, the CLI automatically generates a material code:
147
+
148
+ ```typescript
149
+ // Call getCodeByType API to generate code
150
+ const codeResponse = await apiClient.getCodeByType(
151
+ environment,
152
+ tenant,
153
+ 'TenantMaterialCode' // Code type from TenantCodeType enum
154
+ );
155
+
156
+ if (codeResponse.success && codeResponse.data) {
157
+ materialCode = codeResponse.data;
158
+ } else {
159
+ throw new Error('Failed to generate material code');
160
+ }
161
+ ```
162
+
163
+ **API Details:**
164
+ - Endpoint: `GET /api/enterprise/master/id/getCodeByType?type=TenantMaterialCode`
165
+ - Response: `{ success: true, data: "MAT-2024-0001" }`
166
+ - Code Type: `TenantMaterialCode` (defined in `TenantCodeType.java`)
167
+
168
+ **Backend Code Generation:**
169
+ ```
170
+ coffee-liberica-end/
171
+ └── business/liberica-business-master/master-api/
172
+ └── src/main/java/com/newpeak/liberica/master/api/enums/
173
+ └── TenantCodeType.java
174
+ └── TenantMaterialCode // Line 66
175
+ ```
176
+
177
+ ## 2.6 Error Code Reference
178
+
179
+ ### ExceptionEnum Location
180
+ ```
181
+ coffee-liberica-end/
182
+ └── business/liberica-business-sales/sales-api/
183
+ └── src/main/java/com/newpeak/liberica/sales/api/exception/enums/
184
+ └── MasterMaterialExceptionEnum.java
185
+ ├── MASTER_MATERIAL_NOT_EXIST("01001200001", "租户物料不存在")
186
+ ├── MASTER_MATERIAL_CODE_FORMAT_CANNOT_EMPTY("01001200003", "物料编码规则不能为空")
187
+ ├── MASTER_MATERIAL_CODE_FORMAT_NOT_CORRECT("01001200004", "物料编码规则格式不正确")
188
+ ├── MASTER_MATERIAL_CODE_VALIDATE_EMPTY_ERROR("01001200005", "{}不能为空")
189
+ ├── MASTER_MATERIAL_CODE_VALIDATE_NOT_EXIST_ERROR("01001200006", "指定{}不存在")
190
+ ├── MASTER_MATERIAL_NO_VALIDATE_EMPTY_ERROR("01001200007", "{}不能为空")
191
+ ├── MASTER_MATERIAL_NAME_VALIDATE_EMPTY_ERROR("01001200009", "{}不能为空")
192
+ ├── ENABLE_DIVISION_MATERIAL_NEED_WIDE_AND_LONG("01001200012", "可分割物料必须设置长和宽")
193
+ └── ENABLE_DIVISION_MATERIAL_NEED_WIDE_AND_LONG_GT_ZERO("01001200013", "可分割物料长和宽必须大于0")
194
+ ```
195
+
196
+ ### Known Error Codes
197
+ | Error Code | Error Message | Trigger Condition |
198
+ |--------|----------|----------|
199
+ | 01001200001 | Material does not exist | Query/edit with non-existent ID |
200
+ | 01001200003 | Material code format cannot be empty | Auto-generation rule not configured |
201
+ | 01001200004 | Material code format incorrect | Invalid code format pattern |
202
+ | 01001200005 | {} cannot be empty | Required field missing (materialCode) |
203
+ | 01001200007 | {} cannot be empty | Required field missing (materialNo) |
204
+ | 01001200009 | {} cannot be empty | Required field missing (materialName) |
205
+ | 01001200012 | Divisible material must set length and width | enableDivision=true without dimensions |
206
+ | 01001200013 | Divisible material length and width must be > 0 | enableDivision with invalid dimensions |
207
+
208
+ ## 2.7 Permission Check
209
+
210
+ | Check Item | Location | Description |
211
+ |--------|------|------|
212
+ | PermissionConstants | `MasterMaterialPermissionConstants.ADD_MASTER_MATERIAL` | Controller layer `@PostResource(requirePermissionCode = "ADD_MASTER_MATERIAL")` |
213
+
214
+ ## 2.8 Implementation Notes
215
+
216
+ 1. **Required Fields**: `--name` and `--class` must be provided
217
+ 2. **Auto-Generated Code**: `materialCode` is auto-generated via `getCodeByType('TenantMaterialCode')` if not provided
218
+ 3. **Material Number**: `materialNo` defaults to `materialCode` if not explicitly provided
219
+ 4. **Dry-Run Support**: Use `--dry-run` to preview request without calling API
220
+ 5. **Boolean Flags**: All enable flags (sale, purchase, etc.) default to sensible values
221
+ 6. **No Batch Create**: This command does NOT support batch creation (one material per call)
222
+ 7. **No Interactive Wizard**: No interactive prompts for optional fields (use explicit options)
223
+
224
+ ## 2.9 Example Usage
225
+
226
+ ```bash
227
+ # Create with minimal required fields (auto-generates code)
228
+ barista liberica materials create --name "Steel Plate" --class "RAW_MATERIAL"
229
+
230
+ # Create with all common options
231
+ barista liberica materials create \
232
+ --name "Aluminum Sheet 5052" \
233
+ --class "RAW_MATERIAL" \
234
+ --type "5052-H32" \
235
+ --unit "PCS" \
236
+ --sale \
237
+ --purchase \
238
+ --warehouse "MAIN_WH" \
239
+ --price 125.50 \
240
+ --currency "USD" \
241
+ --remark "Standard aluminum sheet"
242
+
243
+ # Create with explicit code (skip auto-generation)
244
+ barista liberica materials create \
245
+ --code "MAT-001" \
246
+ --name "Custom Part" \
247
+ --class "FINISHED_GOOD"
248
+
249
+ # Dry-run to preview
250
+ barista liberica materials create \
251
+ --name "Test Material" \
252
+ --class "TEST" \
253
+ --dry-run
254
+
255
+ # JSON output
256
+ barista liberica materials create \
257
+ --name "New Product" \
258
+ --class "PRODUCT" \
259
+ --json
260
+ ```
261
+
262
+ ## 2.10 Request Body Structure
263
+
264
+ ```json
265
+ {
266
+ "materialCode": "MAT-2024-0001",
267
+ "materialNo": "MAT-2024-0001",
268
+ "materialName": "Steel Plate",
269
+ "materialClass": "RAW_MATERIAL",
270
+ "materialType": "SPCC",
271
+ "materialUomCode": "PCS",
272
+ "enableSale": "Y",
273
+ "enablePurchase": "Y",
274
+ "enableSubMaterial": "N",
275
+ "enableOutsourcing": "N",
276
+ "enableDivision": "N",
277
+ "statusFlag": 1
278
+ }
279
+ ```
280
+
281
+ ## 2.11 API Path
282
+
283
+ ```
284
+ POST /api/enterprise/sales/material/add
285
+ ```
286
+
287
+ **Headers:**
288
+ ```
289
+ Authorization: <token> (No "Bearer " prefix)
290
+ Content-Type: application/json
291
+ ```
292
+
293
+ **Note**: Do NOT include `X-TENANT-ID` header. Tenant is extracted from JWT token.