@heripo/research-radar 5.2.3 → 5.2.4
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/index.js +91 -19
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -300,6 +300,36 @@ const createHeritageBidTriage = (options) => {
|
|
|
300
300
|
};
|
|
301
301
|
};
|
|
302
302
|
|
|
303
|
+
/**
|
|
304
|
+
* Reads what data.go.kr said when it refused a request.
|
|
305
|
+
*
|
|
306
|
+
* Its gateway answers a refusal with HTTP 400 and an XML envelope, whatever
|
|
307
|
+
* format the service itself speaks. The envelope names the cause — a spent
|
|
308
|
+
* daily quota, an unregistered key, a withdrawn service and a denied caller
|
|
309
|
+
* are all different `returnReasonCode`s — but an adapter that reports only the
|
|
310
|
+
* status throws that away.
|
|
311
|
+
*
|
|
312
|
+
* It cost a week to learn that. A nightly run failed at the same minute for
|
|
313
|
+
* days with nothing in the log but `Request failed (status=502)`, and the
|
|
314
|
+
* reason the gateway had supplied each time was discarded before anyone could
|
|
315
|
+
* read it.
|
|
316
|
+
*/
|
|
317
|
+
function describeOpenDataError(body) {
|
|
318
|
+
const read = (tag) => new RegExp(`<${tag}>\\s*([^<]*)</${tag}>`).exec(body)?.[1]?.trim();
|
|
319
|
+
const parts = [
|
|
320
|
+
read('errMsg'),
|
|
321
|
+
read('returnReasonCode') && `code ${read('returnReasonCode')}`,
|
|
322
|
+
read('returnAuthMsg'),
|
|
323
|
+
].filter((part) => Boolean(part));
|
|
324
|
+
if (parts.length > 0) {
|
|
325
|
+
return parts.join(' / ');
|
|
326
|
+
}
|
|
327
|
+
// Not the documented envelope. A short body is still worth quoting; a long
|
|
328
|
+
// one is a page rather than an error and only adds noise to the log.
|
|
329
|
+
const trimmed = body.trim().replace(/\s+/g, ' ');
|
|
330
|
+
return trimmed.length > 0 && trimmed.length <= 200 ? trimmed : null;
|
|
331
|
+
}
|
|
332
|
+
|
|
303
333
|
const API_BASE$2 = 'https://apis.data.go.kr/1051000/recruitment';
|
|
304
334
|
const SITE_BASE$2 = 'https://job.alio.go.kr';
|
|
305
335
|
/**
|
|
@@ -364,7 +394,15 @@ const createAlioFetch = (baseFetch = fetch, options) => {
|
|
|
364
394
|
const response = await baseFetch(`${API_BASE$2}/list?serviceKey=${apiKey}&resultType=json` +
|
|
365
395
|
`&numOfRows=${rowsPerPage}&pageNo=1&ongoingYn=Y`, init);
|
|
366
396
|
if (!response.ok) {
|
|
367
|
-
|
|
397
|
+
// See the 나라일터 adapter: keep the upstream status, report the reason.
|
|
398
|
+
const body = await response.text();
|
|
399
|
+
const detail = describeOpenDataError(body);
|
|
400
|
+
onError?.(`알리오 list failed with HTTP ${response.status}` +
|
|
401
|
+
(detail ? ` — ${detail}` : ''));
|
|
402
|
+
return new Response(body, {
|
|
403
|
+
status: response.status,
|
|
404
|
+
statusText: response.statusText,
|
|
405
|
+
});
|
|
368
406
|
}
|
|
369
407
|
// Same reasoning as the 나라일터 adapter: data.go.kr answers its own
|
|
370
408
|
// errors with HTTP 200 and a result code, and passing one through turns a
|
|
@@ -912,7 +950,9 @@ const createG2bFetch = (baseFetch = fetch, options) => {
|
|
|
912
950
|
`&numOfRows=${rowsPerPage}&pageNo=${page}&type=json&inqryDiv=1` +
|
|
913
951
|
`&inqryBgnDt=${toApiDateTime(begin)}&inqryEndDt=${toApiDateTime(end)}`, init);
|
|
914
952
|
if (!response.ok) {
|
|
915
|
-
|
|
953
|
+
const detail = describeOpenDataError(await response.text());
|
|
954
|
+
return (`나라장터 ${operation} list failed with HTTP ${response.status}` +
|
|
955
|
+
(detail ? ` — ${detail}` : ''));
|
|
916
956
|
}
|
|
917
957
|
const body = (await response.json());
|
|
918
958
|
const resultCode = body.response?.header?.resultCode;
|
|
@@ -1226,7 +1266,17 @@ const createGojobsFetch = (baseFetch = fetch, options) => {
|
|
|
1226
1266
|
const response = await baseFetch(`${API_BASE}/getList?serviceKey=${apiKey}&numOfRows=${rowsPerPage}` +
|
|
1227
1267
|
`&pageNo=1&Begin_de=${toApiDate(begin)}&End_de=${toApiDate(end)}`, init);
|
|
1228
1268
|
if (!response.ok) {
|
|
1229
|
-
|
|
1269
|
+
// Core logs the status; the gateway's own explanation is in the body and
|
|
1270
|
+
// would otherwise be dropped. Keep the status so the log still shows what
|
|
1271
|
+
// the service answered, and report the reason alongside it.
|
|
1272
|
+
const body = await response.text();
|
|
1273
|
+
const detail = describeOpenDataError(body);
|
|
1274
|
+
onError?.(`나라일터 list failed with HTTP ${response.status}` +
|
|
1275
|
+
(detail ? ` — ${detail}` : ''));
|
|
1276
|
+
return new Response(body, {
|
|
1277
|
+
status: response.status,
|
|
1278
|
+
statusText: response.statusText,
|
|
1279
|
+
});
|
|
1230
1280
|
}
|
|
1231
1281
|
// data.go.kr answers its own errors with HTTP 200 and a result code, so a
|
|
1232
1282
|
// rejected key or a service outage arrives looking like a successful
|
|
@@ -3264,22 +3314,44 @@ const SUBJECT_OVER_INSTITUTION = `## 발주·공고 기관이 아니라 사업
|
|
|
3264
3314
|
|
|
3265
3315
|
유산 기관이 낸 공고라도 **내용이 유산 업무가 아니면 낮게 준다.** 기관명은 단서일 뿐 근거가 아니다.
|
|
3266
3316
|
|
|
3267
|
-
|
|
3268
|
-
|
|
3269
|
-
-
|
|
3270
|
-
|
|
3271
|
-
|
|
3272
|
-
|
|
3273
|
-
|
|
3274
|
-
|
|
3275
|
-
|
|
3276
|
-
|
|
3277
|
-
|
|
3278
|
-
|
|
3279
|
-
|
|
3280
|
-
|
|
3281
|
-
|
|
3282
|
-
|
|
3317
|
+
**유산 업무 — 정상 채점**
|
|
3318
|
+
|
|
3319
|
+
- 발굴·시굴조사, 매장유산, 문화재 수리·보수정비, 보존처리, 기록화, 유적 정비
|
|
3320
|
+
- 학술연구, 유물 조사·분석
|
|
3321
|
+
- 전시·해설의 기획과 **콘텐츠 개발** — 무엇을 보여주고 어떻게 설명할지 정하는 일
|
|
3322
|
+
(예: "달천철장 홍보관 무장애 관광 콘텐츠 개발 용역")
|
|
3323
|
+
- **유산 정보를 다루는 데이터베이스·아카이브·디지털화의 구축과 유지보수**
|
|
3324
|
+
(예: "B-헤리티지 웹 아카이빙 플랫폼 구축", "국외문화유산DB관리시스템 유지관리",
|
|
3325
|
+
"AI 학습데이터 구축 기반 아카이브 자료 디지털화")
|
|
3326
|
+
- **유산 교육 프로그램의 기획·운영** (예: "평창올림픽 유산교육 프로그램 기획·운영 대행용역")
|
|
3327
|
+
|
|
3328
|
+
**유산 업무가 아닌 것 → 발주처가 국가유산청·국립박물관이어도 1점**
|
|
3329
|
+
|
|
3330
|
+
- 소방·전기·냉난방·창호·정보통신 같은 건물 설비와 그 유지보수, 청사 환경개선
|
|
3331
|
+
- **구조안전진단**, 건물 철거와 폐기물 처리
|
|
3332
|
+
- 기관 홈페이지, 사무용 전산 시스템
|
|
3333
|
+
- 차량 임차, **운송·운반** (예: "국내 주요 화석산지 표본 헬기 운반")
|
|
3334
|
+
- 홍보물·영상 제작
|
|
3335
|
+
- **전시를 물리적으로 만들고 옮기고 설치하는 일** — 전시설계, 전시물·실감영상 제작·설치,
|
|
3336
|
+
전시품 포장·운송 (예: "상설전시실3 실감영상 제작·설치", "특별전 전시품 포장, 운송 및 설치")
|
|
3337
|
+
- 축제·행사의 운영과 그 부대 용역(무대, 홍보, 교통·안전관리)
|
|
3338
|
+
|
|
3339
|
+
발주처가 유산 기관이라는 이유로 2-3점으로 올리지 않는다. 유산 업무가 아니면 1점이다.
|
|
3340
|
+
|
|
3341
|
+
**갈리는 지점 세 가지**
|
|
3342
|
+
|
|
3343
|
+
1. **전산**: 다루는 대상이 무엇인지로 가른다. 유산 자료를 담고 보여주고 보존하는
|
|
3344
|
+
시스템이면 유산 업무이고, 기관을 운영하기 위한 전산이면 아니다.
|
|
3345
|
+
2. **전시**: 무엇을 보여줄지 정하는 일은 유산 업무이고, 그것을 만들고 옮기고 설치하는
|
|
3346
|
+
일은 아니다.
|
|
3347
|
+
3. **프로그램**: 유산을 가르치고 해설하는 프로그램은 유산 업무이고, 축제·기념행사를
|
|
3348
|
+
진행하는 일은 아니다.
|
|
3349
|
+
|
|
3350
|
+
그 밖의 예: "창덕궁 미분무 소화설비 성능개선 공사"는 궁궐 소재지만 소방 설비 공사다.
|
|
3351
|
+
"국립항공박물관 정보통신설비 유지보수"도 건물 설비다. 반대로 "팔만대장경 P-XRF 분석"은
|
|
3352
|
+
발주처가 사찰이어도 명백한 유산 조사이고, "안양암 아미타괘불도 보존처리",
|
|
3353
|
+
"중요동산문화유산 기록화 3D 스캐닝", "소장유물 복제", "소장품도록 발간"은
|
|
3354
|
+
유물을 직접 다루므로 정상 채점한다.`;
|
|
3283
3355
|
const EMPLOYMENT_FILTER = `## 채용 공고 판별
|
|
3284
3356
|
|
|
3285
3357
|
채용 공고는 **직무가 아래 지원 직무 목록에 해당하는지**를 먼저 본다.
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
package/package.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"name": "@heripo/research-radar",
|
|
3
3
|
"private": false,
|
|
4
4
|
"type": "module",
|
|
5
|
-
"version": "5.2.
|
|
5
|
+
"version": "5.2.4",
|
|
6
6
|
"description": "AI-driven intelligence for Korean cultural heritage. This package serves as both a ready-to-use newsletter service and a practical implementation example for the LLM-Newsletter-Kit.",
|
|
7
7
|
"main": "dist/index.js",
|
|
8
8
|
"types": "dist/index.d.ts",
|