@bolta-io/cli 0.0.18 → 0.2.0
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/CHANGELOG.md +18 -0
- package/CLAUDE.md +43 -24
- package/README.md +54 -22
- package/dist/bin/bolta.js +29 -30
- package/dist/bin/bolta.js.map +1 -1
- package/dist/src/client/bolta-client.d.ts +26 -19
- package/dist/src/client/bolta-client.d.ts.map +1 -1
- package/dist/src/client/bolta-client.js +71 -48
- package/dist/src/client/bolta-client.js.map +1 -1
- package/dist/src/commands/cash-receipt/cancel.d.ts +5 -0
- package/dist/src/commands/cash-receipt/cancel.d.ts.map +1 -0
- package/dist/src/commands/cash-receipt/cancel.js +27 -0
- package/dist/src/commands/cash-receipt/cancel.js.map +1 -0
- package/dist/src/commands/cash-receipt/index.d.ts +3 -0
- package/dist/src/commands/cash-receipt/index.d.ts.map +1 -0
- package/dist/src/commands/cash-receipt/index.js +63 -0
- package/dist/src/commands/cash-receipt/index.js.map +1 -0
- package/dist/src/commands/cash-receipt/issue.d.ts +8 -0
- package/dist/src/commands/cash-receipt/issue.d.ts.map +1 -0
- package/dist/src/commands/cash-receipt/issue.js +29 -0
- package/dist/src/commands/cash-receipt/issue.js.map +1 -0
- package/dist/src/commands/cash-receipt/status.d.ts +5 -0
- package/dist/src/commands/cash-receipt/status.d.ts.map +1 -0
- package/dist/src/commands/cash-receipt/status.js +17 -0
- package/dist/src/commands/cash-receipt/status.js.map +1 -0
- package/dist/src/commands/certificate/index.d.ts.map +1 -1
- package/dist/src/commands/certificate/index.js +19 -42
- package/dist/src/commands/certificate/index.js.map +1 -1
- package/dist/src/commands/config/index.d.ts.map +1 -1
- package/dist/src/commands/config/index.js +17 -54
- package/dist/src/commands/config/index.js.map +1 -1
- package/dist/src/commands/examples/index.d.ts.map +1 -1
- package/dist/src/commands/examples/index.js +73 -9
- package/dist/src/commands/examples/index.js.map +1 -1
- package/dist/src/commands/guide/index.d.ts.map +1 -1
- package/dist/src/commands/guide/index.js +71 -27
- package/dist/src/commands/guide/index.js.map +1 -1
- package/dist/src/commands/invoice/amend.d.ts.map +1 -1
- package/dist/src/commands/invoice/amend.js +9 -30
- package/dist/src/commands/invoice/amend.js.map +1 -1
- package/dist/src/commands/invoice/get.d.ts.map +1 -1
- package/dist/src/commands/invoice/get.js +2 -7
- package/dist/src/commands/invoice/get.js.map +1 -1
- package/dist/src/commands/invoice/index.js +1 -1
- package/dist/src/commands/invoice/issue-request.d.ts.map +1 -1
- package/dist/src/commands/invoice/issue-request.js +3 -15
- package/dist/src/commands/invoice/issue-request.js.map +1 -1
- package/dist/src/commands/invoice/issue.d.ts.map +1 -1
- package/dist/src/commands/invoice/issue.js +3 -15
- package/dist/src/commands/invoice/issue.js.map +1 -1
- package/dist/src/commands/invoice/status.d.ts.map +1 -1
- package/dist/src/commands/invoice/status.js +2 -7
- package/dist/src/commands/invoice/status.js.map +1 -1
- package/dist/src/commands/issuer/create.d.ts +4 -0
- package/dist/src/commands/issuer/create.d.ts.map +1 -0
- package/dist/src/commands/issuer/create.js +24 -0
- package/dist/src/commands/issuer/create.js.map +1 -0
- package/dist/src/commands/issuer/get.d.ts +3 -0
- package/dist/src/commands/issuer/get.d.ts.map +1 -0
- package/dist/src/commands/issuer/get.js +14 -0
- package/dist/src/commands/issuer/get.js.map +1 -0
- package/dist/src/commands/issuer/index.d.ts +3 -0
- package/dist/src/commands/issuer/index.d.ts.map +1 -0
- package/dist/src/commands/issuer/index.js +31 -0
- package/dist/src/commands/issuer/index.js.map +1 -0
- package/dist/src/commands/schema/index.d.ts.map +1 -1
- package/dist/src/commands/schema/index.js +4 -4
- package/dist/src/commands/schema/index.js.map +1 -1
- package/dist/src/commands/supplier/legacy.d.ts +3 -0
- package/dist/src/commands/supplier/legacy.d.ts.map +1 -0
- package/dist/src/commands/supplier/legacy.js +75 -0
- package/dist/src/commands/supplier/legacy.js.map +1 -0
- package/dist/src/config/config-manager.d.ts +7 -9
- package/dist/src/config/config-manager.d.ts.map +1 -1
- package/dist/src/config/config-manager.js +28 -48
- package/dist/src/config/config-manager.js.map +1 -1
- package/dist/src/types/api.d.ts +86 -7
- package/dist/src/types/api.d.ts.map +1 -1
- package/dist/src/utils/client.d.ts +10 -7
- package/dist/src/utils/client.d.ts.map +1 -1
- package/dist/src/utils/client.js +26 -10
- package/dist/src/utils/client.js.map +1 -1
- package/dist/src/utils/errors.d.ts +2 -2
- package/dist/src/utils/errors.d.ts.map +1 -1
- package/dist/src/utils/errors.js +4 -4
- package/dist/src/utils/errors.js.map +1 -1
- package/dist/src/utils/legacy-issuer.d.ts +28 -0
- package/dist/src/utils/legacy-issuer.d.ts.map +1 -0
- package/dist/src/utils/legacy-issuer.js +45 -0
- package/dist/src/utils/legacy-issuer.js.map +1 -0
- package/dist/src/utils/output.d.ts +7 -3
- package/dist/src/utils/output.d.ts.map +1 -1
- package/dist/src/utils/output.js +14 -4
- package/dist/src/utils/output.js.map +1 -1
- package/dist/src/validators/parse.d.ts +3 -0
- package/dist/src/validators/parse.d.ts.map +1 -0
- package/dist/src/validators/parse.js +15 -0
- package/dist/src/validators/parse.js.map +1 -0
- package/dist/src/validators/schemas.d.ts +182 -1
- package/dist/src/validators/schemas.d.ts.map +1 -1
- package/dist/src/validators/schemas.js +230 -7
- package/dist/src/validators/schemas.js.map +1 -1
- package/llms.txt +47 -34
- package/package.json +4 -2
- package/dist/src/commands/supplier/create.d.ts +0 -4
- package/dist/src/commands/supplier/create.d.ts.map +0 -1
- package/dist/src/commands/supplier/create.js +0 -40
- package/dist/src/commands/supplier/create.js.map +0 -1
- package/dist/src/commands/supplier/get.d.ts +0 -3
- package/dist/src/commands/supplier/get.d.ts.map +0 -1
- package/dist/src/commands/supplier/get.js +0 -19
- package/dist/src/commands/supplier/get.js.map +0 -1
- package/dist/src/commands/supplier/index.d.ts +0 -3
- package/dist/src/commands/supplier/index.d.ts.map +0 -1
- package/dist/src/commands/supplier/index.js +0 -56
- package/dist/src/commands/supplier/index.js.map +0 -1
- package/dist/src/commands/supplier/legacy-customer.d.ts +0 -5
- package/dist/src/commands/supplier/legacy-customer.d.ts.map +0 -1
- package/dist/src/commands/supplier/legacy-customer.js +0 -56
- package/dist/src/commands/supplier/legacy-customer.js.map +0 -1
|
@@ -1,27 +1,28 @@
|
|
|
1
|
-
import { loadConfig, saveConfig, resolveApiKey, resolveBaseUrl, maskApiKey,
|
|
2
|
-
import { outputSuccess, outputError,
|
|
1
|
+
import { loadConfig, saveConfig, resolveApiKey, resolveBaseUrl, maskApiKey, } from '../../config/config-manager.js';
|
|
2
|
+
import { outputSuccess, outputError, legacyIssuerWarning } from '../../utils/output.js';
|
|
3
3
|
import { BoltaClient } from '../../client/bolta-client.js';
|
|
4
4
|
import { BoltaError, BoltaApiError } from '../../utils/errors.js';
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
function replaceLegacyIssuerKey(config, key, value) {
|
|
6
|
+
delete config.supplierKey;
|
|
7
|
+
delete config.customerKey;
|
|
7
8
|
if (!value)
|
|
8
9
|
return;
|
|
9
|
-
|
|
10
|
-
|
|
10
|
+
legacyIssuerWarning(`'config set ${key}'`);
|
|
11
|
+
if (key === 'supplier-key') {
|
|
12
|
+
config.supplierKey = value;
|
|
11
13
|
}
|
|
12
|
-
|
|
13
|
-
|
|
14
|
+
else {
|
|
15
|
+
config.customerKey = value;
|
|
14
16
|
}
|
|
15
17
|
}
|
|
16
18
|
export function registerConfigCommands(program) {
|
|
17
19
|
const config = program.command('config').description('CLI 설정 관리');
|
|
18
20
|
config
|
|
19
21
|
.command('set <key> <value>')
|
|
20
|
-
.description('설정값 저장 (api-key,
|
|
22
|
+
.description('설정값 저장 (api-key, base-url, update-check)')
|
|
21
23
|
.addHelpText('after', `
|
|
22
24
|
Examples:
|
|
23
25
|
bolta config set api-key test_your_key_here
|
|
24
|
-
bolta config set supplier-key SupplierKey_abc123
|
|
25
26
|
bolta config set base-url https://xapi.bolta.io/v1
|
|
26
27
|
bolta config set update-check false`)
|
|
27
28
|
.action(async (key, value) => {
|
|
@@ -34,16 +35,9 @@ Examples:
|
|
|
34
35
|
current.apiKey = trimmedValue;
|
|
35
36
|
break;
|
|
36
37
|
case 'supplier-key':
|
|
37
|
-
warnIfSuspiciousSupplierKey(trimmedValue);
|
|
38
|
-
current.supplierKey = trimmedValue;
|
|
39
|
-
// 구 필드가 남아있으면 정리
|
|
40
|
-
delete current.customerKey;
|
|
41
|
-
break;
|
|
42
38
|
case 'customer-key':
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
current.supplierKey = trimmedValue;
|
|
46
|
-
delete current.customerKey;
|
|
39
|
+
// 두 레거시 이름은 하나의 설정이다. 마지막으로 입력한 이름과 값만 보존한다.
|
|
40
|
+
replaceLegacyIssuerKey(current, key, trimmedValue);
|
|
47
41
|
break;
|
|
48
42
|
case 'base-url':
|
|
49
43
|
current.baseUrl = trimmedValue;
|
|
@@ -55,7 +49,7 @@ Examples:
|
|
|
55
49
|
current.updateCheck = value === 'true';
|
|
56
50
|
break;
|
|
57
51
|
default:
|
|
58
|
-
throw new BoltaError(`알 수 없는 설정 키: ${key}`, 'CONFIG_ERROR', 'api-key,
|
|
52
|
+
throw new BoltaError(`알 수 없는 설정 키: ${key}`, 'CONFIG_ERROR', 'api-key, base-url, update-check 중 하나를 사용하세요.');
|
|
59
53
|
}
|
|
60
54
|
saveConfig(current);
|
|
61
55
|
outputSuccess({ key, message: '설정이 저장되었습니다.' });
|
|
@@ -70,17 +64,14 @@ Examples:
|
|
|
70
64
|
.action(() => {
|
|
71
65
|
try {
|
|
72
66
|
const apiKey = resolveApiKey();
|
|
73
|
-
const supplier = resolveSupplierKeyWithSource();
|
|
74
67
|
const baseUrl = resolveBaseUrl();
|
|
75
68
|
const savedConfig = loadConfig();
|
|
76
69
|
outputSuccess({
|
|
77
70
|
apiKey: apiKey ? maskApiKey(apiKey) : '(미설정)',
|
|
78
|
-
supplierKey: supplier.value ? maskApiKey(supplier.value) : '(미설정)',
|
|
79
71
|
baseUrl,
|
|
80
72
|
updateCheck: savedConfig.updateCheck !== false,
|
|
81
73
|
source: {
|
|
82
74
|
apiKey: apiKey ? (process.env.BOLTA_API_KEY ? 'env' : 'config') : 'none',
|
|
83
|
-
supplierKey: supplierKeySourceLabel(supplier.source),
|
|
84
75
|
},
|
|
85
76
|
});
|
|
86
77
|
}
|
|
@@ -98,11 +89,11 @@ Examples:
|
|
|
98
89
|
throw new BoltaError('API 키가 설정되지 않았습니다.', 'AUTH_ERROR', "BOLTA_API_KEY 환경변수를 설정하거나 'bolta config set api-key <key>'를 실행하세요.");
|
|
99
90
|
}
|
|
100
91
|
const client = new BoltaClient({ apiKey, baseUrl: resolveBaseUrl() });
|
|
101
|
-
//
|
|
102
|
-
//
|
|
92
|
+
// API 키 인증 점검: 존재하지 않는 발급자를 조회한다.
|
|
93
|
+
// 서버는 404 또는 403을 반환하므로,
|
|
103
94
|
// 인증 실패를 뜻하는 401은 AUTH_ERROR로, 403/404는 "인증됨"으로 판정한다.
|
|
104
95
|
try {
|
|
105
|
-
await client.
|
|
96
|
+
await client.getIssuer('__auth_probe__');
|
|
106
97
|
}
|
|
107
98
|
catch (err) {
|
|
108
99
|
if (err instanceof BoltaApiError && err.statusCode === 401) {
|
|
@@ -113,37 +104,9 @@ Examples:
|
|
|
113
104
|
throw err;
|
|
114
105
|
}
|
|
115
106
|
}
|
|
116
|
-
// 2) supplierKey가 설정돼 있으면 이 API 키로 유효한지 실제 조회한다.
|
|
117
|
-
const supplier = resolveSupplierKeyWithSource();
|
|
118
|
-
let supplierKeyResult;
|
|
119
|
-
if (!supplier.value) {
|
|
120
|
-
supplierKeyResult = { configured: false };
|
|
121
|
-
}
|
|
122
|
-
else {
|
|
123
|
-
const source = supplierKeySourceLabel(supplier.source);
|
|
124
|
-
try {
|
|
125
|
-
await client.getSupplier(supplier.value);
|
|
126
|
-
supplierKeyResult = { configured: true, source, valid: true, message: 'supplierKey가 유효합니다.' };
|
|
127
|
-
}
|
|
128
|
-
catch (err) {
|
|
129
|
-
if (err instanceof BoltaApiError && (err.statusCode === 403 || err.statusCode === 404)) {
|
|
130
|
-
supplierKeyResult = {
|
|
131
|
-
configured: true,
|
|
132
|
-
source,
|
|
133
|
-
valid: false,
|
|
134
|
-
message: '이 API 키로는 존재하지 않거나 사용할 수 없는 supplierKey입니다. supplierKey는 test_/live_ 및 API 키마다 다릅니다. ' +
|
|
135
|
-
'환경변수 BOLTA_SUPPLIER_KEY/BOLTA_CUSTOMER_KEY가 config를 덮고 있지 않은지 확인하세요.',
|
|
136
|
-
};
|
|
137
|
-
}
|
|
138
|
-
else {
|
|
139
|
-
throw err;
|
|
140
|
-
}
|
|
141
|
-
}
|
|
142
|
-
}
|
|
143
107
|
outputSuccess({
|
|
144
108
|
authenticated: true,
|
|
145
109
|
message: 'API 인증이 정상입니다.',
|
|
146
|
-
supplierKey: supplierKeyResult,
|
|
147
110
|
});
|
|
148
111
|
}
|
|
149
112
|
catch (err) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/commands/config/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,UAAU,EACV,UAAU,EACV,aAAa,EACb,cAAc,EACd,UAAU,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/commands/config/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/commands/examples/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/commands/examples/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAoPpC,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAuD9D"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { outputSuccess, outputError,
|
|
1
|
+
import { outputSuccess, outputError, resolveLegacyIssuerName, LEGACY_ISSUER_CREATE_ALIASES, } from '../../utils/output.js';
|
|
2
2
|
import { BoltaError } from '../../utils/errors.js';
|
|
3
3
|
function today() {
|
|
4
4
|
return new Date().toISOString().slice(0, 10);
|
|
@@ -7,8 +7,8 @@ function buildExamples() {
|
|
|
7
7
|
const d = today();
|
|
8
8
|
const [year, month] = d.split('-');
|
|
9
9
|
return {
|
|
10
|
-
'
|
|
11
|
-
description: '
|
|
10
|
+
'issuer-create': {
|
|
11
|
+
description: '발급자 등록',
|
|
12
12
|
data: {
|
|
13
13
|
identificationNumber: '1234567890',
|
|
14
14
|
organizationName: '주식회사 테스트',
|
|
@@ -30,7 +30,7 @@ function buildExamples() {
|
|
|
30
30
|
businessType: '서비스업',
|
|
31
31
|
businessItem: '소프트웨어 개발',
|
|
32
32
|
manager: {
|
|
33
|
-
email: '
|
|
33
|
+
email: 'seller@example.com',
|
|
34
34
|
name: '김매니저',
|
|
35
35
|
telephone: '010-1234-5678',
|
|
36
36
|
},
|
|
@@ -80,7 +80,7 @@ function buildExamples() {
|
|
|
80
80
|
businessType: '서비스업',
|
|
81
81
|
businessItem: '소프트웨어 개발',
|
|
82
82
|
manager: {
|
|
83
|
-
email: '
|
|
83
|
+
email: 'seller@example.com',
|
|
84
84
|
name: '김매니저',
|
|
85
85
|
telephone: null,
|
|
86
86
|
},
|
|
@@ -126,7 +126,7 @@ function buildExamples() {
|
|
|
126
126
|
identificationNumber: '1234567890',
|
|
127
127
|
organizationName: '공급자 주식회사',
|
|
128
128
|
representativeName: '김공급',
|
|
129
|
-
manager: { email: '
|
|
129
|
+
manager: { email: 'seller@example.com' },
|
|
130
130
|
},
|
|
131
131
|
supplied: {
|
|
132
132
|
identificationNumber: '0987654321',
|
|
@@ -144,6 +144,68 @@ function buildExamples() {
|
|
|
144
144
|
],
|
|
145
145
|
},
|
|
146
146
|
},
|
|
147
|
+
'cash-receipt-issue': {
|
|
148
|
+
description: '현금영수증 발행 (휴대폰번호)',
|
|
149
|
+
data: {
|
|
150
|
+
itemName: '서비스 이용료',
|
|
151
|
+
issuer: {
|
|
152
|
+
businessRegistrationNumber: '5648102684',
|
|
153
|
+
organizationName: '(주) 볼타코퍼레이션',
|
|
154
|
+
representativeName: '이문혁',
|
|
155
|
+
telephone: '02-1234-5678',
|
|
156
|
+
},
|
|
157
|
+
recipient: {
|
|
158
|
+
type: 'PHONE',
|
|
159
|
+
value: '010-1234-5678',
|
|
160
|
+
},
|
|
161
|
+
amount: {
|
|
162
|
+
supplyAmount: 100,
|
|
163
|
+
vatAmount: 10,
|
|
164
|
+
taxFreeAmount: 0,
|
|
165
|
+
},
|
|
166
|
+
},
|
|
167
|
+
},
|
|
168
|
+
'cash-receipt-issue-business': {
|
|
169
|
+
description: '현금영수증 발행 (사업자 지출증빙)',
|
|
170
|
+
data: {
|
|
171
|
+
itemName: '서비스 이용료',
|
|
172
|
+
issuer: {
|
|
173
|
+
businessRegistrationNumber: '5648102684',
|
|
174
|
+
organizationName: '(주) 볼타코퍼레이션',
|
|
175
|
+
representativeName: '이문혁',
|
|
176
|
+
telephone: '02-1234-5678',
|
|
177
|
+
},
|
|
178
|
+
recipient: {
|
|
179
|
+
type: 'BUSINESS_REGISTRATION_NUMBER',
|
|
180
|
+
value: '1234567891',
|
|
181
|
+
},
|
|
182
|
+
amount: {
|
|
183
|
+
supplyAmount: 100000,
|
|
184
|
+
vatAmount: 10000,
|
|
185
|
+
taxFreeAmount: 0,
|
|
186
|
+
},
|
|
187
|
+
},
|
|
188
|
+
},
|
|
189
|
+
'cash-receipt-issue-self': {
|
|
190
|
+
description: '현금영수증 발행 (자진발급)',
|
|
191
|
+
data: {
|
|
192
|
+
itemName: '서비스 이용료',
|
|
193
|
+
issuer: {
|
|
194
|
+
businessRegistrationNumber: '5648102684',
|
|
195
|
+
organizationName: '(주) 볼타코퍼레이션',
|
|
196
|
+
representativeName: '이문혁',
|
|
197
|
+
telephone: '02-1234-5678',
|
|
198
|
+
},
|
|
199
|
+
recipient: {
|
|
200
|
+
type: 'SELF',
|
|
201
|
+
},
|
|
202
|
+
amount: {
|
|
203
|
+
supplyAmount: 100,
|
|
204
|
+
vatAmount: 10,
|
|
205
|
+
taxFreeAmount: 0,
|
|
206
|
+
},
|
|
207
|
+
},
|
|
208
|
+
},
|
|
147
209
|
'amend-termination': {
|
|
148
210
|
description: '수정발행: 계약 해제',
|
|
149
211
|
data: {
|
|
@@ -177,10 +239,13 @@ export function registerExamplesCommand(program) {
|
|
|
177
239
|
.description('샘플 JSON 데이터 출력 (AI 에이전트용)')
|
|
178
240
|
.addHelpText('after', `
|
|
179
241
|
Available examples:
|
|
180
|
-
|
|
242
|
+
issuer-create 발급자 등록
|
|
181
243
|
invoice-issue 세금계산서 정발행
|
|
182
244
|
invoice-issue-foreign-supplied 외국인등록번호 공급받는자 세금계산서 정발행
|
|
183
245
|
invoice-issue-request 세금계산서 역발행 요청
|
|
246
|
+
cash-receipt-issue 현금영수증 발행 (휴대폰번호)
|
|
247
|
+
cash-receipt-issue-business 현금영수증 발행 (사업자 지출증빙)
|
|
248
|
+
cash-receipt-issue-self 현금영수증 발행 (자진발급)
|
|
184
249
|
amend-termination 수정발행: 계약 해제
|
|
185
250
|
amend-change-supply-cost 수정발행: 공급가액 변동
|
|
186
251
|
amend-double-issuance 수정발행: 착오에 의한 이중발급
|
|
@@ -200,8 +265,7 @@ Examples:
|
|
|
200
265
|
outputSuccess({ availableExamples: list });
|
|
201
266
|
return;
|
|
202
267
|
}
|
|
203
|
-
|
|
204
|
-
commandName = resolveDeprecatedName(commandName, { 'customer-create': 'supplier-create' }, '예제');
|
|
268
|
+
commandName = resolveLegacyIssuerName(commandName, LEGACY_ISSUER_CREATE_ALIASES, '예제');
|
|
205
269
|
const example = examples[commandName];
|
|
206
270
|
if (!example) {
|
|
207
271
|
const available = Object.keys(examples).join(', ');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/commands/examples/index.ts"],"names":[],"mappings":"AACA,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/commands/examples/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/commands/guide/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,UAAU,UAAU;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,iBAAS,gBAAgB,IAAI,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/commands/guide/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,UAAU,UAAU;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,iBAAS,gBAAgB,IAAI,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CA6GtD;AAED,OAAO,EAAE,gBAAgB,EAAE,CAAC;AAE5B,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAwD3D"}
|
|
@@ -1,21 +1,22 @@
|
|
|
1
|
-
import { outputSuccess, outputError,
|
|
1
|
+
import { outputSuccess, outputError, resolveLegacyIssuerName } from '../../utils/output.js';
|
|
2
2
|
import { BoltaError } from '../../utils/errors.js';
|
|
3
3
|
function buildGuideTopics() {
|
|
4
4
|
return {
|
|
5
|
-
|
|
6
|
-
title: '
|
|
7
|
-
summary: '
|
|
5
|
+
issuer: {
|
|
6
|
+
title: '발급자 이해하기',
|
|
7
|
+
summary: '발급자는 세금계산서나 현금영수증 발행에 사용하는 인증서의 소유자입니다.',
|
|
8
8
|
details: {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
9
|
+
등록방법: '발급할 사업자 정보로 bolta issuer create 호출 → 응답의 issuerId 저장',
|
|
10
|
+
관리방법: 'issuerId는 발급자 조회와 인증서 등록·조회·해제에만 사용',
|
|
11
|
+
발행방법: 'API 키로 인증하고 요청 본문의 사업자등록번호로 발급자를 선택',
|
|
12
|
+
발행주체판별: {
|
|
13
|
+
일반정발행과역발행: 'supplier.identificationNumber',
|
|
14
|
+
현금영수증: 'issuer.businessRegistrationNumber',
|
|
15
|
+
},
|
|
14
16
|
주의사항: [
|
|
15
|
-
'
|
|
16
|
-
'
|
|
17
|
-
'
|
|
18
|
-
'test_ 키로 생성한 supplierKey는 live_ 환경에서 사용할 수 없습니다',
|
|
17
|
+
'issuerId는 발행 요청 본문에 넣지 않습니다',
|
|
18
|
+
'일반 정발행과 역발행에서는 supplier.identificationNumber를 정확히 입력하세요',
|
|
19
|
+
'현금영수증에서는 issuer.businessRegistrationNumber를 정확히 입력하세요',
|
|
19
20
|
],
|
|
20
21
|
},
|
|
21
22
|
},
|
|
@@ -39,12 +40,55 @@ function buildGuideTopics() {
|
|
|
39
40
|
steps: [
|
|
40
41
|
{ 순서: 1, 명령어: 'bolta config set api-key <key>', 설명: 'API 키 설정 (test_ 또는 live_ 접두사)' },
|
|
41
42
|
{ 순서: 2, 명령어: 'bolta config test', 설명: 'API 연결 테스트' },
|
|
42
|
-
{ 순서: 3, 명령어: 'bolta
|
|
43
|
-
{ 순서: 4, 명령어: 'bolta
|
|
44
|
-
{ 순서: 5,
|
|
45
|
-
{ 순서: 6,
|
|
46
|
-
{ 순서: 7, 명령어: 'bolta invoice
|
|
47
|
-
|
|
43
|
+
{ 순서: 3, 명령어: 'bolta issuer create --data \'{"identificationNumber":"...", ...}\'', 설명: '발급자 등록 → issuerId 획득' },
|
|
44
|
+
{ 순서: 4, 명령어: 'bolta certificate url <issuerId>', 설명: '공동인증서 등록 URL 조회 (정발행 시 필요)' },
|
|
45
|
+
{ 순서: 5, 설명: '포인트 충전 (라이브 키 사용 시). https://developers.bolta.io 개발자센터에서 충전' },
|
|
46
|
+
{ 순서: 6, 명령어: 'bolta invoice issue --data \'<세금계산서 JSON>\'', 설명: '세금계산서 정발행' },
|
|
47
|
+
{ 순서: 7, 명령어: 'bolta invoice get <issuanceKey>', 설명: '발행 결과 확인 (국세청 승인번호 포함)' },
|
|
48
|
+
],
|
|
49
|
+
},
|
|
50
|
+
},
|
|
51
|
+
'cash-receipt': {
|
|
52
|
+
title: '현금영수증 발행 워크플로우',
|
|
53
|
+
summary: '현금영수증 발행, 상태 조회, 전액 취소 순서를 안내합니다.',
|
|
54
|
+
details: {
|
|
55
|
+
사전준비: [
|
|
56
|
+
'API 키를 설정하세요',
|
|
57
|
+
'현금영수증 발급자를 등록하고 인증서를 등록하세요',
|
|
58
|
+
'issuer.businessRegistrationNumber에는 등록한 발급자의 사업자등록번호를 입력하세요',
|
|
59
|
+
],
|
|
60
|
+
steps: [
|
|
61
|
+
{
|
|
62
|
+
순서: 1,
|
|
63
|
+
명령어: "bolta cash-receipt issue --reference-id <id> --data '<현금영수증 JSON>'",
|
|
64
|
+
설명: '현금영수증 발행 요청',
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
순서: 2,
|
|
68
|
+
명령어: 'bolta cash-receipt status --reference-id <id>',
|
|
69
|
+
설명: '발행 처리 상태 확인',
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
순서: 3,
|
|
73
|
+
명령어: 'bolta cash-receipt cancel <issuanceKey> --reference-id <새 id>',
|
|
74
|
+
설명: '발행 완료 건 전액 취소',
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
순서: 4,
|
|
78
|
+
명령어: 'bolta cash-receipt status --reference-id <새 id>',
|
|
79
|
+
설명: '취소 처리 상태 확인',
|
|
80
|
+
},
|
|
81
|
+
],
|
|
82
|
+
상태: {
|
|
83
|
+
처리중: ['PENDING', 'REQUEST_SUCCESS'],
|
|
84
|
+
성공: ['ISSUED', 'CANCELED'],
|
|
85
|
+
외부취소: ['EXTERNALLY_CANCELED'],
|
|
86
|
+
실패: ['REQUEST_FAILURE', 'ISSUE_FAILED', 'CANCEL_FAILED'],
|
|
87
|
+
},
|
|
88
|
+
주의사항: [
|
|
89
|
+
'202 Accepted는 요청 접수만 뜻하며 발행 또는 취소 성공을 보장하지 않습니다',
|
|
90
|
+
'취소 요청에는 발행 요청과 다른 reference-id를 사용하세요',
|
|
91
|
+
'부분 취소는 지원하지 않습니다',
|
|
48
92
|
],
|
|
49
93
|
},
|
|
50
94
|
},
|
|
@@ -54,11 +98,11 @@ function buildGuideTopics() {
|
|
|
54
98
|
details: {
|
|
55
99
|
용어: [
|
|
56
100
|
{ 용어: 'apiKey', 설명: 'Bolta API 인증 키. test_(샌드박스) 또는 live_(프로덕션) 접두사' },
|
|
57
|
-
{ 용어: '
|
|
58
|
-
{ 용어: 'issuanceKey', 설명: '
|
|
101
|
+
{ 용어: 'issuerId', 설명: '등록한 발급자를 식별하는 값. 발급자 조회와 인증서 관리에 사용' },
|
|
102
|
+
{ 용어: 'issuanceKey', 설명: '세금계산서나 현금영수증 요청 후 반환되는 고유 식별자. 조회·수정·취소 시 사용' },
|
|
59
103
|
{ 용어: 'identificationNumber', 설명: '사업자등록번호 (10자리). 세금계산서의 공급자/공급받는자 식별에 사용' },
|
|
60
|
-
{ 용어: 'supplier (공급자)', 설명: '
|
|
61
|
-
{ 용어: 'supplied (공급받는자)', 설명: '세금계산서를 받는 거래처.
|
|
104
|
+
{ 용어: 'supplier (공급자)', 설명: '세금계산서에서 재화나 용역을 공급하는 측. invoice JSON의 supplier 필드' },
|
|
105
|
+
{ 용어: 'supplied (공급받는자)', 설명: '세금계산서를 받는 거래처. invoice JSON의 supplied 필드' },
|
|
62
106
|
{ 용어: 'purpose', 설명: 'CLAIM(청구용) 또는 RECEIPT(영수용)' },
|
|
63
107
|
{ 용어: 'ntsTransactionId', 설명: '국세청 승인번호. 발행 완료 후 부여됨' },
|
|
64
108
|
],
|
|
@@ -73,14 +117,15 @@ export function registerGuideCommand(program) {
|
|
|
73
117
|
.description('주요 개념 및 사용법 안내')
|
|
74
118
|
.addHelpText('after', `
|
|
75
119
|
Available topics:
|
|
76
|
-
|
|
120
|
+
issuer 발급자 이해하기
|
|
77
121
|
payment 요금 안내 및 포인트 충전
|
|
78
122
|
workflow 전자세금계산서 발행 워크플로우
|
|
123
|
+
cash-receipt 현금영수증 발행 워크플로우
|
|
79
124
|
glossary 용어 정리
|
|
80
125
|
|
|
81
126
|
Examples:
|
|
82
127
|
bolta guide # 사용 가능한 토픽 목록
|
|
83
|
-
bolta guide
|
|
128
|
+
bolta guide issuer # 발급자 개념 안내
|
|
84
129
|
bolta guide payment # 요금 및 포인트 충전 안내`)
|
|
85
130
|
.action((topicName) => {
|
|
86
131
|
try {
|
|
@@ -94,8 +139,7 @@ Examples:
|
|
|
94
139
|
outputSuccess({ availableTopics: list });
|
|
95
140
|
return;
|
|
96
141
|
}
|
|
97
|
-
|
|
98
|
-
topicName = resolveDeprecatedName(topicName, { 'customer-key': 'supplier-key' }, 'guide 토픽');
|
|
142
|
+
topicName = resolveLegacyIssuerName(topicName, { 'supplier-key': 'issuer', 'customer-key': 'issuer' }, 'guide 토픽');
|
|
99
143
|
const topic = topics[topicName];
|
|
100
144
|
if (!topic) {
|
|
101
145
|
const available = Object.keys(topics).join(', ');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/commands/guide/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/commands/guide/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"amend.d.ts","sourceRoot":"","sources":["../../../../src/commands/invoice/amend.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"amend.d.ts","sourceRoot":"","sources":["../../../../src/commands/invoice/amend.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAQpC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA+G5D"}
|
|
@@ -2,8 +2,7 @@ import { createClient } from '../../utils/client.js';
|
|
|
2
2
|
import { resolveInput } from '../../utils/input.js';
|
|
3
3
|
import { outputSuccess, outputError, verbose } from '../../utils/output.js';
|
|
4
4
|
import { amendTerminationSchema, amendChangeSupplyCostSchema } from '../../validators/schemas.js';
|
|
5
|
-
import {
|
|
6
|
-
import { ZodError } from 'zod';
|
|
5
|
+
import { parseOrThrow } from '../../validators/parse.js';
|
|
7
6
|
export function registerAmendCommands(invoice) {
|
|
8
7
|
const amend = invoice.command('amend').description('세금계산서 수정 발행');
|
|
9
8
|
amend
|
|
@@ -19,17 +18,7 @@ Example:
|
|
|
19
18
|
.action(async (issuanceKey, options, command) => {
|
|
20
19
|
try {
|
|
21
20
|
const globalOpts = command.optsWithGlobals();
|
|
22
|
-
|
|
23
|
-
try {
|
|
24
|
-
validated = amendTerminationSchema.parse({ date: options.date });
|
|
25
|
-
}
|
|
26
|
-
catch (err) {
|
|
27
|
-
if (err instanceof ZodError) {
|
|
28
|
-
const details = Object.fromEntries(err.errors.map((e) => [e.path.join('.'), e.message]));
|
|
29
|
-
throw new BoltaValidationError('입력 데이터가 유효하지 않습니다.', details);
|
|
30
|
-
}
|
|
31
|
-
throw err;
|
|
32
|
-
}
|
|
21
|
+
const validated = parseOrThrow(amendTerminationSchema, { date: options.date });
|
|
33
22
|
if (globalOpts.dryRun) {
|
|
34
23
|
outputSuccess({
|
|
35
24
|
dryRun: true,
|
|
@@ -39,8 +28,8 @@ Example:
|
|
|
39
28
|
return;
|
|
40
29
|
}
|
|
41
30
|
verbose('수정발행 (계약 해제) 요청', { issuanceKey });
|
|
42
|
-
const
|
|
43
|
-
const result = await client.amendTermination(issuanceKey, validated
|
|
31
|
+
const client = createClient(globalOpts);
|
|
32
|
+
const result = await client.amendTermination(issuanceKey, validated);
|
|
44
33
|
outputSuccess(result);
|
|
45
34
|
}
|
|
46
35
|
catch (err) {
|
|
@@ -72,17 +61,7 @@ Example:
|
|
|
72
61
|
try {
|
|
73
62
|
const globalOpts = command.optsWithGlobals();
|
|
74
63
|
const raw = await resolveInput(options);
|
|
75
|
-
|
|
76
|
-
try {
|
|
77
|
-
validated = amendChangeSupplyCostSchema.parse(raw);
|
|
78
|
-
}
|
|
79
|
-
catch (err) {
|
|
80
|
-
if (err instanceof ZodError) {
|
|
81
|
-
const details = Object.fromEntries(err.errors.map((e) => [e.path.join('.'), e.message]));
|
|
82
|
-
throw new BoltaValidationError('입력 데이터가 유효하지 않습니다.', details);
|
|
83
|
-
}
|
|
84
|
-
throw err;
|
|
85
|
-
}
|
|
64
|
+
const validated = parseOrThrow(amendChangeSupplyCostSchema, raw);
|
|
86
65
|
if (globalOpts.dryRun) {
|
|
87
66
|
outputSuccess({
|
|
88
67
|
dryRun: true,
|
|
@@ -92,8 +71,8 @@ Example:
|
|
|
92
71
|
return;
|
|
93
72
|
}
|
|
94
73
|
verbose('수정발행 (공급가액 변동) 요청', { issuanceKey });
|
|
95
|
-
const
|
|
96
|
-
const result = await client.amendChangeSupplyCost(issuanceKey, validated
|
|
74
|
+
const client = createClient(globalOpts);
|
|
75
|
+
const result = await client.amendChangeSupplyCost(issuanceKey, validated);
|
|
97
76
|
outputSuccess(result);
|
|
98
77
|
}
|
|
99
78
|
catch (err) {
|
|
@@ -121,8 +100,8 @@ Example:
|
|
|
121
100
|
return;
|
|
122
101
|
}
|
|
123
102
|
verbose('수정발행 (착오에 의한 이중발급) 요청', { issuanceKey });
|
|
124
|
-
const
|
|
125
|
-
const result = await client.amendDoubleIssuance(issuanceKey
|
|
103
|
+
const client = createClient(globalOpts);
|
|
104
|
+
const result = await client.amendDoubleIssuance(issuanceKey);
|
|
126
105
|
outputSuccess(result);
|
|
127
106
|
}
|
|
128
107
|
catch (err) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"amend.js","sourceRoot":"","sources":["../../../../src/commands/invoice/amend.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAC5E,OAAO,EAAE,sBAAsB,EAAE,2BAA2B,EAAE,MAAM,6BAA6B,CAAC;AAClG,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"amend.js","sourceRoot":"","sources":["../../../../src/commands/invoice/amend.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get.d.ts","sourceRoot":"","sources":["../../../../src/commands/invoice/get.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"get.d.ts","sourceRoot":"","sources":["../../../../src/commands/invoice/get.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,wBAAsB,gBAAgB,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAS7H"}
|