@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,240 @@
1
+ # barista liberica materials delete
2
+
3
+ 删除指定物料。
4
+
5
+ ## 2.1 命令元数据
6
+
7
+ | 字段 | 值 |
8
+ |------|-----|
9
+ | 完整命令 | `barista liberica materials delete` |
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/master/
22
+ └── EnterpriseMaterialController.java
23
+ └── delete(@PostResource(path = "/delete", requiredPermission = true, requirePermissionCode = MasterMaterialPermissionConstants.DEL_MASTER_MATERIAL))
24
+ └── public ResponseData<?> delete(
25
+ @RequestHeader("X-TENANT-ID") Long tenantId,
26
+ @RequestBody @Validated(BaseRequest.delete.class) MasterMaterialRequest masterMaterialRequest
27
+ )
28
+ ```
29
+
30
+ ### Request DTO位置
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
+ ├── materialId: Long (@NotNull on delete)
37
+ └── tenantId: Long
38
+ ```
39
+
40
+ **删除请求体结构:**
41
+ ```json
42
+ {
43
+ "materialId": 123456789
44
+ }
45
+ ```
46
+
47
+ ### Response DTO位置
48
+ ```
49
+ coffee-liberica-end/
50
+ └── business/liberica-business-sales/sales-api/
51
+ └── src/main/java/com/newpeak/liberica/sales/api/pojo/response/
52
+ └── MasterMaterialResponse.java
53
+ ├── materialId: Long
54
+ ├── materialCode: String
55
+ ├── materialNo: String
56
+ ├── materialName: String
57
+ └── statusFlag: Integer (1=启用, 2=禁用)
58
+ ```
59
+
60
+ ## 2.3 CLI参数设计
61
+
62
+ ### 命令结构
63
+ ```bash
64
+ barista liberica materials delete <materialId> [options]
65
+ ```
66
+
67
+ ### 全局选项
68
+ | 选项 | 类型 | 说明 |
69
+ |------|------|------|
70
+ | `--env` | string | 目标环境(dev\|test\|prod-cn\|prod-jp) |
71
+ | `--tenant` | string | 租户代码 |
72
+ | `--dry-run` | boolean | 预览模式(默认开启) |
73
+ | `--json` | boolean | JSON输出 |
74
+
75
+ ### 命令选项
76
+ | 选项 | 短选项 | 类型 | 必填 | 默认值 | 说明 | 对应DTO字段 |
77
+ |------|--------|------|------|--------|------|-------------|
78
+ | materialId | - | string | ✅ | - | 物料ID(位置参数) | materialId |
79
+ | --force | -f | boolean | ⬜ | false | 跳过确认直接删除 | - |
80
+ | --json | - | boolean | ⬜ | false | JSON格式输出 | - |
81
+
82
+ ### 位置参数
83
+ | 参数 | 类型 | 必填 | 说明 |
84
+ |------|------|------|------|
85
+ | materialId | string | ✅ | 要删除的物料ID |
86
+
87
+ ## 2.4 字段映射表
88
+
89
+ | CLI参数 | DTO字段 | 类型转换 | 验证规则 |
90
+ |---------|---------|----------|----------|
91
+ | materialId (位置参数) | materialId | string→Long | @NotNull |
92
+
93
+ ## 2.5 确认流程
94
+
95
+ 删除操作默认启用dry-run模式,需要用户显式确认:
96
+
97
+ ### 默认行为(无--force)
98
+ ```bash
99
+ $ barista liberica materials delete 123456789
100
+
101
+ 🗑️ Delete Material (dev)
102
+
103
+ Material ID: 123456789
104
+ Name: 测试物料
105
+ Code: MAT-001
106
+
107
+ 🔍 Dry-Run Mode: No actual deletion will be made
108
+
109
+ To delete, add: --force
110
+ ```
111
+
112
+ ### 强制删除(带--force)
113
+ ```bash
114
+ $ barista liberica materials delete 123456789 --force
115
+
116
+ 🗑️ Delete Material (dev)
117
+
118
+ Material ID: 123456789
119
+ Name: 测试物料
120
+ Code: MAT-001
121
+
122
+ ✓ Material "测试物料" (ID: 123456789) deleted
123
+ ```
124
+
125
+ ### JSON输出模式
126
+ ```bash
127
+ $ barista liberica materials delete 123456789 --json
128
+ {
129
+ "success": true,
130
+ "dryRun": true,
131
+ "material": {
132
+ "materialId": "123456789",
133
+ "materialName": "测试物料",
134
+ "materialCode": "MAT-001"
135
+ }
136
+ }
137
+
138
+ $ barista liberica materials delete 123456789 --force --json
139
+ {
140
+ "success": true,
141
+ "materialId": "123456789",
142
+ "name": "测试物料"
143
+ }
144
+ ```
145
+
146
+ ## 2.6 错误码引用
147
+
148
+ ### ExceptionEnum位置
149
+ ```
150
+ coffee-liberica-end/
151
+ └── business/liberica-business-sales/sales-api/
152
+ └── src/main/java/com/newpeak/liberica/sales/api/exception/enums/
153
+ └── MasterMaterialExceptionEnum.java
154
+ ├── MASTER_MATERIAL_NOT_EXIST("01001310001", "租户物料不存在")
155
+ └── DELETE_MASTER_WAREHOUSE_ERROR("01001310014", "删除物料仓库错误")
156
+ ```
157
+
158
+ ### Service层业务校验
159
+ ```
160
+ coffee-liberica-end/
161
+ └── business/liberica-business-sales/sales-business/
162
+ └── src/main/java/com/newpeak/liberica/sales/modular/master/business/impl/
163
+ └── MasterMaterialBusinessImpl.java
164
+ └── del(MasterMaterialRequest request)
165
+ ├── Line 384: 检查物料是否存在
166
+ │ └── throw new SalesServiceException(MasterMaterialExceptionEnum.MASTER_MATERIAL_NOT_EXIST)
167
+ └── Line 1387: 检查仓库关联
168
+ └── throw new SalesServiceException(MasterMaterialExceptionEnum.DELETE_MASTER_WAREHOUSE_ERROR)
169
+ ```
170
+
171
+ ### 已知错误码
172
+ | 错误码 | 错误消息 | 触发条件 |
173
+ |--------|----------|----------|
174
+ | 01001310001 | 租户物料不存在 | 物料ID不存在或已被删除 |
175
+ | 01001310014 | 删除物料仓库错误 | 物料与仓库存在关联,无法删除 |
176
+
177
+ ## 2.7 权限检查
178
+
179
+ | 检查项 | 位置 | 说明 |
180
+ |--------|------|------|
181
+ | PermissionConstants | `MasterMaterialPermissionConstants.DEL_MASTER_MATERIAL` | Controller层 `@PostResource(requirePermissionCode = "DEL_MASTER_MATERIAL")` |
182
+
183
+ ## 2.8 实现要点
184
+
185
+ 1. **必填参数**:materialId 作为位置参数必须提供
186
+ 2. **Dry-run默认开启**:不带 `--force` 时只显示预览信息
187
+ 3. **物料详情获取**:删除前先调用 `/detail` 接口获取物料信息用于确认提示
188
+ 4. **ID类型处理**:后端使用 Long (BigInteger),CLI使用 string 避免精度丢失
189
+ 5. **权限要求**:需要 `DEL_MASTER_MATERIAL` 权限
190
+
191
+ ## 2.9 示例用法
192
+
193
+ ```bash
194
+ # 预览删除(dry-run模式,默认行为)
195
+ barista liberica materials delete 123456789
196
+
197
+ # 强制删除(跳过确认)
198
+ barista liberica materials delete 123456789 --force
199
+
200
+ # 指定环境删除
201
+ barista liberica materials delete 123456789 --env test --force
202
+
203
+ # JSON输出预览
204
+ barista liberica materials delete 123456789 --json
205
+
206
+ # JSON输出并强制删除
207
+ barista liberica materials delete 123456789 --force --json
208
+ ```
209
+
210
+ ## 2.10 实现参考
211
+
212
+ ### --force 模式参考
213
+ 参考 `suppliers/delete.ts` 的实现:
214
+
215
+ ```typescript
216
+ if (!options.force) {
217
+ if (jsonOutput) {
218
+ console.log(JSON.stringify({ success: true, dryRun: true, supplier }));
219
+ } else {
220
+ console.log(chalk.cyan('\n🔍 Dry-Run Mode: No actual deletion will be made\n'));
221
+ console.log(chalk.yellow(' To delete, add: --force\n'));
222
+ }
223
+ return;
224
+ }
225
+
226
+ // 实际删除
227
+ const response = await apiClient.deleteSupplier(environment, tenant, supplierId);
228
+ ```
229
+
230
+ ### 请求体构造
231
+ ```typescript
232
+ const request = {
233
+ materialId: parseInt(materialId) // string to Long
234
+ };
235
+ ```
236
+
237
+ ### API路径
238
+ ```
239
+ POST /api/enterprise/sales/material/delete
240
+ ```
@@ -0,0 +1,150 @@
1
+ # barista liberica materials disable
2
+
3
+ Disable (deactivate) a material.
4
+
5
+ ## 2.1 命令元数据
6
+
7
+ | 字段 | 值 |
8
+ |------|-----|
9
+ | 完整命令 | `barista liberica materials disable <materialId>` |
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/master/
22
+ └── EnterpriseMaterialController.java
23
+ └── batchDeActive(@PostResource(path = "/batchDeActive", requiredPermission = true, requirePermissionCode = MasterMaterialPermissionConstants.DE_ACTIVE_MASTER_MATERIAL))
24
+ └── public ResponseData<?> batchDeActive(
25
+ @RequestHeader("X-TENANT-ID") Long tenantId,
26
+ @RequestBody @Validated(BaseRequest.batchDelete.class) MasterMaterialRequest masterMaterialRequest
27
+ )
28
+ ```
29
+
30
+ ### Request DTO位置
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
+ └── materialIdList: Set<Long>
37
+ ```
38
+
39
+ ### Response DTO位置
40
+ ```
41
+ coffee-liberica-end/
42
+ └── business/liberica-business-sales/sales-api/
43
+ └── src/main/java/com/newpeak/liberica/sales/api/pojo/response/
44
+ └── MasterMaterialResponse.java
45
+ └── 返回更新后的物料详情(同 create/update)
46
+ ```
47
+
48
+ ## 2.3 CLI参数设计
49
+
50
+ ### 命令结构
51
+ ```
52
+ barista liberica materials disable <materialId> [options]
53
+ ```
54
+
55
+ ### 位置参数
56
+ | 参数 | 类型 | 必填 | 说明 |
57
+ |------|------|------|------|
58
+ | materialId | string | ✅ | 物料ID (materialId) |
59
+
60
+ ### 全局选项
61
+ | 选项 | 类型 | 说明 |
62
+ |------|------|------|
63
+ | `--env` | string | 目标环境(dev\|test\|prod-cn\|prod-jp) |
64
+ | `--tenant` | string | 租户代码 |
65
+ | `--dry-run` | boolean | 预览模式(不实际调用API) |
66
+ | `--json` | boolean | JSON输出 |
67
+
68
+ ### 命令选项
69
+ | 选项 | 短选项 | 类型 | 必填 | 默认值 | 说明 |
70
+ |------|--------|------|------|--------|------|
71
+ | --force | -f | boolean | ⬜ | false | 跳过确认提示 |
72
+
73
+ **说明**:
74
+ - `--dry-run` 预览禁用操作的影响(显示将禁用的物料信息)
75
+ - `--force` 直接执行,不显示确认提示(适用于脚本自动化)
76
+
77
+ ## 2.4 字段映射表
78
+
79
+ | CLI参数 | DTO字段 | 类型转换 | 验证规则 |
80
+ |---------|---------|----------|----------|
81
+ | <materialId> (位置参数) | materialIdList | string→Long | @NotEmpty, 转为单元素Set |
82
+
83
+ **请求体构建**:
84
+ ```json
85
+ {
86
+ "materialIdList": [<materialId>]
87
+ }
88
+ ```
89
+
90
+ ## 2.5 错误码引用
91
+
92
+ ### ExceptionEnum位置
93
+ ```
94
+ coffee-liberica-end/
95
+ └── business/liberica-business-sales/sales-api/
96
+ └── src/main/java/com/newpeak/liberica/sales/api/exception/enums/
97
+ └── MasterMaterialExceptionEnum.java
98
+ ├── MASTER_MATERIAL_NOT_EXIST("01001320001", "租户物料不存在")
99
+ └── ...
100
+ ```
101
+
102
+ ### Service层业务校验
103
+ ```
104
+ coffee-liberica-end/
105
+ └── business/liberica-business-sales/sales-business/
106
+ └── src/main/java/com/newpeak/liberica/sales/modular/master/business/
107
+ └── MasterMaterialBusiness.java
108
+ └── batchDeActive(MasterMaterialRequest masterMaterialRequest)
109
+ └── Line 155-169: 批量禁用物料
110
+ └── 调用 masterMaterialService.batchDeActive(masterMaterialRequest)
111
+ ```
112
+
113
+ ### 已知错误码
114
+ | 错误码 | 错误消息 | 触发条件 |
115
+ |--------|----------|----------|
116
+ | 01001320001 | 租户物料不存在 | materialId 不存在或不属于当前租户 |
117
+
118
+ ## 2.6 权限检查
119
+
120
+ | 检查项 | 位置 | 说明 |
121
+ |--------|------|------|
122
+ | PermissionConstants | `MasterMaterialPermissionConstants.DE_ACTIVE_MASTER_MATERIAL` | Controller层 `@PostResource(requirePermissionCode = "DE_ACTIVE_MASTER_MATERIAL")` |
123
+
124
+ ## 2.7 实现要点
125
+
126
+ 1. **批量API使用单ID**:后端使用 `/batchDeActive` 批量接口,CLI传入单元素数组 `[materialId]`
127
+ 2. **幂等性**:batchDeActive 操作是幂等的——对已禁用的物料再次调用效果相同(直接 set statusFlag=DISABLE)
128
+ 3. **Dry-run模式**:预览显示将禁用的物料信息,但不实际发送请求
129
+ 4. **无强制选项**:--force 跳过确认提示,但不绕过后端权限检查
130
+ 5. **API路径**:`POST /api/enterprise/sales/material/batchDeActive`
131
+
132
+ ## 2.8 示例用法
133
+
134
+ ```bash
135
+ # 禁用物料(交互确认)
136
+ barista liberica materials disable 12345
137
+
138
+ # 跳过确认直接禁用
139
+ barista liberica materials disable 12345 --force
140
+
141
+ # Dry-run 预览
142
+ barista liberica materials disable 12345 --dry-run
143
+
144
+ # JSON 输出
145
+ barista liberica materials disable 12345 --force --json
146
+
147
+ # 物料不存在
148
+ barista liberica materials disable 99999
149
+ # 输出: Error: 租户物料不存在 (01001320001)
150
+ ```
@@ -0,0 +1,146 @@
1
+ # barista liberica materials enable
2
+
3
+ 启用(激活)物料。
4
+
5
+ ## 2.1 命令元数据
6
+
7
+ | 字段 | 值 |
8
+ |------|-----|
9
+ | 完整命令 | `barista liberica materials enable <materialId>` |
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/master/
22
+ └── EnterpriseMaterialController.java
23
+ └── batchActive(@PostResource(path = "/batchActive", requiredPermission = true, requirePermissionCode = "ACTIVE_MASTER_MATERIAL"))
24
+ └── public ResponseData<?> batchActive(
25
+ @RequestHeader("X-TENANT-ID") Long tenantId,
26
+ @RequestBody @Validated(BaseRequest.batchDelete.class) MasterMaterialRequest masterMaterialRequest
27
+ )
28
+ ```
29
+
30
+ ### Request DTO位置
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
+ └── materialIdList: Set<Long> (用于批量操作)
37
+ ```
38
+
39
+ ### Response DTO位置
40
+ ```
41
+ coffee-liberica-end/
42
+ └── business/liberica-business-sales/sales-api/
43
+ └── src/main/java/com/newpeak/liberica/sales/api/pojo/response/
44
+ └── MasterMaterialResponse.java
45
+ └── 返回成功响应(无数据体)
46
+ ```
47
+
48
+ ## 2.3 CLI参数设计
49
+
50
+ ### 命令结构
51
+ ```
52
+ barista liberica materials enable <materialId> [options]
53
+ ```
54
+
55
+ ### 位置参数
56
+ | 参数 | 类型 | 必填 | 说明 |
57
+ |------|------|------|------|
58
+ | materialId | string | ✅ | 物料ID |
59
+
60
+ ### 全局选项
61
+ | 选项 | 类型 | 说明 |
62
+ |------|------|------|
63
+ | `--env` | string | 目标环境(dev\|test\|prod-cn\|prod-jp) |
64
+ | `--tenant` | string | 租户代码 |
65
+ | `--dry-run` | boolean | 预览模式(不实际调用API) |
66
+ | `--json` | boolean | JSON输出 |
67
+
68
+ ### 命令选项
69
+ | 选项 | 短选项 | 类型 | 必填 | 默认值 | 说明 |
70
+ |------|--------|------|------|--------|------|
71
+ | --force | -f | boolean | ⬜ | false | 跳过确认提示 |
72
+
73
+ **说明**:
74
+ - `--dry-run` 预览启用操作的影响(显示将启用的物料信息)
75
+ - `--force` 直接执行,不显示确认提示(适用于脚本自动化)
76
+
77
+ ## 2.4 字段映射表
78
+
79
+ | CLI参数 | DTO字段 | 类型转换 | 验证规则 |
80
+ |---------|---------|----------|----------|
81
+ | <materialId> (位置参数) | materialIdList[0] | string→Long | @NotEmpty, 单元素数组 |
82
+
83
+ **请求体构造**:
84
+ ```json
85
+ {
86
+ "materialIdList": [12345]
87
+ }
88
+ ```
89
+
90
+ ## 2.5 错误码引用
91
+
92
+ ### ExceptionEnum位置
93
+ ```
94
+ coffee-liberica-end/
95
+ └── business/liberica-business-sales/sales-api/
96
+ └── src/main/java/com/newpeak/liberica/sales/api/exception/enums/
97
+ └── MasterMaterialExceptionEnum.java
98
+ ├── MASTER_MATERIAL_NOT_EXIST("01001410001", "租户物料不存在")
99
+ ├── MASTER_MATERIAL_CODE_VALIDATE_NOT_EXIST_ERROR("01001410006", "指定{}不存在")
100
+ └── MASTER_MATERIAL_NAME_VALIDATE_NOT_EXIST_ERROR("01001410010", "指定{}不存在")
101
+ ```
102
+
103
+ ### 已知错误码
104
+ | 错误码 | 错误消息 | 触发条件 |
105
+ |--------|----------|----------|
106
+ | 01001410001 | 租户物料不存在 | materialId 不存在或不属于当前租户 |
107
+ | 01001410006 | 指定xxx不存在 | 指定关联的物料编码不存在 |
108
+ | 01001410010 | 指定xxx不存在 | 指定关联的物料名称不存在 |
109
+
110
+ ## 2.6 权限检查
111
+
112
+ | 检查项 | 位置 | 说明 |
113
+ |--------|------|------|
114
+ | PermissionConstants | `MasterMaterialPermissionConstants.ACTIVE_MASTER_MATERIAL` | Controller层 `@PostResource(requirePermissionCode = "ACTIVE_MASTER_MATERIAL")` |
115
+
116
+ ## 2.7 实现要点
117
+
118
+ 1. **批量API单条使用**:后端使用 `/batchActive` 批量接口,但 CLI 仅支持单条启用,将单个 ID 包装为单元素数组 `{ materialIdList: [id] }`
119
+ 2. **幂等性**:batchActive 操作是幂等的,对已启用的物料再次调用效果相同(直接设置 statusFlag=ENABLE)
120
+ 3. **Dry-run模式**:预览显示将启用的物料信息,但不实际发送请求
121
+ 4. **无强制选项**:--force 跳过确认提示,但不绕过后端权限检查
122
+ 5. **与disable对称**:enable 与 disable 互为逆操作,使用相同的 materialIdList 参数结构
123
+
124
+ ## 2.8 示例用法
125
+
126
+ ```bash
127
+ # 启用物料(交互确认)
128
+ barista liberica materials enable 12345
129
+
130
+ # 跳过确认直接启用
131
+ barista liberica materials enable 12345 --force
132
+
133
+ # Dry-run 预览
134
+ barista liberica materials enable 12345 --dry-run
135
+
136
+ # JSON 输出
137
+ barista liberica materials enable 12345 --force --json
138
+
139
+ # 物料不存在
140
+ barista liberica materials enable 99999
141
+ # 输出: Error: 租户物料不存在 (01001410001)
142
+
143
+ # 对已启用物料重复启用(幂等,无报错)
144
+ barista liberica materials enable 12345 --force
145
+ # 输出: ✓ 物料启用成功
146
+ ```