@newpeak/barista-cli 0.1.11 → 0.1.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/commands/liberica/dict-types/get.d.ts.map +1 -1
- package/dist/commands/liberica/dict-types/get.js +9 -1
- package/dist/commands/liberica/dict-types/get.js.map +1 -1
- package/dist/commands/liberica/dict-types/index.d.ts.map +1 -1
- package/dist/commands/liberica/dict-types/index.js +2 -0
- package/dist/commands/liberica/dict-types/index.js.map +1 -1
- package/dist/commands/liberica/dict-types/list.d.ts.map +1 -1
- package/dist/commands/liberica/dict-types/list.js +19 -1
- package/dist/commands/liberica/dict-types/list.js.map +1 -1
- package/dist/commands/liberica/dict-types/tenant-items.d.ts +3 -0
- package/dist/commands/liberica/dict-types/tenant-items.d.ts.map +1 -0
- package/dist/commands/liberica/dict-types/tenant-items.js +275 -0
- package/dist/commands/liberica/dict-types/tenant-items.js.map +1 -0
- package/dist/commands/liberica/dicts/get.d.ts.map +1 -1
- package/dist/commands/liberica/dicts/get.js +9 -1
- package/dist/commands/liberica/dicts/get.js.map +1 -1
- package/dist/commands/liberica/dicts/list.d.ts.map +1 -1
- package/dist/commands/liberica/dicts/list.js +9 -1
- package/dist/commands/liberica/dicts/list.js.map +1 -1
- package/dist/core/api/client.d.ts +7 -7
- package/dist/core/api/client.d.ts.map +1 -1
- package/dist/core/api/client.js +15 -12
- package/dist/core/api/client.js.map +1 -1
- package/dist/core/config/manager.d.ts.map +1 -1
- package/dist/core/config/manager.js +1 -0
- package/dist/core/config/manager.js.map +1 -1
- package/dist/index.js +1 -1
- package/dist/types/dict.d.ts +2 -0
- package/dist/types/dict.d.ts.map +1 -1
- package/dist/types/index.d.ts +2 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js.map +1 -1
- package/package.json +7 -3
- package/docs/ARCHITECTURE.md +0 -184
- package/docs/COMMANDS.md +0 -352
- package/docs/COMMAND_DESIGN_SPEC.md +0 -840
- package/docs/INTEGRATION_NOTES.md +0 -270
- package/docs/commands/REFERENCE.md +0 -323
- package/docs/commands/arabica/auth/index.md +0 -296
- package/docs/commands/liberica/auth/index.md +0 -133
- package/docs/commands/liberica/calendar/DESIGN.md +0 -333
- package/docs/commands/liberica/client-contacts/create.md +0 -152
- package/docs/commands/liberica/client-contacts/delete.md +0 -123
- package/docs/commands/liberica/client-contacts/get.md +0 -133
- package/docs/commands/liberica/client-contacts/list.md +0 -143
- package/docs/commands/liberica/client-contacts/update.md +0 -158
- package/docs/commands/liberica/context/index.md +0 -60
- package/docs/commands/liberica/currency/create.md +0 -145
- package/docs/commands/liberica/currency/delete.md +0 -121
- package/docs/commands/liberica/currency/disable.md +0 -119
- package/docs/commands/liberica/currency/enable.md +0 -115
- package/docs/commands/liberica/currency/get.md +0 -118
- package/docs/commands/liberica/currency/list.md +0 -149
- package/docs/commands/liberica/currency/update.md +0 -141
- package/docs/commands/liberica/employees/create.md +0 -185
- package/docs/commands/liberica/employees/disable.md +0 -138
- package/docs/commands/liberica/employees/enable.md +0 -137
- package/docs/commands/liberica/employees/get.md +0 -153
- package/docs/commands/liberica/employees/list.md +0 -168
- package/docs/commands/liberica/employees/update.md +0 -180
- package/docs/commands/liberica/locations/create.md +0 -195
- package/docs/commands/liberica/locations/list.md +0 -171
- package/docs/commands/liberica/materials/create.md +0 -293
- package/docs/commands/liberica/materials/delete.md +0 -240
- package/docs/commands/liberica/materials/disable.md +0 -150
- package/docs/commands/liberica/materials/enable.md +0 -146
- package/docs/commands/liberica/materials/get.md +0 -188
- package/docs/commands/liberica/materials/list.md +0 -198
- package/docs/commands/liberica/materials/update.md +0 -250
- package/docs/commands/liberica/orgs/list.md +0 -62
- package/docs/commands/liberica/positions/list.md +0 -61
- package/docs/commands/liberica/roles/list.md +0 -67
- package/docs/commands/liberica/stock/ledger.md +0 -209
- package/docs/commands/liberica/stock/list.md +0 -165
- package/docs/commands/liberica/supplier-contacts/create.md +0 -152
- package/docs/commands/liberica/supplier-contacts/delete.md +0 -123
- package/docs/commands/liberica/supplier-contacts/get.md +0 -133
- package/docs/commands/liberica/supplier-contacts/list.md +0 -143
- package/docs/commands/liberica/supplier-contacts/update.md +0 -158
- package/docs/commands/liberica/teams/issues/close.md +0 -161
- package/docs/commands/liberica/teams/issues/create.md +0 -212
- package/docs/commands/liberica/teams/issues/delete.md +0 -179
- package/docs/commands/liberica/teams/issues/get.md +0 -167
- package/docs/commands/liberica/teams/issues/list.md +0 -182
- package/docs/commands/liberica/teams/issues/tests-design.md +0 -341
- package/docs/commands/liberica/teams/issues/update.md +0 -202
- package/docs/commands/liberica/teams/projects/create.md +0 -174
- package/docs/commands/liberica/teams/projects/delete.md +0 -180
- package/docs/commands/liberica/teams/projects/get.md +0 -150
- package/docs/commands/liberica/teams/projects/list.md +0 -179
- package/docs/commands/liberica/teams/projects/update.md +0 -175
- package/docs/commands/liberica/teams/tasks/create.md +0 -163
- package/docs/commands/liberica/teams/tasks/delete.md +0 -109
- package/docs/commands/liberica/teams/tasks/get.md +0 -121
- package/docs/commands/liberica/teams/tasks/list.md +0 -148
- package/docs/commands/liberica/teams/tasks/update.md +0 -158
- package/docs/commands/liberica/teams/work-logs/create.md +0 -151
- package/docs/commands/liberica/teams/work-logs/delete.md +0 -130
- package/docs/commands/liberica/teams/work-logs/get.md +0 -131
- package/docs/commands/liberica/teams/work-logs/list.md +0 -153
- package/docs/commands/liberica/teams/work-logs/update.md +0 -150
- package/docs/commands/liberica/transfer-in-forms/batch-delete.md +0 -157
- package/docs/commands/liberica/transfer-in-forms/batch-review.md +0 -157
- package/docs/commands/liberica/transfer-in-forms/batch-unreview.md +0 -157
- package/docs/commands/liberica/transfer-in-forms/create.md +0 -220
- package/docs/commands/liberica/transfer-in-forms/get.md +0 -221
- package/docs/commands/liberica/transfer-in-forms/list.md +0 -242
- package/docs/commands/liberica/transfer-in-forms/update.md +0 -185
- package/docs/commands/liberica/transfer-out-forms/batch-delete.md +0 -187
- package/docs/commands/liberica/transfer-out-forms/batch-review.md +0 -157
- package/docs/commands/liberica/transfer-out-forms/batch-unreview.md +0 -157
- package/docs/commands/liberica/transfer-out-forms/create.md +0 -280
- package/docs/commands/liberica/transfer-out-forms/get.md +0 -211
- package/docs/commands/liberica/transfer-out-forms/list.md +0 -233
- package/docs/commands/liberica/transfer-out-forms/update.md +0 -286
- package/docs/commands/liberica/uoms/create.md +0 -136
- package/docs/commands/liberica/uoms/delete.md +0 -119
- package/docs/commands/liberica/uoms/disable.md +0 -117
- package/docs/commands/liberica/uoms/enable.md +0 -115
- package/docs/commands/liberica/uoms/get.md +0 -119
- package/docs/commands/liberica/uoms/list.md +0 -155
- package/docs/commands/liberica/uoms/update.md +0 -148
- package/docs/commands/liberica/users/create.md +0 -170
- package/docs/commands/liberica/users/get.md +0 -151
- package/docs/commands/liberica/users/list.md +0 -175
- package/docs/commands/liberica/warehouses/create.md +0 -222
- package/docs/commands/liberica/warehouses/list.md +0 -184
- package/src/commands/arabica/auth/index.ts +0 -277
- package/src/commands/arabica/auth/login.ts +0 -5
- package/src/commands/arabica/auth/logout.ts +0 -5
- package/src/commands/arabica/auth/register.ts +0 -5
- package/src/commands/arabica/auth/status.ts +0 -5
- package/src/commands/arabica/index.ts +0 -23
- package/src/commands/auth.ts +0 -107
- package/src/commands/context.ts +0 -60
- package/src/commands/liberica/auth/index.ts +0 -176
- package/src/commands/liberica/calendar/index.ts +0 -13
- package/src/commands/liberica/calendar/list.ts +0 -214
- package/src/commands/liberica/calendar/set.ts +0 -130
- package/src/commands/liberica/client-contacts/create.ts +0 -115
- package/src/commands/liberica/client-contacts/delete.ts +0 -140
- package/src/commands/liberica/client-contacts/get.ts +0 -103
- package/src/commands/liberica/client-contacts/index.ts +0 -19
- package/src/commands/liberica/client-contacts/list.ts +0 -118
- package/src/commands/liberica/client-contacts/update.ts +0 -137
- package/src/commands/liberica/clients/create.ts +0 -122
- package/src/commands/liberica/clients/delete.ts +0 -125
- package/src/commands/liberica/clients/get.ts +0 -88
- package/src/commands/liberica/clients/index.ts +0 -19
- package/src/commands/liberica/clients/list.ts +0 -123
- package/src/commands/liberica/clients/update.ts +0 -103
- package/src/commands/liberica/context/index.ts +0 -43
- package/src/commands/liberica/currency/create.ts +0 -183
- package/src/commands/liberica/currency/delete.ts +0 -124
- package/src/commands/liberica/currency/disable.ts +0 -147
- package/src/commands/liberica/currency/enable.ts +0 -128
- package/src/commands/liberica/currency/get.ts +0 -91
- package/src/commands/liberica/currency/index.ts +0 -23
- package/src/commands/liberica/currency/list.ts +0 -140
- package/src/commands/liberica/currency/update.ts +0 -129
- package/src/commands/liberica/dict-types/get.ts +0 -74
- package/src/commands/liberica/dict-types/index.ts +0 -15
- package/src/commands/liberica/dict-types/list.ts +0 -118
- package/src/commands/liberica/dict-types/update.ts +0 -134
- package/src/commands/liberica/dicts/create.ts +0 -175
- package/src/commands/liberica/dicts/delete.ts +0 -107
- package/src/commands/liberica/dicts/get.ts +0 -80
- package/src/commands/liberica/dicts/index.ts +0 -19
- package/src/commands/liberica/dicts/list.ts +0 -114
- package/src/commands/liberica/dicts/update.ts +0 -116
- package/src/commands/liberica/employees/create.ts +0 -275
- package/src/commands/liberica/employees/delete.ts +0 -122
- package/src/commands/liberica/employees/disable.ts +0 -97
- package/src/commands/liberica/employees/enable.ts +0 -97
- package/src/commands/liberica/employees/get.ts +0 -115
- package/src/commands/liberica/employees/index.ts +0 -23
- package/src/commands/liberica/employees/list.ts +0 -131
- package/src/commands/liberica/employees/update.ts +0 -157
- package/src/commands/liberica/index.ts +0 -81
- package/src/commands/liberica/materials/create.ts +0 -199
- package/src/commands/liberica/materials/delete.ts +0 -105
- package/src/commands/liberica/materials/disable.ts +0 -148
- package/src/commands/liberica/materials/enable.ts +0 -129
- package/src/commands/liberica/materials/get.ts +0 -83
- package/src/commands/liberica/materials/index.ts +0 -23
- package/src/commands/liberica/materials/list.ts +0 -142
- package/src/commands/liberica/materials/update.ts +0 -125
- package/src/commands/liberica/mould/get.ts +0 -111
- package/src/commands/liberica/mould/index.ts +0 -17
- package/src/commands/liberica/mould/list.ts +0 -157
- package/src/commands/liberica/mould/set-status.ts +0 -99
- package/src/commands/liberica/mould/stock-in.ts +0 -165
- package/src/commands/liberica/operations/active.ts +0 -153
- package/src/commands/liberica/operations/batch-delete.ts +0 -131
- package/src/commands/liberica/operations/copy.ts +0 -138
- package/src/commands/liberica/operations/create.ts +0 -223
- package/src/commands/liberica/operations/deactive.ts +0 -152
- package/src/commands/liberica/operations/delete.ts +0 -128
- package/src/commands/liberica/operations/design.md +0 -587
- package/src/commands/liberica/operations/get.ts +0 -112
- package/src/commands/liberica/operations/index.ts +0 -27
- package/src/commands/liberica/operations/list.ts +0 -180
- package/src/commands/liberica/operations/update.ts +0 -218
- package/src/commands/liberica/orgs/index.ts +0 -34
- package/src/commands/liberica/positions/index.ts +0 -30
- package/src/commands/liberica/roles/index.ts +0 -59
- package/src/commands/liberica/stock/index.ts +0 -13
- package/src/commands/liberica/stock/ledger.ts +0 -159
- package/src/commands/liberica/stock/list.ts +0 -128
- package/src/commands/liberica/supplier-contacts/create.ts +0 -120
- package/src/commands/liberica/supplier-contacts/delete.ts +0 -88
- package/src/commands/liberica/supplier-contacts/get.ts +0 -94
- package/src/commands/liberica/supplier-contacts/index.ts +0 -19
- package/src/commands/liberica/supplier-contacts/list.ts +0 -130
- package/src/commands/liberica/supplier-contacts/update.ts +0 -127
- package/src/commands/liberica/suppliers/create.ts +0 -149
- package/src/commands/liberica/suppliers/delete.ts +0 -102
- package/src/commands/liberica/suppliers/disable.ts +0 -145
- package/src/commands/liberica/suppliers/enable.ts +0 -126
- package/src/commands/liberica/suppliers/get.ts +0 -86
- package/src/commands/liberica/suppliers/index.ts +0 -23
- package/src/commands/liberica/suppliers/list.ts +0 -134
- package/src/commands/liberica/suppliers/update.ts +0 -128
- package/src/commands/liberica/teams/index.ts +0 -17
- package/src/commands/liberica/teams/issues/close.ts +0 -104
- package/src/commands/liberica/teams/issues/create.ts +0 -254
- package/src/commands/liberica/teams/issues/delete.ts +0 -58
- package/src/commands/liberica/teams/issues/get.ts +0 -78
- package/src/commands/liberica/teams/issues/index.ts +0 -21
- package/src/commands/liberica/teams/issues/list.ts +0 -144
- package/src/commands/liberica/teams/issues/update.ts +0 -141
- package/src/commands/liberica/teams/projects/create.ts +0 -159
- package/src/commands/liberica/teams/projects/delete.ts +0 -58
- package/src/commands/liberica/teams/projects/get.ts +0 -87
- package/src/commands/liberica/teams/projects/index.ts +0 -19
- package/src/commands/liberica/teams/projects/list.ts +0 -147
- package/src/commands/liberica/teams/projects/update.ts +0 -117
- package/src/commands/liberica/teams/tasks/create.ts +0 -102
- package/src/commands/liberica/teams/tasks/delete.ts +0 -92
- package/src/commands/liberica/teams/tasks/get.ts +0 -64
- package/src/commands/liberica/teams/tasks/index.ts +0 -19
- package/src/commands/liberica/teams/tasks/list.ts +0 -102
- package/src/commands/liberica/teams/tasks/update.ts +0 -122
- package/src/commands/liberica/teams/work-logs/create.ts +0 -204
- package/src/commands/liberica/teams/work-logs/delete.ts +0 -58
- package/src/commands/liberica/teams/work-logs/get.ts +0 -87
- package/src/commands/liberica/teams/work-logs/index.ts +0 -19
- package/src/commands/liberica/teams/work-logs/list.ts +0 -141
- package/src/commands/liberica/teams/work-logs/update.ts +0 -120
- package/src/commands/liberica/transfer-in-forms/batch-delete.ts +0 -152
- package/src/commands/liberica/transfer-in-forms/batch-review.ts +0 -151
- package/src/commands/liberica/transfer-in-forms/batch-unreview.ts +0 -152
- package/src/commands/liberica/transfer-in-forms/create.ts +0 -179
- package/src/commands/liberica/transfer-in-forms/get.ts +0 -107
- package/src/commands/liberica/transfer-in-forms/index.ts +0 -23
- package/src/commands/liberica/transfer-in-forms/list.ts +0 -97
- package/src/commands/liberica/transfer-in-forms/update.ts +0 -213
- package/src/commands/liberica/transfer-out-forms/batch-delete.ts +0 -83
- package/src/commands/liberica/transfer-out-forms/batch-review.ts +0 -148
- package/src/commands/liberica/transfer-out-forms/batch-unreview.ts +0 -56
- package/src/commands/liberica/transfer-out-forms/create.ts +0 -194
- package/src/commands/liberica/transfer-out-forms/get.ts +0 -114
- package/src/commands/liberica/transfer-out-forms/index.ts +0 -23
- package/src/commands/liberica/transfer-out-forms/list.ts +0 -125
- package/src/commands/liberica/transfer-out-forms/update.ts +0 -197
- package/src/commands/liberica/uoms/create.ts +0 -134
- package/src/commands/liberica/uoms/delete.ts +0 -105
- package/src/commands/liberica/uoms/disable.ts +0 -148
- package/src/commands/liberica/uoms/enable.ts +0 -129
- package/src/commands/liberica/uoms/get.ts +0 -83
- package/src/commands/liberica/uoms/index.ts +0 -23
- package/src/commands/liberica/uoms/list.ts +0 -129
- package/src/commands/liberica/uoms/update.ts +0 -124
- package/src/commands/liberica/users/create.ts +0 -133
- package/src/commands/liberica/users/delete.ts +0 -49
- package/src/commands/liberica/users/disable.ts +0 -41
- package/src/commands/liberica/users/enable.ts +0 -30
- package/src/commands/liberica/users/get.ts +0 -46
- package/src/commands/liberica/users/index.ts +0 -27
- package/src/commands/liberica/users/list.ts +0 -68
- package/src/commands/liberica/users/me.ts +0 -42
- package/src/commands/liberica/users/reset-password.ts +0 -42
- package/src/commands/liberica/users/update.ts +0 -48
- package/src/commands/liberica/warehouses/create.ts +0 -204
- package/src/commands/liberica/warehouses/delete.ts +0 -112
- package/src/commands/liberica/warehouses/disable.ts +0 -174
- package/src/commands/liberica/warehouses/enable.ts +0 -174
- package/src/commands/liberica/warehouses/get.ts +0 -101
- package/src/commands/liberica/warehouses/index.ts +0 -25
- package/src/commands/liberica/warehouses/list.ts +0 -136
- package/src/commands/liberica/warehouses/locations/create.ts +0 -209
- package/src/commands/liberica/warehouses/locations/delete.ts +0 -116
- package/src/commands/liberica/warehouses/locations/disable.ts +0 -174
- package/src/commands/liberica/warehouses/locations/enable.ts +0 -174
- package/src/commands/liberica/warehouses/locations/get.ts +0 -84
- package/src/commands/liberica/warehouses/locations/index.ts +0 -23
- package/src/commands/liberica/warehouses/locations/list.ts +0 -140
- package/src/commands/liberica/warehouses/locations/update.ts +0 -135
- package/src/commands/liberica/warehouses/update.ts +0 -142
- package/src/core/api/client.ts +0 -4443
- package/src/core/auth/token-manager.ts +0 -183
- package/src/core/config/manager.ts +0 -164
- package/src/index.ts +0 -35
- package/src/types/calendar.ts +0 -36
- package/src/types/client-contact.ts +0 -78
- package/src/types/client.ts +0 -115
- package/src/types/currency.ts +0 -90
- package/src/types/dict.ts +0 -121
- package/src/types/employee.ts +0 -102
- package/src/types/index.ts +0 -93
- package/src/types/location.ts +0 -66
- package/src/types/material.ts +0 -61
- package/src/types/mould-stock-in.ts +0 -82
- package/src/types/mould.ts +0 -74
- package/src/types/operation.ts +0 -72
- package/src/types/org.ts +0 -25
- package/src/types/position.ts +0 -24
- package/src/types/stock.ts +0 -161
- package/src/types/supplier-contact.ts +0 -78
- package/src/types/supplier.ts +0 -66
- package/src/types/team-issue.ts +0 -94
- package/src/types/team-project.ts +0 -74
- package/src/types/team-task.ts +0 -98
- package/src/types/team-work-log.ts +0 -87
- package/src/types/transfer-in-form.ts +0 -265
- package/src/types/transfer-out-form.ts +0 -290
- package/src/types/uom.ts +0 -60
- package/src/types/user.ts +0 -64
- package/src/types/warehouse.ts +0 -82
|
@@ -1,222 +0,0 @@
|
|
|
1
|
-
# barista liberica warehouses create
|
|
2
|
-
|
|
3
|
-
Create a new warehouse.
|
|
4
|
-
|
|
5
|
-
## 2.1 Command Metadata
|
|
6
|
-
|
|
7
|
-
| Field | Value |
|
|
8
|
-
|------|-----|
|
|
9
|
-
| Full Command | `barista liberica warehouses create` |
|
|
10
|
-
| Description | Create a new warehouse |
|
|
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/stock/
|
|
22
|
-
└── EnterpriseWarehouseController.java
|
|
23
|
-
└── add(@PostResource(path = "/add", requiredPermission = true, requirePermissionCode = MasterWarehousePermissionConstants.ADD_MASTER_WAREHOUSE))
|
|
24
|
-
└── public ResponseData<MasterWarehouseResponse> add(
|
|
25
|
-
@RequestHeader("X-TENANT-ID") Long tenantId,
|
|
26
|
-
@RequestBody @Validated(BaseRequest.add.class) MasterWarehouseRequest masterWarehouseRequest
|
|
27
|
-
)
|
|
28
|
-
```
|
|
29
|
-
|
|
30
|
-
### Request DTO Location
|
|
31
|
-
```
|
|
32
|
-
coffee-liberica-end/
|
|
33
|
-
└── business/liberica-business-master/master-api/
|
|
34
|
-
└── src/main/java/com/newpeak/liberica/master/api/pojo/request/
|
|
35
|
-
└── MasterWarehouseRequest.java
|
|
36
|
-
├── warehouseCode: String (@NotBlank on add, max=255)
|
|
37
|
-
├── warehouseName: String (max=255)
|
|
38
|
-
├── warehouseClasses: String (max=255)
|
|
39
|
-
├── manager: String (max=255)
|
|
40
|
-
├── warehouseTelephone: String (max=256)
|
|
41
|
-
├── warehouseFax: String (max=256)
|
|
42
|
-
├── warehouseAddress: String (max=512)
|
|
43
|
-
├── enableLocation: String (@NotBlank on add, max=1, Y/N)
|
|
44
|
-
├── enableNegativeInventory: String (max=1, Y/N)
|
|
45
|
-
├── statusFlag: Integer
|
|
46
|
-
└── remark: String (max=255)
|
|
47
|
-
```
|
|
48
|
-
|
|
49
|
-
### Response DTO Location
|
|
50
|
-
```
|
|
51
|
-
coffee-liberica-end/
|
|
52
|
-
└── business/liberica-business-master/master-api/
|
|
53
|
-
└── src/main/java/com/newpeak/liberica/master/api/pojo/response/
|
|
54
|
-
└── MasterWarehouseResponse.java
|
|
55
|
-
├── warehouseId: Long
|
|
56
|
-
├── warehouseCode: String
|
|
57
|
-
├── warehouseName: String
|
|
58
|
-
├── warehouseClasses: String
|
|
59
|
-
├── manager: String
|
|
60
|
-
├── warehouseTelephone: String
|
|
61
|
-
├── warehouseFax: String
|
|
62
|
-
├── warehouseAddress: String
|
|
63
|
-
├── enableLocation: String (Y/N)
|
|
64
|
-
├── enableNegativeInventory: String (Y/N)
|
|
65
|
-
├── statusFlag: Integer (1=enable, 2=disable)
|
|
66
|
-
├── remark: String
|
|
67
|
-
└── locations: List<MasterWarehouseLocationResponse>
|
|
68
|
-
```
|
|
69
|
-
|
|
70
|
-
## 2.3 CLI Parameter Design
|
|
71
|
-
|
|
72
|
-
### Command Structure
|
|
73
|
-
```
|
|
74
|
-
barista liberica warehouses create [options]
|
|
75
|
-
```
|
|
76
|
-
|
|
77
|
-
### Global Options
|
|
78
|
-
| Option | Type | Description |
|
|
79
|
-
|------|------|------|
|
|
80
|
-
| `--env` | string | Target environment (dev\|test\|prod-cn\|prod-jp) |
|
|
81
|
-
| `--tenant` | string | Tenant code |
|
|
82
|
-
| `--dry-run` | boolean | Preview mode (no actual API call) |
|
|
83
|
-
| `--json` | boolean | JSON output |
|
|
84
|
-
|
|
85
|
-
### Command Options
|
|
86
|
-
| Option | Short | Type | Required | Default | Description | Maps to DTO Field |
|
|
87
|
-
|------|--------|------|------|--------|------|-------------|
|
|
88
|
-
| --code | -c | string | Yes | - | Warehouse code | warehouseCode |
|
|
89
|
-
| --name | -n | string | Yes | - | Warehouse name | warehouseName |
|
|
90
|
-
| --classes | — | string | No | - | Warehouse class/category | warehouseClasses |
|
|
91
|
-
| --manager | -m | string | No | - | Warehouse manager | manager |
|
|
92
|
-
| --phone | — | string | No | - | Warehouse telephone | warehouseTelephone |
|
|
93
|
-
| --fax | — | string | No | - | Warehouse fax | warehouseFax |
|
|
94
|
-
| --address | -a | string | No | - | Warehouse address | warehouseAddress |
|
|
95
|
-
| --enable-location | — | boolean | Yes | true | Enable location management | enableLocation |
|
|
96
|
-
| --enable-negative-inventory | — | boolean | No | false | Allow negative inventory | enableNegativeInventory |
|
|
97
|
-
| --remark | -r | string | No | - | Remarks | remark |
|
|
98
|
-
|
|
99
|
-
## 2.4 Field Mapping Table
|
|
100
|
-
|
|
101
|
-
| CLI Parameter | DTO Field | Type Conversion | Validation Rule |
|
|
102
|
-
|---------|---------|----------|----------|
|
|
103
|
-
| --code / -c | warehouseCode | Direct | @NotBlank, max=255, unique per tenant |
|
|
104
|
-
| --name / -n | warehouseName | Direct | max=255 |
|
|
105
|
-
| --classes | warehouseClasses | Direct | max=255 |
|
|
106
|
-
| --manager / -m | manager | Direct | max=255 |
|
|
107
|
-
| --phone | warehouseTelephone | Direct | max=256 |
|
|
108
|
-
| --fax | warehouseFax | Direct | max=256 |
|
|
109
|
-
| --address / -a | warehouseAddress | Direct | max=512 |
|
|
110
|
-
| --enable-location | enableLocation | boolean->String (Y/N) | @NotBlank, max=1 |
|
|
111
|
-
| --enable-negative-inventory | enableNegativeInventory | boolean->String (Y/N) | max=1 |
|
|
112
|
-
| --remark / -r | remark | Direct | max=255 |
|
|
113
|
-
|
|
114
|
-
**Auto-Generated Fields:**
|
|
115
|
-
| Field | Value |
|
|
116
|
-
|------|-----|
|
|
117
|
-
| tenantId | From JWT token (do NOT pass X-TENANT-ID header) |
|
|
118
|
-
| statusFlag | Default 1 (enabled) |
|
|
119
|
-
|
|
120
|
-
## 2.5 Error Code Reference
|
|
121
|
-
|
|
122
|
-
### ExceptionEnum Location
|
|
123
|
-
```
|
|
124
|
-
coffee-liberica-end/
|
|
125
|
-
└── business/liberica-business-master/master-api/
|
|
126
|
-
└── src/main/java/com/newpeak/liberica/master/api/exception/enums/
|
|
127
|
-
└── MasterWarehouseExceptionEnum.java
|
|
128
|
-
├── MASTER_WAREHOUSE_NOT_EXIST("01001370001", "租户仓库不存在")
|
|
129
|
-
├── MASTER_WAREHOUSE_CODE_FORMAT_CANNOT_EMPTY("01001370002", "仓库编码规则不能为空")
|
|
130
|
-
└── MASTER_WAREHOUSE_CODE_FORMAT_NOT_CORRECT("01001370003", "仓库编码规则格式不正确")
|
|
131
|
-
```
|
|
132
|
-
|
|
133
|
-
### Known Error Codes
|
|
134
|
-
| Error Code | Error Message | Trigger Condition |
|
|
135
|
-
|--------|----------|----------|
|
|
136
|
-
| 01001370001 | Warehouse does not exist | Edit/detail with non-existent ID |
|
|
137
|
-
| 01001370002 | Warehouse code format cannot be empty | Auto-generation rule not configured |
|
|
138
|
-
| 01001370003 | Warehouse code format incorrect | Invalid code format pattern |
|
|
139
|
-
|
|
140
|
-
## 2.6 Permission Check
|
|
141
|
-
|
|
142
|
-
| Check Item | Location | Description |
|
|
143
|
-
|--------|------|------|
|
|
144
|
-
| PermissionConstants | `MasterWarehousePermissionConstants.ADD_MASTER_WAREHOUSE` | Controller layer `@PostResource(requirePermissionCode = "ADD_MASTER_WAREHOUSE")` |
|
|
145
|
-
|
|
146
|
-
## 2.7 Implementation Notes
|
|
147
|
-
|
|
148
|
-
1. **Required Fields**: `--code` and `--name` must be provided. `--enable-location` defaults to true.
|
|
149
|
-
2. **Manual Code**: `warehouseCode` is NOT auto-generated. User must provide a unique code.
|
|
150
|
-
3. **Dry-Run Support**: Use `--dry-run` to preview request without calling API.
|
|
151
|
-
4. **Boolean Flags**: `--enable-location` defaults to `true` (Y), `--enable-negative-inventory` defaults to `false` (N).
|
|
152
|
-
5. **No Batch Create**: This command does NOT support batch creation (one warehouse per call).
|
|
153
|
-
6. **BigInteger ID**: `warehouseId` in response must be parsed as `string` in TypeScript to avoid precision loss.
|
|
154
|
-
|
|
155
|
-
## 2.8 Example Usage
|
|
156
|
-
|
|
157
|
-
```bash
|
|
158
|
-
# Create with minimal required fields
|
|
159
|
-
barista liberica warehouses create --code "WH-001" --name "Main Warehouse"
|
|
160
|
-
|
|
161
|
-
# Create with all common options
|
|
162
|
-
barista liberica warehouses create \
|
|
163
|
-
--code "WH-002" \
|
|
164
|
-
--name "East Storage" \
|
|
165
|
-
--classes "FINISHED_GOOD" \
|
|
166
|
-
--manager "John Doe" \
|
|
167
|
-
--phone "021-12345678" \
|
|
168
|
-
--address "123 Industrial Road" \
|
|
169
|
-
--enable-location \
|
|
170
|
-
--enable-negative-inventory \
|
|
171
|
-
--remark "Primary finished goods storage"
|
|
172
|
-
|
|
173
|
-
# Disable location management
|
|
174
|
-
barista liberica warehouses create \
|
|
175
|
-
--code "WH-003" \
|
|
176
|
-
--name "Bulk Storage" \
|
|
177
|
-
--no-enable-location
|
|
178
|
-
|
|
179
|
-
# Dry-run to preview
|
|
180
|
-
barista liberica warehouses create \
|
|
181
|
-
--code "WH-004" \
|
|
182
|
-
--name "Test Warehouse" \
|
|
183
|
-
--dry-run
|
|
184
|
-
|
|
185
|
-
# JSON output
|
|
186
|
-
barista liberica warehouses create \
|
|
187
|
-
--code "WH-005" \
|
|
188
|
-
--name "New Warehouse" \
|
|
189
|
-
--json
|
|
190
|
-
```
|
|
191
|
-
|
|
192
|
-
## 2.9 Request Body Structure
|
|
193
|
-
|
|
194
|
-
```json
|
|
195
|
-
{
|
|
196
|
-
"warehouseCode": "WH-001",
|
|
197
|
-
"warehouseName": "Main Warehouse",
|
|
198
|
-
"warehouseClasses": "FINISHED_GOOD",
|
|
199
|
-
"manager": "John Doe",
|
|
200
|
-
"warehouseTelephone": "021-12345678",
|
|
201
|
-
"warehouseFax": "021-87654321",
|
|
202
|
-
"warehouseAddress": "123 Industrial Road",
|
|
203
|
-
"enableLocation": "Y",
|
|
204
|
-
"enableNegativeInventory": "N",
|
|
205
|
-
"statusFlag": 1,
|
|
206
|
-
"remark": "Primary storage"
|
|
207
|
-
}
|
|
208
|
-
```
|
|
209
|
-
|
|
210
|
-
## 2.10 API Path
|
|
211
|
-
|
|
212
|
-
```
|
|
213
|
-
POST /api/enterprise/purchases/warehouse/add
|
|
214
|
-
```
|
|
215
|
-
|
|
216
|
-
**Headers:**
|
|
217
|
-
```
|
|
218
|
-
Authorization: <token> (No "Bearer " prefix)
|
|
219
|
-
Content-Type: application/json
|
|
220
|
-
```
|
|
221
|
-
|
|
222
|
-
**Note**: Do NOT include `X-TENANT-ID` header. Tenant is extracted from JWT token.
|
|
@@ -1,184 +0,0 @@
|
|
|
1
|
-
# barista liberica warehouses list
|
|
2
|
-
|
|
3
|
-
List warehouses with pagination.
|
|
4
|
-
|
|
5
|
-
## 2.1 Command Metadata
|
|
6
|
-
|
|
7
|
-
| Field | Value |
|
|
8
|
-
|------|-----|
|
|
9
|
-
| Full Command | `barista liberica warehouses list` |
|
|
10
|
-
| Description | List warehouses with pagination |
|
|
11
|
-
| HTTP Method | GET |
|
|
12
|
-
| Requires Authentication | Yes |
|
|
13
|
-
| Supports Dry-Run | No |
|
|
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/stock/
|
|
22
|
-
└── EnterpriseWarehouseController.java
|
|
23
|
-
└── page(@GetResource(path = "/page"))
|
|
24
|
-
└── public ResponseData<PageResult<MasterWarehouseResponse>> page(
|
|
25
|
-
@RequestHeader("X-TENANT-ID") Long tenantId,
|
|
26
|
-
@ParameterObject MasterWarehouseRequest masterWarehouseRequest
|
|
27
|
-
)
|
|
28
|
-
```
|
|
29
|
-
|
|
30
|
-
### Request DTO Location
|
|
31
|
-
```
|
|
32
|
-
coffee-liberica-end/
|
|
33
|
-
└── business/liberica-business-master/master-api/
|
|
34
|
-
└── src/main/java/com/newpeak/liberica/master/api/pojo/request/
|
|
35
|
-
└── MasterWarehouseRequest.java
|
|
36
|
-
├── warehouseCode: String
|
|
37
|
-
├── warehouseName: String
|
|
38
|
-
├── warehouseClasses: String
|
|
39
|
-
├── manager: String
|
|
40
|
-
├── warehouseTelephone: String
|
|
41
|
-
├── warehouseFax: String
|
|
42
|
-
├── warehouseAddress: String
|
|
43
|
-
├── enableLocation: String (Y/N)
|
|
44
|
-
├── enableNegativeInventory: String (Y/N)
|
|
45
|
-
├── statusFlag: Integer
|
|
46
|
-
└── remark: String
|
|
47
|
-
```
|
|
48
|
-
|
|
49
|
-
### Response DTO Location
|
|
50
|
-
```
|
|
51
|
-
coffee-liberica-end/
|
|
52
|
-
└── business/liberica-business-master/master-api/
|
|
53
|
-
└── src/main/java/com/newpeak/liberica/master/api/pojo/response/
|
|
54
|
-
└── MasterWarehouseResponse.java
|
|
55
|
-
├── warehouseId: Long
|
|
56
|
-
├── warehouseCode: String
|
|
57
|
-
├── warehouseName: String
|
|
58
|
-
├── warehouseClasses: String
|
|
59
|
-
├── manager: String
|
|
60
|
-
├── warehouseTelephone: String
|
|
61
|
-
├── warehouseFax: String
|
|
62
|
-
├── warehouseAddress: String
|
|
63
|
-
├── enableLocation: String (Y/N)
|
|
64
|
-
├── enableNegativeInventory: String (Y/N)
|
|
65
|
-
├── statusFlag: Integer (1=enable, 2=disable)
|
|
66
|
-
├── remark: String
|
|
67
|
-
└── locations: List<MasterWarehouseLocationResponse>
|
|
68
|
-
```
|
|
69
|
-
|
|
70
|
-
## 2.3 CLI Parameter Design
|
|
71
|
-
|
|
72
|
-
### Command Structure
|
|
73
|
-
```
|
|
74
|
-
barista liberica warehouses list [options]
|
|
75
|
-
```
|
|
76
|
-
|
|
77
|
-
### Global Options
|
|
78
|
-
| Option | Type | Description |
|
|
79
|
-
|------|------|------|
|
|
80
|
-
| `--env` | string | Target environment (dev\|test\|prod-cn\|prod-jp) |
|
|
81
|
-
| `--tenant` | string | Tenant code |
|
|
82
|
-
| `--json` | boolean | JSON output |
|
|
83
|
-
|
|
84
|
-
### Command Options
|
|
85
|
-
| Option | Short | Type | Required | Default | Description | Maps to Query Param |
|
|
86
|
-
|------|--------|------|------|--------|------|-------------|
|
|
87
|
-
| --page | -p | number | No | 1 | Page number (CLI 1-based) | pageNo (0-based) |
|
|
88
|
-
| --size | -s | number | No | 20 | Page size | pageSize |
|
|
89
|
-
| --status | — | number | No | - | Status filter (1=enable, 2=disable) | statusFlag |
|
|
90
|
-
| --keyword | -k | string | No | - | Keyword search (warehouseName and warehouseCode) | warehouseName / warehouseCode |
|
|
91
|
-
| --classes | — | string | No | - | Warehouse class filter | warehouseClasses |
|
|
92
|
-
| --enable-location | — | boolean | No | - | Filter by location management enabled | enableLocation |
|
|
93
|
-
|
|
94
|
-
## 2.4 Field Mapping Table
|
|
95
|
-
|
|
96
|
-
| CLI Parameter | Query Param / DTO Field | Type Conversion | Validation Rule |
|
|
97
|
-
|---------|---------|----------|----------|
|
|
98
|
-
| --page / -p | pageNo | number, CLI page - 1 | >= 0 |
|
|
99
|
-
| --size / -s | pageSize | number | > 0 |
|
|
100
|
-
| --status | statusFlag | number | 1 or 2 |
|
|
101
|
-
| --keyword / -k | warehouseName / warehouseCode | Direct | max=255 |
|
|
102
|
-
| --classes | warehouseClasses | Direct | max=255 |
|
|
103
|
-
| --enable-location | enableLocation | boolean->String (Y/N) | max=1 |
|
|
104
|
-
|
|
105
|
-
## 2.5 Error Code Reference
|
|
106
|
-
|
|
107
|
-
### ExceptionEnum Location
|
|
108
|
-
```
|
|
109
|
-
coffee-liberica-end/
|
|
110
|
-
└── business/liberica-business-master/master-api/
|
|
111
|
-
└── src/main/java/com/newpeak/liberica/master/api/exception/enums/
|
|
112
|
-
└── MasterWarehouseExceptionEnum.java
|
|
113
|
-
├── MASTER_WAREHOUSE_NOT_EXIST("01001370001", "租户仓库不存在")
|
|
114
|
-
├── MASTER_WAREHOUSE_CODE_FORMAT_CANNOT_EMPTY("01001370002", "仓库编码规则不能为空")
|
|
115
|
-
└── MASTER_WAREHOUSE_CODE_FORMAT_NOT_CORRECT("01001370003", "仓库编码规则格式不正确")
|
|
116
|
-
```
|
|
117
|
-
|
|
118
|
-
### Known Error Codes
|
|
119
|
-
| Error Code | Error Message | Trigger Condition |
|
|
120
|
-
|--------|----------|----------|
|
|
121
|
-
| 01001370001 | Warehouse does not exist | Detail query with non-existent ID |
|
|
122
|
-
|
|
123
|
-
## 2.6 Permission Check
|
|
124
|
-
|
|
125
|
-
| Check Item | Location | Description |
|
|
126
|
-
|--------|------|------|
|
|
127
|
-
| Page Query | No specific permission code on `@GetResource(path = "/page")` | Available to authenticated users |
|
|
128
|
-
|
|
129
|
-
## 2.7 Implementation Notes
|
|
130
|
-
|
|
131
|
-
1. **Pagination**: CLI uses 1-based page numbers. API uses 0-based. Convert: `pageNo = options.page - 1`.
|
|
132
|
-
2. **Response Fields**: Backend returns `rows`, `pageNo`, `pageSize`, `totalRows`. Do NOT use `records` or `total`.
|
|
133
|
-
3. **Keyword Search**: When `--keyword` is provided, send it as both `warehouseName` and `warehouseCode` query params.
|
|
134
|
-
4. **BigInteger ID**: `warehouseId` in response rows must be kept as `string` in TypeScript.
|
|
135
|
-
5. **Table Output**: Default columns: ID, Code, Name, Classes, Location, Status.
|
|
136
|
-
6. **JSON Output**: When `--json` is used, wrap response with standardized pagination object.
|
|
137
|
-
|
|
138
|
-
## 2.8 Example Usage
|
|
139
|
-
|
|
140
|
-
```bash
|
|
141
|
-
# List all warehouses (first page, 20 per page)
|
|
142
|
-
barista liberica warehouses list
|
|
143
|
-
|
|
144
|
-
# List with pagination
|
|
145
|
-
barista liberica warehouses list --page 2 --size 50
|
|
146
|
-
|
|
147
|
-
# Filter by status
|
|
148
|
-
barista liberica warehouses list --status 1
|
|
149
|
-
|
|
150
|
-
# Keyword search
|
|
151
|
-
barista liberica warehouses list --keyword "Main"
|
|
152
|
-
|
|
153
|
-
# Filter by class
|
|
154
|
-
barista liberica warehouses list --classes "FINISHED_GOOD"
|
|
155
|
-
|
|
156
|
-
# JSON output
|
|
157
|
-
barista liberica warehouses list --json
|
|
158
|
-
|
|
159
|
-
# Combine filters
|
|
160
|
-
barista liberica warehouses list \
|
|
161
|
-
--page 1 \
|
|
162
|
-
--size 10 \
|
|
163
|
-
--status 1 \
|
|
164
|
-
--keyword "WH-001" \
|
|
165
|
-
--json
|
|
166
|
-
```
|
|
167
|
-
|
|
168
|
-
## 2.9 API Path
|
|
169
|
-
|
|
170
|
-
```
|
|
171
|
-
GET /api/enterprise/purchases/warehouse/page
|
|
172
|
-
```
|
|
173
|
-
|
|
174
|
-
**Query Parameters:**
|
|
175
|
-
```
|
|
176
|
-
?pageNo=0&pageSize=20&statusFlag=1&warehouseCode=Main&warehouseName=Main
|
|
177
|
-
```
|
|
178
|
-
|
|
179
|
-
**Headers:**
|
|
180
|
-
```
|
|
181
|
-
Authorization: <token> (No "Bearer " prefix)
|
|
182
|
-
```
|
|
183
|
-
|
|
184
|
-
**Note**: Do NOT include `X-TENANT-ID` header. Tenant is extracted from JWT token.
|
|
@@ -1,277 +0,0 @@
|
|
|
1
|
-
import { Command } from 'commander';
|
|
2
|
-
import chalk from 'chalk';
|
|
3
|
-
import inquirer from 'inquirer';
|
|
4
|
-
import { configManager } from '../../../core/config/manager.js';
|
|
5
|
-
import { tokenManager } from '../../../core/auth/token-manager.js';
|
|
6
|
-
import { apiClient } from '../../../core/api/client.js';
|
|
7
|
-
import { Environment } from '../../../types/index.js';
|
|
8
|
-
|
|
9
|
-
export function createArabicaAuthCommand(): Command {
|
|
10
|
-
const authCommand = new Command('auth');
|
|
11
|
-
authCommand.description('Manage Arabica authentication');
|
|
12
|
-
|
|
13
|
-
authCommand.action(async () => {
|
|
14
|
-
await authCommand.help();
|
|
15
|
-
});
|
|
16
|
-
|
|
17
|
-
authCommand
|
|
18
|
-
.command('login')
|
|
19
|
-
.description('Login to Arabica')
|
|
20
|
-
.arguments('<env> [account] [password]')
|
|
21
|
-
.option('--env <environment>', 'Environment (dev|test|prod-cn|prod-jp)')
|
|
22
|
-
.option('--account <account>', 'Account (username or email)')
|
|
23
|
-
.option('--password <password>', 'Password')
|
|
24
|
-
.option('--remember', 'Remember login status')
|
|
25
|
-
.action(async (env: string, account: string, password: string, options: Record<string, any>) => {
|
|
26
|
-
const context = configManager.getCurrentContext();
|
|
27
|
-
const environment = (options.env as Environment) || env || context.environment;
|
|
28
|
-
const rememberMe = options.remember || false;
|
|
29
|
-
|
|
30
|
-
console.log(chalk.bold(`\n🔐 Login to Arabica (${environment})\n`));
|
|
31
|
-
|
|
32
|
-
let resolvedAccount = options.account || account;
|
|
33
|
-
let resolvedPassword = options.password || password;
|
|
34
|
-
|
|
35
|
-
if (!resolvedAccount) {
|
|
36
|
-
const { account: inputAccount } = await inquirer.prompt([
|
|
37
|
-
{
|
|
38
|
-
type: 'input',
|
|
39
|
-
name: 'account',
|
|
40
|
-
message: 'Enter account (username or email):',
|
|
41
|
-
validate: (input: string) => input.length > 0 || 'Account is required',
|
|
42
|
-
},
|
|
43
|
-
]);
|
|
44
|
-
resolvedAccount = inputAccount;
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
if (!resolvedPassword) {
|
|
48
|
-
const { password: inputPassword } = await inquirer.prompt([
|
|
49
|
-
{
|
|
50
|
-
type: 'password',
|
|
51
|
-
name: 'password',
|
|
52
|
-
message: 'Enter password:',
|
|
53
|
-
validate: (input: string) => input.length > 0 || 'Password is required',
|
|
54
|
-
},
|
|
55
|
-
]);
|
|
56
|
-
resolvedPassword = inputPassword;
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
try {
|
|
60
|
-
const response = await apiClient.loginArabica(environment, resolvedAccount, resolvedPassword, rememberMe);
|
|
61
|
-
|
|
62
|
-
if (response.success && response.data) {
|
|
63
|
-
try {
|
|
64
|
-
await tokenManager.setToken(
|
|
65
|
-
{
|
|
66
|
-
service: 'arabica',
|
|
67
|
-
environment,
|
|
68
|
-
},
|
|
69
|
-
response.data.token
|
|
70
|
-
);
|
|
71
|
-
} catch (keytarError) {
|
|
72
|
-
console.error(chalk.red(`\n✗ Failed to save token to keychain: ${keytarError instanceof Error ? keytarError.message : 'Unknown error'}`));
|
|
73
|
-
console.error(chalk.gray(' This may occur in headless environments without D-Bus/X11.'));
|
|
74
|
-
console.error(chalk.gray(' The login was successful but the token could not be persisted.\n'));
|
|
75
|
-
process.exit(1);
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
console.log(chalk.green('\n✓ Login successful'));
|
|
79
|
-
if (response.data.expiresAt) {
|
|
80
|
-
console.log(chalk.gray(` Token expires: ${response.data.expiresAt}`));
|
|
81
|
-
}
|
|
82
|
-
console.log();
|
|
83
|
-
} else {
|
|
84
|
-
console.error(chalk.red(`\n✗ Login failed: ${response.error?.message || 'Unknown error'}`));
|
|
85
|
-
if (response.error?.code) {
|
|
86
|
-
console.error(chalk.gray(` Error code: ${response.error.code}`));
|
|
87
|
-
}
|
|
88
|
-
console.error();
|
|
89
|
-
process.exit(1);
|
|
90
|
-
}
|
|
91
|
-
} catch (error) {
|
|
92
|
-
console.error(chalk.red(`\n✗ Login error: ${error instanceof Error ? error.message : 'Unknown error'}\n`));
|
|
93
|
-
process.exit(1);
|
|
94
|
-
}
|
|
95
|
-
});
|
|
96
|
-
|
|
97
|
-
authCommand
|
|
98
|
-
.command('register')
|
|
99
|
-
.description('Register new Arabica account')
|
|
100
|
-
.arguments('[env] [email] [password] [phone] [username]')
|
|
101
|
-
.option('--env <environment>', 'Environment (dev|test|prod-cn|prod-jp)')
|
|
102
|
-
.option('--email <email>', 'Email address')
|
|
103
|
-
.option('--password <password>', 'Password')
|
|
104
|
-
.option('--phone <phone>', 'Phone number')
|
|
105
|
-
.option('--username <username>', 'User name')
|
|
106
|
-
.option('--policy <policy>', 'Policy agreement (e.g., Y)')
|
|
107
|
-
.option('--privacy <privacy>', 'Privacy agreement (e.g., Y)')
|
|
108
|
-
.action(async (env: string, email: string, password: string, phone: string, username: string, options: Record<string, any>) => {
|
|
109
|
-
const context = configManager.getCurrentContext();
|
|
110
|
-
const environment = (options.env as Environment) || env || context.environment;
|
|
111
|
-
|
|
112
|
-
console.log(chalk.bold(`\n📝 Register to Arabica (${environment})\n`));
|
|
113
|
-
|
|
114
|
-
let resolvedEmail = options.email || email;
|
|
115
|
-
let resolvedPassword = options.password || password;
|
|
116
|
-
let resolvedPhone = options.phone || phone;
|
|
117
|
-
let resolvedUsername = options.username || username;
|
|
118
|
-
let resolvedPolicy = options.policy;
|
|
119
|
-
let resolvedPrivacy = options.privacy;
|
|
120
|
-
|
|
121
|
-
if (!resolvedEmail) {
|
|
122
|
-
const { email: inputEmail } = await inquirer.prompt([
|
|
123
|
-
{
|
|
124
|
-
type: 'input',
|
|
125
|
-
name: 'email',
|
|
126
|
-
message: 'Enter email address:',
|
|
127
|
-
validate: (input: string) => input.length > 0 || 'Email is required',
|
|
128
|
-
},
|
|
129
|
-
]);
|
|
130
|
-
resolvedEmail = inputEmail;
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
if (!resolvedPassword) {
|
|
134
|
-
const { password: inputPassword } = await inquirer.prompt([
|
|
135
|
-
{
|
|
136
|
-
type: 'password',
|
|
137
|
-
name: 'password',
|
|
138
|
-
message: 'Enter password:',
|
|
139
|
-
validate: (input: string) => input.length > 0 || 'Password is required',
|
|
140
|
-
},
|
|
141
|
-
]);
|
|
142
|
-
resolvedPassword = inputPassword;
|
|
143
|
-
}
|
|
144
|
-
|
|
145
|
-
if (!resolvedPhone) {
|
|
146
|
-
const { phone: inputPhone } = await inquirer.prompt([
|
|
147
|
-
{
|
|
148
|
-
type: 'input',
|
|
149
|
-
name: 'phone',
|
|
150
|
-
message: 'Enter phone number:',
|
|
151
|
-
validate: (input: string) => input.length > 0 || 'Phone is required',
|
|
152
|
-
},
|
|
153
|
-
]);
|
|
154
|
-
resolvedPhone = inputPhone;
|
|
155
|
-
}
|
|
156
|
-
|
|
157
|
-
if (!resolvedUsername) {
|
|
158
|
-
const { username: inputUsername } = await inquirer.prompt([
|
|
159
|
-
{
|
|
160
|
-
type: 'input',
|
|
161
|
-
name: 'username',
|
|
162
|
-
message: 'Enter user name:',
|
|
163
|
-
validate: (input: string) => input.length > 0 || 'User name is required',
|
|
164
|
-
},
|
|
165
|
-
]);
|
|
166
|
-
resolvedUsername = inputUsername;
|
|
167
|
-
}
|
|
168
|
-
|
|
169
|
-
if (!resolvedPolicy) {
|
|
170
|
-
const { policy: inputPolicy } = await inquirer.prompt([
|
|
171
|
-
{
|
|
172
|
-
type: 'input',
|
|
173
|
-
name: 'policy',
|
|
174
|
-
message: 'Policy agreement (press Enter for Y):',
|
|
175
|
-
default: 'Y',
|
|
176
|
-
},
|
|
177
|
-
]);
|
|
178
|
-
resolvedPolicy = inputPolicy || 'Y';
|
|
179
|
-
}
|
|
180
|
-
|
|
181
|
-
if (!resolvedPrivacy) {
|
|
182
|
-
const { privacy: inputPrivacy } = await inquirer.prompt([
|
|
183
|
-
{
|
|
184
|
-
type: 'input',
|
|
185
|
-
name: 'privacy',
|
|
186
|
-
message: 'Privacy agreement (press Enter for Y):',
|
|
187
|
-
default: 'Y',
|
|
188
|
-
},
|
|
189
|
-
]);
|
|
190
|
-
resolvedPrivacy = inputPrivacy || 'Y';
|
|
191
|
-
}
|
|
192
|
-
|
|
193
|
-
try {
|
|
194
|
-
const response = await apiClient.registerArabica(
|
|
195
|
-
environment,
|
|
196
|
-
resolvedEmail,
|
|
197
|
-
resolvedEmail,
|
|
198
|
-
resolvedPassword,
|
|
199
|
-
resolvedPhone,
|
|
200
|
-
resolvedUsername,
|
|
201
|
-
resolvedPolicy,
|
|
202
|
-
resolvedPrivacy
|
|
203
|
-
);
|
|
204
|
-
|
|
205
|
-
if (response.success && response.data) {
|
|
206
|
-
console.log(chalk.green('\n✓ Registration successful'));
|
|
207
|
-
if (response.data.userId) {
|
|
208
|
-
console.log(chalk.gray(` User ID: ${response.data.userId}`));
|
|
209
|
-
}
|
|
210
|
-
console.log();
|
|
211
|
-
} else {
|
|
212
|
-
console.error(chalk.red(`\n✗ Registration failed: ${response.error?.message || 'Unknown error'}`));
|
|
213
|
-
if (response.error?.code) {
|
|
214
|
-
console.error(chalk.gray(` Error code: ${response.error.code}`));
|
|
215
|
-
}
|
|
216
|
-
console.error();
|
|
217
|
-
process.exit(1);
|
|
218
|
-
}
|
|
219
|
-
} catch (error) {
|
|
220
|
-
console.error(chalk.red(`\n✗ Registration error: ${error instanceof Error ? error.message : 'Unknown error'}\n`));
|
|
221
|
-
process.exit(1);
|
|
222
|
-
}
|
|
223
|
-
});
|
|
224
|
-
|
|
225
|
-
authCommand
|
|
226
|
-
.command('status')
|
|
227
|
-
.description('Check Arabica authentication status')
|
|
228
|
-
.action(async () => {
|
|
229
|
-
const environments: Environment[] = ['dev', 'test', 'prod-cn', 'prod-jp'];
|
|
230
|
-
|
|
231
|
-
console.log(chalk.bold('\n🔐 Arabica Authentication Status\n'));
|
|
232
|
-
|
|
233
|
-
for (const env of environments) {
|
|
234
|
-
const token = await tokenManager.getToken({ service: 'arabica', environment: env });
|
|
235
|
-
const statusIcon = token ? chalk.green('✓') : chalk.red('✗');
|
|
236
|
-
const statusText = token ? 'Logged in' : 'Not logged in';
|
|
237
|
-
console.log(` ${statusIcon} ${chalk.gray('arabica')} (${env}): ${statusText}`);
|
|
238
|
-
}
|
|
239
|
-
console.log();
|
|
240
|
-
});
|
|
241
|
-
|
|
242
|
-
authCommand
|
|
243
|
-
.command('logout')
|
|
244
|
-
.description('Logout from Arabica and clear token')
|
|
245
|
-
.option('--env <environment>', 'Environment (dev|test|prod-cn|prod-jp)')
|
|
246
|
-
.option('--all', 'Clear all Arabica tokens')
|
|
247
|
-
.action(async (options) => {
|
|
248
|
-
if (options.all) {
|
|
249
|
-
const allTokens = await tokenManager.findAllTokens();
|
|
250
|
-
for (const cred of allTokens) {
|
|
251
|
-
const parts = cred.account.split(':');
|
|
252
|
-
if (parts[0] === 'arabica') {
|
|
253
|
-
await tokenManager.deleteToken({
|
|
254
|
-
service: 'arabica',
|
|
255
|
-
environment: parts[1] as Environment,
|
|
256
|
-
});
|
|
257
|
-
}
|
|
258
|
-
}
|
|
259
|
-
console.log(chalk.green('\n✓ All Arabica tokens cleared\n'));
|
|
260
|
-
} else {
|
|
261
|
-
const environment = (options.env as Environment) || configManager.getCurrentContext().environment;
|
|
262
|
-
|
|
263
|
-
const deleted = await tokenManager.deleteToken({
|
|
264
|
-
service: 'arabica',
|
|
265
|
-
environment,
|
|
266
|
-
});
|
|
267
|
-
|
|
268
|
-
if (deleted) {
|
|
269
|
-
console.log(chalk.green(`\n✓ Token cleared for Arabica (${environment})\n`));
|
|
270
|
-
} else {
|
|
271
|
-
console.log(chalk.gray(`\nNo token found for Arabica (${environment})\n`));
|
|
272
|
-
}
|
|
273
|
-
}
|
|
274
|
-
});
|
|
275
|
-
|
|
276
|
-
return authCommand;
|
|
277
|
-
}
|