pal-crawl 2.2.1 → 2.3.1
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/README.md +429 -11
- package/dist/config.d.ts +23 -1
- package/dist/config.js +25 -0
- package/dist/config.js.map +1 -1
- package/dist/http-client.d.ts +10 -2
- package/dist/http-client.js +58 -14
- package/dist/http-client.js.map +1 -1
- package/dist/index.d.ts +3 -2
- package/dist/index.js +6 -1
- package/dist/index.js.map +1 -1
- package/dist/likms.d.ts +282 -0
- package/dist/likms.js +408 -21
- package/dist/likms.js.map +1 -1
- package/dist/nsm-compat.d.ts +198 -0
- package/dist/nsm-compat.js +342 -0
- package/dist/nsm-compat.js.map +1 -0
- package/dist/pal.d.ts +8 -8
- package/dist/pal.js +15 -31
- package/dist/pal.js.map +1 -1
- package/dist/parser.d.ts +159 -0
- package/dist/parser.js +312 -5
- package/dist/parser.js.map +1 -1
- package/package.json +11 -1
- package/.freebuff/project-id +0 -1
- package/.prettierrc +0 -4
- package/AGENTS.md +0 -347
- package/dist/likms.test.d.ts +0 -1
- package/dist/likms.test.js +0 -313
- package/dist/likms.test.js.map +0 -1
- package/dist/pal.test.d.ts +0 -1
- package/dist/pal.test.js +0 -1276
- package/dist/pal.test.js.map +0 -1
- package/eslint.config.mjs +0 -5
- package/renovate.json +0 -5
- package/tsconfig.json +0 -16
package/dist/pal.js
CHANGED
|
@@ -91,7 +91,7 @@ class ScreenshotBase {
|
|
|
91
91
|
await page.goto(urlStr, { waitUntil: 'networkidle0', timeout: 30000 });
|
|
92
92
|
const screenshotBuffer = await page.screenshot({
|
|
93
93
|
fullPage: this.screenshotConfig.fullPage ?? true,
|
|
94
|
-
type: this.screenshotConfig.format,
|
|
94
|
+
type: this.screenshotConfig.format ?? 'png',
|
|
95
95
|
quality: this.screenshotConfig.format === 'jpeg'
|
|
96
96
|
? (this.screenshotConfig.quality ?? 80)
|
|
97
97
|
: undefined,
|
|
@@ -344,44 +344,28 @@ class NsmLmSts extends ScreenshotBase {
|
|
|
344
344
|
customHeaders: config?.customHeaders ?? {},
|
|
345
345
|
});
|
|
346
346
|
this.parser = new parser_1.NsmLmStsParser();
|
|
347
|
-
this.detailTitleConcurrency = 4;
|
|
348
347
|
this.hydrateTruncatedTitles = config?.hydrateTruncatedTitles ?? false;
|
|
349
348
|
}
|
|
350
349
|
isTruncatedBillName(billName) {
|
|
351
350
|
return billName.includes('...') || billName.includes('…');
|
|
352
351
|
}
|
|
353
|
-
/**
|
|
354
|
-
* 목록의 잘린 제목을 상세 페이지 제목으로 보정합니다.
|
|
355
|
-
* 상세 조회 실패 시에는 기존 제목을 유지합니다.
|
|
356
|
-
*/
|
|
352
|
+
/** Preserve list titles when optional detail lookup fails. Requests are sequential. */
|
|
357
353
|
async hydrateBillNamesFromDetail(items) {
|
|
358
|
-
if (items.length === 0) {
|
|
359
|
-
return items;
|
|
360
|
-
}
|
|
361
|
-
const normalizedConcurrency = Math.max(1, this.detailTitleConcurrency);
|
|
362
354
|
const hydrated = items.map((item) => ({ ...item }));
|
|
363
|
-
const
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
if (
|
|
371
|
-
|
|
372
|
-
}
|
|
373
|
-
try {
|
|
374
|
-
const detailHtml = await this.getDetailHTML(item.billNo);
|
|
375
|
-
const detail = this.parser.parseDetail(detailHtml);
|
|
376
|
-
const detailTitle = detail.title.trim();
|
|
377
|
-
if (detailTitle) {
|
|
378
|
-
item.billName = detailTitle;
|
|
379
|
-
}
|
|
380
|
-
}
|
|
381
|
-
catch {
|
|
382
|
-
// Keep list title when detail lookup fails.
|
|
355
|
+
for (const item of hydrated) {
|
|
356
|
+
if (!item.billNo || !this.isTruncatedBillName(item.billName)) {
|
|
357
|
+
continue;
|
|
358
|
+
}
|
|
359
|
+
try {
|
|
360
|
+
const detailHtml = await this.getDetailHTML(item.billNo);
|
|
361
|
+
const detailTitle = this.parser.parseDetail(detailHtml).title.trim();
|
|
362
|
+
if (detailTitle) {
|
|
363
|
+
item.billName = detailTitle;
|
|
383
364
|
}
|
|
384
|
-
}
|
|
365
|
+
}
|
|
366
|
+
catch {
|
|
367
|
+
// Optional hydration must preserve the original list title on failure.
|
|
368
|
+
}
|
|
385
369
|
}
|
|
386
370
|
return hydrated;
|
|
387
371
|
}
|
package/dist/pal.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pal.js","sourceRoot":"","sources":["../src/pal.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,6BAA0B;AAE1B,qCAAkC;AAClC,+CAA2C;AAC3C,qCASkB;AAClB,mCAAuC;AA4DvC;;;GAGG;AACH,MAAsB,cAAc;IAIlC,YAAsB,UAA8B;QAH7C,YAAO,GAAmB,IAAI,CAAC;QAIpC,IAAI,CAAC,gBAAgB,GAAG;YACtB,OAAO,EAAE,UAAU,EAAE,OAAO,IAAI,KAAK;YACrC,QAAQ,EAAE,UAAU,EAAE,QAAQ,IAAI,IAAI;YACtC,KAAK,EAAE,UAAU,EAAE,KAAK,IAAI,IAAI;YAChC,MAAM,EAAE,UAAU,EAAE,MAAM,IAAI,IAAI;YAClC,MAAM,EAAE,UAAU,EAAE,MAAM,IAAI,KAAK;YACnC,OAAO,EAAE,UAAU,EAAE,OAAO,IAAI,EAAE;SACnC,CAAC;IACJ,CAAC;IAED,mCAAmC;IAC5B,KAAK,CAAC,WAAW;QACtB,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAClB,8DAA8D;YAC9D,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,wDAAa,WAAW,GAAC,CAAC;YACzD,IAAI,CAAC,OAAO,GAAG,MAAM,SAAS,CAAC,MAAM,CAAC;gBACpC,QAAQ,EAAE,IAAI;gBACd,IAAI,EAAE,CAAC,cAAc,EAAE,0BAA0B,CAAC;aACnD,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,4CAA4C;IACrC,KAAK,CAAC,YAAY;QACvB,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YAC3B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACtB,CAAC;IACH,CAAC;IAED,oCAAoC;IAC7B,KAAK,CAAC,cAAc,CAAC,MAAc;QACxC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC;YACnC,MAAM,IAAI,KAAK,CACb,6DAA6D,CAC9D,CAAC;QACJ,CAAC;QAED,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;QAEzB,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAClB,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;QAClD,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;QAC1C,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,WAAW,CAAC;gBACrB,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,KAAK,IAAI,IAAI;gBAC1C,MAAM,EAAE,IAAI,CAAC,gBAAgB,CAAC,MAAM,IAAI,IAAI;aAC7C,CAAC,CAAC;YAEH,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,cAAc,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;YAEvE,MAAM,gBAAgB,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC;gBAC7C,QAAQ,EAAE,IAAI,CAAC,gBAAgB,CAAC,QAAQ,IAAI,IAAI;gBAChD,IAAI,EAAE,IAAI,CAAC,gBAAgB,CAAC,MAAwB;gBACpD,OAAO,EACL,IAAI,CAAC,gBAAgB,CAAC,MAAM,KAAK,MAAM;oBACrC,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,OAAO,IAAI,EAAE,CAAC;oBACvC,CAAC,CAAC,SAAS;aAChB,CAAC,CAAC;YAEH,6DAA6D;YAC7D,OAAO,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QACvC,CAAC;gBAAS,CAAC;YACT,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;QACrB,CAAC;IACH,CAAC;IAED,wBAAwB;IACjB,sBAAsB,CAAC,MAAkC;QAC9D,IAAI,CAAC,gBAAgB,GAAG;YACtB,GAAG,IAAI,CAAC,gBAAgB;YACxB,GAAG,MAAM;SACV,CAAC;IACJ,CAAC;CACF;AAjFD,wCAiFC;AAED,MAAa,QAAS,SAAQ,cAAc;IAM1C,YAAY,MAAuB;QACjC,KAAK,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;QAC1B,IAAI,CAAC,UAAU,GAAG,IAAI,wBAAU,CAAC;YAC/B,SAAS,EAAE,MAAM,EAAE,SAAS,IAAI,eAAM,CAAC,SAAS;YAChD,OAAO,EAAE,MAAM,EAAE,OAAO,IAAI,KAAK;YACjC,UAAU,EAAE,MAAM,EAAE,UAAU,IAAI,CAAC;YACnC,aAAa,EAAE,MAAM,EAAE,aAAa,IAAI,EAAE;SAC3C,CAAC,CAAC;QACH,IAAI,CAAC,MAAM,GAAG,IAAI,kBAAS,EAAE,CAAC;QAC9B,IAAI,CAAC,KAAK,GAAG,IAAI,oBAAY,CAAC;YAC5B,SAAS,EAAE,MAAM,EAAE,SAAS,IAAI,eAAM,CAAC,SAAS;YAChD,OAAO,EAAE,MAAM,EAAE,OAAO,IAAI,KAAK;YACjC,UAAU,EAAE,MAAM,EAAE,UAAU,IAAI,CAAC;YACnC,aAAa,EAAE,MAAM,EAAE,aAAa,IAAI,EAAE;SAC3C,CAAC,CAAC;QACH,IAAI,CAAC,qBAAqB,GAAG,MAAM,EAAE,qBAAqB,IAAI,IAAI,CAAC;IACrE,CAAC;IAED,qCAAqC;IAC9B,KAAK,CAAC,gBAAgB;QAC3B,MAAM,GAAG,GAAG,IAAI,SAAG,CAAC,eAAM,CAAC,QAAQ,EAAE,eAAM,CAAC,MAAM,CAAC,CAAC;QACpD,OAAO,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC7C,CAAC;IAED,6CAA6C;IACtC,KAAK,CAAC,oBAAoB,CAAC,EAAU;QAC1C,MAAM,YAAY,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC;QAC/B,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC;QACpC,CAAC;QAED,MAAM,GAAG,GAAG,IAAI,SAAG,CAAC,eAAM,CAAC,WAAW,EAAE,eAAM,CAAC,MAAM,CAAC,CAAC;QACvD,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;QAChD,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;QAEhD,OAAO,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC7C,CAAC;IAED,mCAAmC;IAC5B,KAAK,CAAC,iBAAiB;QAC5B,MAAM,GAAG,GAAG,IAAI,SAAG,CAAC,eAAM,CAAC,aAAa,EAAE,eAAM,CAAC,MAAM,CAAC,CAAC;QACzD,OAAO,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC7C,CAAC;IAED,2CAA2C;IACpC,KAAK,CAAC,wBAAwB,CAAC,EAAU;QAC9C,MAAM,YAAY,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC;QAC/B,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC;QACpC,CAAC;QAED,MAAM,GAAG,GAAG,IAAI,SAAG,CAAC,eAAM,CAAC,gBAAgB,EAAE,eAAM,CAAC,MAAM,CAAC,CAAC;QAC5D,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;QAChD,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;QAEhD,OAAO,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC7C,CAAC;IAEO,YAAY,CAAC,IAAY,EAAE,KAAmB;QACpD,MAAM,GAAG,GAAG,IAAI,SAAG,CAAC,IAAI,EAAE,eAAM,CAAC,MAAM,CAAC,CAAC;QACzC,MAAM,OAAO,GAAiD;YAC5D,CAAC,WAAW,EAAE,KAAK,CAAC,SAAS,CAAC;YAC9B,CAAC,UAAU,EAAE,KAAK,CAAC,QAAQ,CAAC;YAC5B,CAAC,aAAa,EAAE,KAAK,CAAC,WAAW,CAAC;YAClC,CAAC,UAAU,EAAE,KAAK,CAAC,QAAQ,CAAC;YAC5B,CAAC,WAAW,EAAE,KAAK,CAAC,SAAS,CAAC;YAC9B,CAAC,WAAW,EAAE,KAAK,CAAC,SAAS,CAAC;YAC9B,CAAC,cAAc,EAAE,KAAK,CAAC,YAAY,CAAC;YACpC,CAAC,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC;YAC1B,CAAC,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC;YAC1B,CAAC,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC;YAC1B,CAAC,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC;YACtB,CAAC,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC;SACzB,CAAC;QACF,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,OAAO,EAAE,CAAC;YACnC,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,EAAE,EAAE,CAAC;gBAC1D,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YAC3C,CAAC;QACH,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAED,sCAAsC;IAC/B,KAAK,CAAC,UAAU;QACrB,MAAM,GAAG,GAAG,IAAI,SAAG,CAAC,eAAM,CAAC,QAAQ,EAAE,eAAM,CAAC,MAAM,CAAC,CAAC;QACpD,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAClC,CAAC;IAED,iCAAiC;IAC1B,UAAU,CAAC,IAAY;QAC5B,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IACtC,CAAC;IAED,oCAAoC;IAC7B,YAAY,CAAC,IAAY;QAC9B,OAAO,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IACxC,CAAC;IAED,mCAAmC;IAC5B,KAAK,CAAC,GAAG;QACd,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;QACrC,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IACtC,CAAC;IAED,8CAA8C;IACvC,KAAK,CAAC,cAAc,CAAC,EAAU;QACpC,MAAM,YAAY,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC;QAC/B,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC;QACpC,CAAC;QAED,MAAM,GAAG,GAAG,IAAI,SAAG,CAAC,eAAM,CAAC,WAAW,EAAE,eAAM,CAAC,MAAM,CAAC,CAAC;QACvD,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;QAChD,6BAA6B;QAC7B,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;QAEhD,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAClC,CAAC;IAED;;;;OAIG;IACK,KAAK,CAAC,4BAA4B,CACxC,EAAU,EACV,OAAqB;QAErB,IAAI,CAAC,IAAI,CAAC,qBAAqB,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;YAC1D,OAAO,OAAO,CAAC;QACjB,CAAC;QAED,IAAI,CAAC;YACH,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC;YAC9D,IAAI,cAAc,EAAE,CAAC;gBACnB,OAAO,EAAE,GAAG,OAAO,EAAE,cAAc,EAAE,CAAC;YACxC,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,yBAAyB;QAC3B,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,wCAAwC;IACjC,KAAK,CAAC,UAAU,CAAC,EAAU;QAChC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;QAC3C,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QAC/C,OAAO,IAAI,CAAC,4BAA4B,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;IACxD,CAAC;IAED,oCAAoC;IAC7B,KAAK,CAAC,WAAW;QACtB,MAAM,GAAG,GAAG,IAAI,SAAG,CAAC,eAAM,CAAC,aAAa,EAAE,eAAM,CAAC,MAAM,CAAC,CAAC;QACzD,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAClC,CAAC;IAED,iCAAiC;IAC1B,KAAK,CAAC,OAAO;QAClB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;QACtC,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IACtC,CAAC;IAED,4CAA4C;IACrC,KAAK,CAAC,kBAAkB,CAAC,EAAU;QACxC,MAAM,YAAY,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC;QAC/B,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC;QACpC,CAAC;QAED,MAAM,GAAG,GAAG,IAAI,SAAG,CAAC,eAAM,CAAC,gBAAgB,EAAE,eAAM,CAAC,MAAM,CAAC,CAAC;QAC5D,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;QAChD,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;QAEhD,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAClC,CAAC;IAED,sCAAsC;IAC/B,KAAK,CAAC,cAAc,CAAC,EAAU;QACpC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC;QAC/C,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QAC/C,OAAO,IAAI,CAAC,4BAA4B,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;IACxD,CAAC;IAED,gFAAgF;IAEhF,mDAAmD;IAC5C,KAAK,CAAC,MAAM,CAAC,QAAsB,EAAE;QAC1C,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,eAAM,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC;QAC3E,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC5C,OAAO,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAC7C,CAAC;IAED,iDAAiD;IAC1C,KAAK,CAAC,UAAU,CAAC,QAAsB,EAAE;QAC9C,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,eAAM,CAAC,aAAa,EAAE;YAClD,SAAS,EAAE,CAAC;YACZ,GAAG,KAAK;SACT,CAAC,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC5C,OAAO,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAC7C,CAAC;IAED,gFAAgF;IAEhF,oCAAoC;IAC7B,KAAK,CAAC,OAAO,CAClB,SAAiB,EACjB,QAAiB;QAEjB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC1D,OAAO,MAAM,CAAC,KAAK,CAAC;IACtB,CAAC;IAED,kCAAkC;IAC3B,KAAK,CAAC,WAAW,CACtB,SAAiB,EACjB,QAAiB;QAEjB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC9D,OAAO,MAAM,CAAC,KAAK,CAAC;IACtB,CAAC;IAED,gFAAgF;IAExE,KAAK,CAAC,CAAC,gBAAgB,CAC7B,QAAyD,EACzD,KAAsC,EACtC,OAAqB;QAErB,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,GAAG,CAAC;QACvC,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,WAAW,IAAI,CAAC,CAAC,CAAC;QAE1D,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,EAAE,GAAG,KAAK,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC,CAAC;QACzD,MAAM,KAAK,CAAC;QAEZ,IAAI,KAAK,CAAC,UAAU,IAAI,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QAE9D,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CACvB,KAAK,CAAC,UAAU,EAChB,OAAO,CAAC,QAAQ,IAAI,KAAK,CAAC,UAAU,CACrC,CAAC;QAEF,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,IAAI,QAAQ,EAAE,KAAK,IAAI,WAAW,EAAE,CAAC;YAC5D,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;gBAChB,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;YACrE,CAAC;YACD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,WAAW,GAAG,CAAC,EAAE,QAAQ,CAAC,CAAC;YACxD,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CACzB,EAAE,MAAM,EAAE,GAAG,GAAG,KAAK,GAAG,CAAC,EAAE,EAC3B,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,KAAK,GAAG,CAAC,CACpB,CAAC;YACF,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAC/B,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,GAAG,KAAK,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC,CAAC,CAC1D,CAAC;YACF,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;gBAC7B,MAAM,MAAM,CAAC;gBACb,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC;oBAAE,OAAO;YACxC,CAAC;QACH,CAAC;IACH,CAAC;IAED;;;OAGG;IACI,WAAW,CAChB,KAAuC,EACvC,OAAsB;QAEtB,OAAO,IAAI,CAAC,gBAAgB,CAC1B,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EACrB,KAAK,IAAI,EAAE,EACX,OAAO,IAAI,EAAE,CACd,CAAC;IACJ,CAAC;IAED;;;OAGG;IACI,eAAe,CACpB,KAAuC,EACvC,OAAsB;QAEtB,OAAO,IAAI,CAAC,gBAAgB,CAC1B,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,EACzB,KAAK,IAAI,EAAE,EACX,OAAO,IAAI,EAAE,CACd,CAAC;IACJ,CAAC;CACF;AAzSD,4BAySC;AAoFD,MAAa,QAAS,SAAQ,cAAc;IAM1C,YAAY,MAAuB;QACjC,KAAK,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;QAC1B,IAAI,CAAC,UAAU,GAAG,IAAI,wBAAU,CAAC;YAC/B,SAAS,EAAE,MAAM,EAAE,SAAS,IAAI,eAAM,CAAC,SAAS;YAChD,OAAO,EAAE,MAAM,EAAE,OAAO,IAAI,KAAK;YACjC,UAAU,EAAE,MAAM,EAAE,UAAU,IAAI,CAAC;YACnC,aAAa,EAAE,MAAM,EAAE,aAAa,IAAI,EAAE;SAC3C,CAAC,CAAC;QACH,IAAI,CAAC,MAAM,GAAG,IAAI,uBAAc,EAAE,CAAC;QACnC,IAAI,CAAC,sBAAsB,GAAG,CAAC,CAAC;QAChC,IAAI,CAAC,sBAAsB,GAAG,MAAM,EAAE,sBAAsB,IAAI,KAAK,CAAC;IACxE,CAAC;IAEO,mBAAmB,CAAC,QAAgB;QAC1C,OAAO,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IAC5D,CAAC;IAED;;;OAGG;IACK,KAAK,CAAC,0BAA0B,CACtC,KAAqB;QAErB,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,qBAAqB,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,sBAAsB,CAAC,CAAC;QACvE,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC;QACpD,MAAM,cAAc,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAC9C,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,QAAQ,CAAC,CACxC,CAAC;QAEF,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAChC,OAAO,QAAQ,CAAC;QAClB,CAAC;QAED,KACE,IAAI,UAAU,GAAG,CAAC,EAClB,UAAU,GAAG,cAAc,CAAC,MAAM,EAClC,UAAU,IAAI,qBAAqB,EACnC,CAAC;YACD,MAAM,KAAK,GAAG,cAAc,CAAC,KAAK,CAChC,UAAU,EACV,UAAU,GAAG,qBAAqB,CACnC,CAAC;YAEF,MAAM,OAAO,CAAC,GAAG,CACf,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;gBACvB,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;oBACjB,OAAO;gBACT,CAAC;gBAED,IAAI,CAAC;oBACH,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;oBACzD,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;oBACnD,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;oBACxC,IAAI,WAAW,EAAE,CAAC;wBAChB,IAAI,CAAC,QAAQ,GAAG,WAAW,CAAC;oBAC9B,CAAC;gBACH,CAAC;gBAAC,MAAM,CAAC;oBACP,4CAA4C;gBAC9C,CAAC;YACH,CAAC,CAAC,CACH,CAAC;QACJ,CAAC;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC;IAEO,YAAY,CAAC,KAAsB;QACzC,MAAM,GAAG,GAAG,IAAI,SAAG,CAAC,eAAM,CAAC,YAAY,EAAE,eAAM,CAAC,UAAU,CAAC,CAAC;QAC5D,MAAM,OAAO,GAAiD;YAC5D,CAAC,WAAW,EAAE,KAAK,CAAC,SAAS,CAAC;YAC9B,CAAC,UAAU,EAAE,KAAK,CAAC,QAAQ,CAAC;YAC5B,CAAC,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC;YACtB,CAAC,UAAU,EAAE,KAAK,CAAC,QAAQ,CAAC;YAC5B,CAAC,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC;YACxB,CAAC,aAAa,EAAE,KAAK,CAAC,WAAW,CAAC;YAClC,CAAC,YAAY,EAAE,KAAK,CAAC,UAAU,CAAC;YAChC,CAAC,YAAY,EAAE,KAAK,CAAC,UAAU,CAAC;YAChC,CAAC,eAAe,EAAE,KAAK,CAAC,aAAa,CAAC;YACtC,CAAC,eAAe,EAAE,KAAK,CAAC,aAAa,CAAC;YACtC,CAAC,eAAe,EAAE,KAAK,CAAC,aAAa,CAAC;YACtC,CAAC,UAAU,EAAE,KAAK,CAAC,QAAQ,CAAC;YAC5B,CAAC,aAAa,EAAE,KAAK,CAAC,WAAW,CAAC;YAClC,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC;YACpB,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC;YACpB,CAAC,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC;YAC1B,CAAC,WAAW,EAAE,KAAK,CAAC,SAAS,CAAC;SAC/B,CAAC;QACF,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;YACpB,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;YAC9C,OAAO,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;QAC/C,CAAC;QACD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,OAAO,EAAE,CAAC;YACnC,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,EAAE,EAAE,CAAC;gBAC1D,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YAC3C,CAAC;QACH,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAED,qBAAqB;IACd,KAAK,CAAC,WAAW,CAAC,QAAyB,EAAE;QAClD,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC;QAC1D,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAClC,CAAC;IAED,sCAAsC;IAC/B,SAAS,CAAC,IAAY;QAC3B,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IACrC,CAAC;IAED,mCAAmC;IAC5B,WAAW,CAAC,IAAY;QAC7B,OAAO,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IACvC,CAAC;IAED,oBAAoB;IACb,KAAK,CAAC,MAAM,CAAC,QAAyB,EAAE;QAC7C,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QAC3C,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAC3C,MAAM,KAAK,GAAG,IAAI,CAAC,sBAAsB;YACvC,CAAC,CAAC,MAAM,IAAI,CAAC,0BAA0B,CAAC,MAAM,CAAC,KAAK,CAAC;YACrD,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;QACjB,OAAO;YACL,GAAG,MAAM;YACT,KAAK;SACN,CAAC;IACJ,CAAC;IAED;;;OAGG;IACI,KAAK,CAAC,aAAa,CACxB,QAA6C,EAAE;QAE/C,OAAO,IAAI,CAAC,MAAM,CAAC,EAAE,GAAG,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC,CAAC;IACzD,CAAC;IAED,qBAAqB;IACd,KAAK,CAAC,aAAa,CAAC,MAAc;QACvC,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;QACjC,IAAI,CAAC,UAAU;YAAE,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;QACvD,MAAM,GAAG,GAAG,IAAI,SAAG,CACjB,GAAG,eAAM,CAAC,YAAY,IAAI,UAAU,WAAW,EAC/C,eAAM,CAAC,UAAU,CAClB,CAAC;QACF,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAClC,CAAC;IAED,kBAAkB;IACX,KAAK,CAAC,SAAS,CAAC,MAAc;QACnC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QAC9C,OAAO,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IACvC,CAAC;IAED,uBAAuB;IAChB,KAAK,CAAC,OAAO,CAClB,SAAiB,EACjB,QAA4C,EAAE;QAE9C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,EAAE,GAAG,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;QAC1D,OAAO,MAAM,CAAC,KAAK,CAAC;IACtB,CAAC;IAEO,KAAK,CAAC,CAAC,gBAAgB,CAC7B,KAAyC,EACzC,OAAqB;QAErB,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,GAAG,CAAC;QACvC,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,WAAW,IAAI,CAAC,CAAC,CAAC;QAE1D,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,EAAE,GAAG,KAAK,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC,CAAC;QAC5D,MAAM,KAAK,CAAC;QAEZ,IAAI,KAAK,CAAC,UAAU,IAAI,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QAE9D,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CACvB,KAAK,CAAC,UAAU,EAChB,OAAO,CAAC,QAAQ,IAAI,KAAK,CAAC,UAAU,CACrC,CAAC;QAEF,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,IAAI,QAAQ,EAAE,KAAK,IAAI,WAAW,EAAE,CAAC;YAC5D,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;gBAChB,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;YACrE,CAAC;YACD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,WAAW,GAAG,CAAC,EAAE,QAAQ,CAAC,CAAC;YACxD,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CACzB,EAAE,MAAM,EAAE,GAAG,GAAG,KAAK,GAAG,CAAC,EAAE,EAC3B,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,KAAK,GAAG,CAAC,CACpB,CAAC;YACF,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAC/B,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,GAAG,KAAK,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC,CAAC,CAC7D,CAAC;YACF,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;gBAC7B,MAAM,MAAM,CAAC;gBACb,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC;oBAAE,OAAO;YACxC,CAAC;QACH,CAAC;IACH,CAAC;IAED;;;OAGG;IACI,WAAW,CAChB,KAA0C,EAC1C,OAAsB;QAEtB,OAAO,IAAI,CAAC,gBAAgB,CAAC,KAAK,IAAI,EAAE,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC;IAC3D,CAAC;IAED;;OAEG;IACI,kBAAkB,CACvB,KAAyD,EACzD,OAAsB;QAEtB,OAAO,IAAI,CAAC,gBAAgB,CAC1B,EAAE,GAAG,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,EAClC,OAAO,IAAI,EAAE,CACd,CAAC;IACJ,CAAC;IAED,yBAAyB;IAClB,KAAK,CAAC,oBAAoB,CAC/B,QAA4C,EAAE;QAE9C,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC;QAC1D,OAAO,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC7C,CAAC;IAED,qBAAqB;IACd,KAAK,CAAC,mBAAmB,CAAC,MAAc;QAC7C,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;QACjC,IAAI,CAAC,UAAU;YAAE,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;QACvD,MAAM,GAAG,GAAG,IAAI,SAAG,CACjB,GAAG,eAAM,CAAC,YAAY,IAAI,UAAU,WAAW,EAC/C,eAAM,CAAC,UAAU,CAClB,CAAC;QACF,OAAO,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC7C,CAAC;CACF;AA7PD,4BA6PC"}
|
|
1
|
+
{"version":3,"file":"pal.js","sourceRoot":"","sources":["../src/pal.ts"],"names":[],"mappings":"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"}
|
package/dist/parser.d.ts
CHANGED
|
@@ -94,3 +94,162 @@ export declare class NsmLmStsParser {
|
|
|
94
94
|
/** HTML에서 법안 상세 정보를 파싱하여 반환합니다. */
|
|
95
95
|
parseDetail(html: string): INsmBillDetail;
|
|
96
96
|
}
|
|
97
|
+
/** 계류의안 목록의 법안 한 건 */
|
|
98
|
+
export interface ILikmsStateBillItem {
|
|
99
|
+
/** 의안번호 (예: "2221880") */
|
|
100
|
+
billNo: string;
|
|
101
|
+
/** 의안정보시스템의 의안 ID (예: "PRC_..."), PAL contentId와 동일 */
|
|
102
|
+
billId: string;
|
|
103
|
+
/** 의안명 (대표발의자 포함, 예: "국가재정법 일부개정법률안(장종태의원 등 10인)") */
|
|
104
|
+
billName: string;
|
|
105
|
+
/** 의안명 끝 괄호에서 추출한 발의자 (없으면 빈 문자열) */
|
|
106
|
+
proposer: string;
|
|
107
|
+
/** 제안자구분 (예: "의원", "정부", "위원장") */
|
|
108
|
+
proposerKind: string;
|
|
109
|
+
/** 제안일자 (YYYY-MM-DD) */
|
|
110
|
+
proposalDate: string;
|
|
111
|
+
/** 소관위원회 (위원회 회부 전이면 빈 문자열) */
|
|
112
|
+
committee: string;
|
|
113
|
+
/** 심사진행상태 (예: "접수", "위원회 심사") */
|
|
114
|
+
progressStatus: string;
|
|
115
|
+
/** 목록에서 제안이유 팝업(openSummaryPopup) 링크가 노출되는지 여부 */
|
|
116
|
+
hasProposalReason: boolean;
|
|
117
|
+
/**
|
|
118
|
+
* 제안이유 및 주요내용.
|
|
119
|
+
* 목록 HTML에는 들어 있지 않으므로 파서는 항상 `null`을 넣고,
|
|
120
|
+
* `LikmsStateCrawler`의 보정 옵션(`hydrateProposalReason`)이 켜진 경우에만
|
|
121
|
+
* 의안상세 조회로 채워진다(보정 실패 시 `null` 유지).
|
|
122
|
+
*/
|
|
123
|
+
proposalReason: string | null;
|
|
124
|
+
/** 의안상세 페이지 URL */
|
|
125
|
+
link: string;
|
|
126
|
+
}
|
|
127
|
+
/** 계류의안 목록 검색 결과 */
|
|
128
|
+
export interface ILikmsStateSearchResult {
|
|
129
|
+
total: number;
|
|
130
|
+
totalPages: number;
|
|
131
|
+
currentPage: number;
|
|
132
|
+
items: ILikmsStateBillItem[];
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* 동명이인 선택 팝업의 후보 한 건.
|
|
136
|
+
* 같은 이름이 같은 대수에 둘 이상일 수도 있어(예: 21대 이수진 2인) `hanja`/`party`가
|
|
137
|
+
* 사람을 구분하는 단서가 된다.
|
|
138
|
+
*/
|
|
139
|
+
export interface ILikmsRepresentCandidate {
|
|
140
|
+
/** `representId`로 그대로 쓸 수 있는 의원 ID (예: "GJK57930") */
|
|
141
|
+
membId: string;
|
|
142
|
+
/** 의원명 (한글, 목록의 발의자 표기와 같은 이름) */
|
|
143
|
+
name: string;
|
|
144
|
+
/** 대수 라벨 (예: "22대") */
|
|
145
|
+
age: string;
|
|
146
|
+
/** 한자명 (없으면 빈 문자열) */
|
|
147
|
+
hanja: string;
|
|
148
|
+
/** 정당명 (없으면 빈 문자열) */
|
|
149
|
+
party: string;
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* 의안현황 검색조건의 소관위원회 한 건 (`/bi/bill/sch/findAgeCmt.do`).
|
|
153
|
+
*
|
|
154
|
+
* 대수 범위에 따라 구성이 달라지고, 범위를 넓히면 **같은 이름이 여러 코드**로
|
|
155
|
+
* 존재할 수 있다(예: `보건복지위원회(18대~22대)` = 9700341 / `보건복지위원회(14대~17대)` = 9700041).
|
|
156
|
+
* 그래서 검색 파라미터(`ageCmtId`)에는 이름이 아니라 코드를 넣어야 한다.
|
|
157
|
+
*/
|
|
158
|
+
export interface ILikmsCommittee {
|
|
159
|
+
/** `ageCmtId`에 넣는 소관위 코드 (예: "9700006") */
|
|
160
|
+
comCd: string;
|
|
161
|
+
/** 위원회명 (예: "법제사법위원회") */
|
|
162
|
+
comCdName: string;
|
|
163
|
+
/** 사이트 정렬 순서 (결측이면 `null`) */
|
|
164
|
+
cdOrd: number | null;
|
|
165
|
+
}
|
|
166
|
+
export declare class LikmsStateParser {
|
|
167
|
+
private normalizeText;
|
|
168
|
+
/** 의안명 끝 괄호를 발의자로 추출합니다 (예: "...(장종태의원 등 10인)" → "장종태의원 등 10인"). */
|
|
169
|
+
private extractProposer;
|
|
170
|
+
private buildDetailLink;
|
|
171
|
+
/**
|
|
172
|
+
* 계류의안 목록 조각(AJAX 응답) HTML을 파싱하여 반환합니다.
|
|
173
|
+
* 잘못된 HTML·빈 결과에서는 빈 배열과 0을 반환하며 예외를 던지지 않습니다.
|
|
174
|
+
*/
|
|
175
|
+
parseList(html: string): ILikmsStateSearchResult;
|
|
176
|
+
/**
|
|
177
|
+
* 동명이인 선택 팝업(`/bi/popup/selSameNmMemb.do`)의 후보 목록을 파싱합니다.
|
|
178
|
+
*
|
|
179
|
+
* 표는 한 행이 후보 한 명이고 컬럼은 대수·의원명·한자명·정당명입니다. 각 행의
|
|
180
|
+
* `data-mem-id`가 `representId`에 그대로 넣는 의원 ID이며, 1번째 셀은 모바일용
|
|
181
|
+
* 목록(`ul.m_list`)과 대수 라벨을 함께 담고 있어 데스크톱 컬럼을 우선 사용합니다.
|
|
182
|
+
*
|
|
183
|
+
* 데이터가 없거나(“조회된 데이터가 없습니다”) 잘못된 HTML이면 빈 배열을 반환합니다.
|
|
184
|
+
*/
|
|
185
|
+
parseSameNameCandidates(html: string): ILikmsRepresentCandidate[];
|
|
186
|
+
/**
|
|
187
|
+
* 소관위원회 목록 JSON(`/bi/bill/sch/findAgeCmt.do`)을 파싱합니다.
|
|
188
|
+
*
|
|
189
|
+
* 응답은 `{ "ageCmtList": [{ "comCd", "comCdName", "cdOrd" }] }` 형태이며,
|
|
190
|
+
* JSON이 아니거나 목록이 비면 빈 배열을 반환합니다(예외를 던지지 않습니다).
|
|
191
|
+
*/
|
|
192
|
+
parseCommittees(raw: string): ILikmsCommittee[];
|
|
193
|
+
}
|
|
194
|
+
/** 의안상세의 문서(의안원문 등) 다운로드 링크 */
|
|
195
|
+
export interface ILikmsDocAttachment {
|
|
196
|
+
/** 표시명 (예: "의안원문.hwp") */
|
|
197
|
+
filename: string;
|
|
198
|
+
/** 다운로드 URL (절대 URL) */
|
|
199
|
+
url: string;
|
|
200
|
+
}
|
|
201
|
+
/**
|
|
202
|
+
* 국회 의안정보시스템 의안상세에서 파싱한 정보.
|
|
203
|
+
*
|
|
204
|
+
* likms 의안상세는 한 번의 응답으로 끝나지 않는다(클래스 JSDoc 참조).
|
|
205
|
+
* - 상세 페이지(`billDetailPage.do`): 제목(`h3.detailh3`), 의안번호(`#form`)
|
|
206
|
+
* - 심사정보 탭 조각(`billInfo.do`): 접수정보(제안일자·제안자·제안회기), 제안이유, 문서
|
|
207
|
+
*
|
|
208
|
+
* 따라서 각 필드는 **전달된 HTML에 들어 있는 값만** 채워진다(없으면 빈 문자열·`null`·빈 배열).
|
|
209
|
+
*/
|
|
210
|
+
export interface ILikmsDetailInfo {
|
|
211
|
+
/** 의안명 — `[2221883] ` 접두는 제거하고 발의자 괄호는 유지한다 */
|
|
212
|
+
title: string;
|
|
213
|
+
billNo: string;
|
|
214
|
+
/** 제안자 (예: "주진우의원 등 10인") */
|
|
215
|
+
proposer: string;
|
|
216
|
+
/** 제안일자 (YYYY-MM-DD). NSM의 "2026. 5. 1." 형식과 다르다 */
|
|
217
|
+
proposalDate: string;
|
|
218
|
+
/** 제안회기 (예: "제22대(2024~2028)제439회") */
|
|
219
|
+
session: string;
|
|
220
|
+
proposalReason: string | null;
|
|
221
|
+
attachments: ILikmsDocAttachment[];
|
|
222
|
+
}
|
|
223
|
+
/**
|
|
224
|
+
* 국회 의안정보시스템 의안상세 파서.
|
|
225
|
+
*
|
|
226
|
+
* 상세 페이지 HTML과 심사정보 탭 조각 HTML을 **둘 다** 받을 수 있고, 들어 있는 값만
|
|
227
|
+
* 채우며 잘못된 HTML이면 빈 값을 반환한다(예외를 던지지 않는다).
|
|
228
|
+
* 사이트가 두 응답으로 나뉘어 있어 호출부는 `LikmsCrawler`/`LikmsStateCrawler`로
|
|
229
|
+
* 두 HTML을 모은 뒤 이 파서에 넘긴다.
|
|
230
|
+
*/
|
|
231
|
+
export declare class LikmsDetailParser {
|
|
232
|
+
/** NBSP 제거 + 줄 단위 공백 축약(빈 줄 제거) */
|
|
233
|
+
private normalizeText;
|
|
234
|
+
/** 셀 텍스트의 라벨(`<i>의안번호</i>`)을 떼고 값만 남긴다 */
|
|
235
|
+
private cellText;
|
|
236
|
+
/**
|
|
237
|
+
* `javascript: goDownload('/filegate/...')`에서 경로를 뽑아 절대 URL로 만든다.
|
|
238
|
+
* 다운로드 대상이 아닌 링크(`javascript:;` 미리보기 등)면 `null`.
|
|
239
|
+
*/
|
|
240
|
+
private extractDownloadUrl;
|
|
241
|
+
private toAbsoluteUrl;
|
|
242
|
+
/** 파일 제목/링크 텍스트에서 확장자를 뽑는다 */
|
|
243
|
+
private extractFileExtension;
|
|
244
|
+
private parseAttachments;
|
|
245
|
+
/**
|
|
246
|
+
* 심사정보 탭 조각의 `#prntSummary`에서 제안이유 및 주요내용을 추출합니다.
|
|
247
|
+
* `#prntSummary`가 없거나 비어 있으면 `null`을 반환합니다.
|
|
248
|
+
*/
|
|
249
|
+
parseProposalReason(fragmentHtml: string): string | null;
|
|
250
|
+
/**
|
|
251
|
+
* 의안상세 페이지 HTML 또는 심사정보 탭 조각 HTML을 파싱합니다.
|
|
252
|
+
* 두 HTML을 모두 넘길 수 있으며, 들어 있는 값만 채웁니다.
|
|
253
|
+
*/
|
|
254
|
+
parseDetail(html: string): ILikmsDetailInfo;
|
|
255
|
+
}
|
package/dist/parser.js
CHANGED
|
@@ -33,7 +33,7 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
33
33
|
};
|
|
34
34
|
})();
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
-
exports.NsmLmStsParser = exports.PalParser = void 0;
|
|
36
|
+
exports.LikmsDetailParser = exports.LikmsStateParser = exports.NsmLmStsParser = exports.PalParser = void 0;
|
|
37
37
|
const url_1 = require("url");
|
|
38
38
|
const cheerio = __importStar(require("cheerio"));
|
|
39
39
|
const config_1 = require("./config");
|
|
@@ -57,7 +57,7 @@ class PalParser {
|
|
|
57
57
|
const subject = $(el).find('td.td_block > a.board_subject').text().trim();
|
|
58
58
|
if (subject) {
|
|
59
59
|
const link = $(el).find('td.td_block > a.board_subject').attr('href');
|
|
60
|
-
const numComments = Number($(el).find('td:nth-child(8)').text().replace(
|
|
60
|
+
const numComments = Number($(el).find('td:nth-child(8)').text().replace(/,/g, '').trim());
|
|
61
61
|
const proposerCategory = $(el).find('td:nth-child(3)').text().trim();
|
|
62
62
|
const committee = $(el).find('td:nth-child(4)').text().trim();
|
|
63
63
|
const num = Number($(el).find('td:nth-child(1)').text().trim());
|
|
@@ -73,11 +73,11 @@ class PalParser {
|
|
|
73
73
|
};
|
|
74
74
|
const contentId = boardLink ? this.extractContentId(boardLink) : null;
|
|
75
75
|
output.push({
|
|
76
|
-
num,
|
|
76
|
+
num: Number.isFinite(num) ? num : 0,
|
|
77
77
|
subject,
|
|
78
78
|
proposerCategory,
|
|
79
79
|
committee,
|
|
80
|
-
numComments,
|
|
80
|
+
numComments: Number.isFinite(numComments) ? numComments : 0,
|
|
81
81
|
link: boardLink,
|
|
82
82
|
contentId,
|
|
83
83
|
attachments,
|
|
@@ -101,7 +101,7 @@ class PalParser {
|
|
|
101
101
|
totalPages = parseInt(m[2], 10);
|
|
102
102
|
const strong = $(el).prevAll('strong').first();
|
|
103
103
|
if (strong.length) {
|
|
104
|
-
total = parseInt(strong.text().replace(/,/g, ''), 10);
|
|
104
|
+
total = parseInt(strong.text().replace(/,/g, ''), 10) || 0;
|
|
105
105
|
}
|
|
106
106
|
return false; // break
|
|
107
107
|
}
|
|
@@ -398,4 +398,311 @@ class NsmLmStsParser {
|
|
|
398
398
|
}
|
|
399
399
|
}
|
|
400
400
|
exports.NsmLmStsParser = NsmLmStsParser;
|
|
401
|
+
class LikmsStateParser {
|
|
402
|
+
normalizeText(text) {
|
|
403
|
+
return text
|
|
404
|
+
.replace(/\u00a0/g, ' ')
|
|
405
|
+
.replace(/\r/g, '')
|
|
406
|
+
.split('\n')
|
|
407
|
+
.map((line) => line.replace(/\s+/g, ' ').trim())
|
|
408
|
+
.filter(Boolean)
|
|
409
|
+
.join('\n');
|
|
410
|
+
}
|
|
411
|
+
/** 의안명 끝 괄호를 발의자로 추출합니다 (예: "...(장종태의원 등 10인)" → "장종태의원 등 10인"). */
|
|
412
|
+
extractProposer(billName) {
|
|
413
|
+
const match = billName.match(/\(([^()]*)\)\s*$/);
|
|
414
|
+
return match?.[1]?.trim() ?? '';
|
|
415
|
+
}
|
|
416
|
+
buildDetailLink(billId) {
|
|
417
|
+
if (!billId) {
|
|
418
|
+
return '';
|
|
419
|
+
}
|
|
420
|
+
return `${config_1.Config.LIKMS_DOMAIN}${config_1.Config.LIKMS_DETAIL_PAGE_URL}?billId=${encodeURIComponent(billId)}`;
|
|
421
|
+
}
|
|
422
|
+
/**
|
|
423
|
+
* 계류의안 목록 조각(AJAX 응답) HTML을 파싱하여 반환합니다.
|
|
424
|
+
* 잘못된 HTML·빈 결과에서는 빈 배열과 0을 반환하며 예외를 던지지 않습니다.
|
|
425
|
+
*/
|
|
426
|
+
parseList(html) {
|
|
427
|
+
const $ = cheerio.load(html);
|
|
428
|
+
const items = [];
|
|
429
|
+
const rowSelector = $('#state-list tbody tr').length
|
|
430
|
+
? '#state-list tbody tr'
|
|
431
|
+
: 'table tbody tr';
|
|
432
|
+
$(rowSelector).each((_, tr) => {
|
|
433
|
+
const $tr = $(tr);
|
|
434
|
+
const $anchor = $tr.find('td.align_left a[data-bill-id]').first();
|
|
435
|
+
const billId = ($anchor.attr('data-bill-id') ?? '').trim();
|
|
436
|
+
if (!billId) {
|
|
437
|
+
// "조회된 데이터가 없습니다" 등 데이터 행이 아닌 경우 건너뜀
|
|
438
|
+
return;
|
|
439
|
+
}
|
|
440
|
+
const rawBillNo = $tr.find('td.billNo').attr('title') ?? $tr.find('td.billNo').text();
|
|
441
|
+
const billNo = (rawBillNo ?? $anchor.attr('data-bill_no') ?? '').trim();
|
|
442
|
+
const anchorText = $anchor.clone();
|
|
443
|
+
anchorText.find('i').remove();
|
|
444
|
+
const billName = this.normalizeText(anchorText.text()) ||
|
|
445
|
+
this.normalizeText(($anchor.attr('title') ?? '').replace(/\s*\(새창 열림\)\s*$/, ''));
|
|
446
|
+
const proposerKind = ($tr.find('td.proposerKindName').attr('title') ??
|
|
447
|
+
$tr.find('td.proposerKindName').text()).trim();
|
|
448
|
+
const proposalDate = ($tr.find('td.proposeDt').attr('title') ??
|
|
449
|
+
$tr.find('td.proposeDt').text()).trim();
|
|
450
|
+
const committee = $tr.find('td.currCmt').text().trim();
|
|
451
|
+
const progressStatus = ($tr.find('td.procStageName').attr('title') ??
|
|
452
|
+
$tr.find('td.procStageName').text()).trim();
|
|
453
|
+
const hasProposalReason = $tr.find('a[onclick*="openSummaryPopup"]').length > 0;
|
|
454
|
+
items.push({
|
|
455
|
+
billNo,
|
|
456
|
+
billId,
|
|
457
|
+
billName,
|
|
458
|
+
proposer: this.extractProposer(billName),
|
|
459
|
+
proposerKind,
|
|
460
|
+
proposalDate,
|
|
461
|
+
committee,
|
|
462
|
+
progressStatus,
|
|
463
|
+
hasProposalReason,
|
|
464
|
+
// 목록 HTML에는 제안이유 본문이 없다(필요하면 크롤러가 상세에서 보정).
|
|
465
|
+
proposalReason: null,
|
|
466
|
+
link: this.buildDetailLink(billId),
|
|
467
|
+
});
|
|
468
|
+
});
|
|
469
|
+
const countText = $('#pager_count_text').attr('value') ?? '';
|
|
470
|
+
let total = parseInt(countText.replace(/[^0-9]/g, ''), 10) || 0;
|
|
471
|
+
let currentPage = 1;
|
|
472
|
+
let totalPages = 0;
|
|
473
|
+
// 예: " (1/1,595 페이지)" — 전체 페이지 수에 천 단위 구분 쉼표가 들어간다.
|
|
474
|
+
const pagesText = $('#pager_pages_text').attr('value') ?? '';
|
|
475
|
+
const pagesMatch = pagesText.match(/\(([\d,]+)\s*\/\s*([\d,]+)\s*페이지\)/);
|
|
476
|
+
if (pagesMatch) {
|
|
477
|
+
currentPage = parseInt(pagesMatch[1].replace(/,/g, ''), 10) || 1;
|
|
478
|
+
totalPages = parseInt(pagesMatch[2].replace(/,/g, ''), 10) || 0;
|
|
479
|
+
}
|
|
480
|
+
if (totalPages === 0 && items.length > 0) {
|
|
481
|
+
totalPages = 1;
|
|
482
|
+
total = total || items.length;
|
|
483
|
+
}
|
|
484
|
+
return { total, totalPages, currentPage, items };
|
|
485
|
+
}
|
|
486
|
+
/**
|
|
487
|
+
* 동명이인 선택 팝업(`/bi/popup/selSameNmMemb.do`)의 후보 목록을 파싱합니다.
|
|
488
|
+
*
|
|
489
|
+
* 표는 한 행이 후보 한 명이고 컬럼은 대수·의원명·한자명·정당명입니다. 각 행의
|
|
490
|
+
* `data-mem-id`가 `representId`에 그대로 넣는 의원 ID이며, 1번째 셀은 모바일용
|
|
491
|
+
* 목록(`ul.m_list`)과 대수 라벨을 함께 담고 있어 데스크톱 컬럼을 우선 사용합니다.
|
|
492
|
+
*
|
|
493
|
+
* 데이터가 없거나(“조회된 데이터가 없습니다”) 잘못된 HTML이면 빈 배열을 반환합니다.
|
|
494
|
+
*/
|
|
495
|
+
parseSameNameCandidates(html) {
|
|
496
|
+
const $ = cheerio.load(html);
|
|
497
|
+
const candidates = [];
|
|
498
|
+
const rowSelector = $('#data_sect tr').length
|
|
499
|
+
? '#data_sect tr'
|
|
500
|
+
: 'tbody tr';
|
|
501
|
+
$(rowSelector).each((_, tr) => {
|
|
502
|
+
const $tr = $(tr);
|
|
503
|
+
const membId = ($tr.find('[data-mem-id]').first().attr('data-mem-id') ?? '').trim();
|
|
504
|
+
if (!membId) {
|
|
505
|
+
// 데이터 행이 아니거나(빈 결과 안내) ID가 없는 행
|
|
506
|
+
return;
|
|
507
|
+
}
|
|
508
|
+
const cells = $tr.find('td');
|
|
509
|
+
const mobileItems = cells.first().find('ul.m_list li');
|
|
510
|
+
const cellText = (index) => this.normalizeText(cells.eq(index).text());
|
|
511
|
+
const mobileText = (index) => this.normalizeText(mobileItems.eq(index).text());
|
|
512
|
+
candidates.push({
|
|
513
|
+
membId,
|
|
514
|
+
name: cellText(1) || mobileText(0),
|
|
515
|
+
age: this.normalizeText(cells.first().find('span').first().text()),
|
|
516
|
+
hanja: cellText(2) || mobileText(1),
|
|
517
|
+
party: cellText(3) || mobileText(2),
|
|
518
|
+
});
|
|
519
|
+
});
|
|
520
|
+
return candidates;
|
|
521
|
+
}
|
|
522
|
+
/**
|
|
523
|
+
* 소관위원회 목록 JSON(`/bi/bill/sch/findAgeCmt.do`)을 파싱합니다.
|
|
524
|
+
*
|
|
525
|
+
* 응답은 `{ "ageCmtList": [{ "comCd", "comCdName", "cdOrd" }] }` 형태이며,
|
|
526
|
+
* JSON이 아니거나 목록이 비면 빈 배열을 반환합니다(예외를 던지지 않습니다).
|
|
527
|
+
*/
|
|
528
|
+
parseCommittees(raw) {
|
|
529
|
+
let parsed;
|
|
530
|
+
try {
|
|
531
|
+
parsed = JSON.parse(raw);
|
|
532
|
+
}
|
|
533
|
+
catch {
|
|
534
|
+
// Parsing malformed input must not expose exceptions to consumers.
|
|
535
|
+
return [];
|
|
536
|
+
}
|
|
537
|
+
if (typeof parsed !== 'object' ||
|
|
538
|
+
parsed === null ||
|
|
539
|
+
!('ageCmtList' in parsed)) {
|
|
540
|
+
return [];
|
|
541
|
+
}
|
|
542
|
+
const list = parsed.ageCmtList;
|
|
543
|
+
if (!Array.isArray(list)) {
|
|
544
|
+
return [];
|
|
545
|
+
}
|
|
546
|
+
const committees = [];
|
|
547
|
+
const entries = list;
|
|
548
|
+
for (const entry of entries) {
|
|
549
|
+
if (typeof entry !== 'object' ||
|
|
550
|
+
entry === null ||
|
|
551
|
+
!('comCd' in entry) ||
|
|
552
|
+
!('comCdName' in entry)) {
|
|
553
|
+
continue;
|
|
554
|
+
}
|
|
555
|
+
const comCd = typeof entry.comCd === 'string' ? entry.comCd.trim() : '';
|
|
556
|
+
const comCdName = typeof entry.comCdName === 'string' ? entry.comCdName.trim() : '';
|
|
557
|
+
if (!comCd || !comCdName) {
|
|
558
|
+
continue;
|
|
559
|
+
}
|
|
560
|
+
committees.push({
|
|
561
|
+
comCd,
|
|
562
|
+
comCdName,
|
|
563
|
+
cdOrd: 'cdOrd' in entry &&
|
|
564
|
+
typeof entry.cdOrd === 'number' &&
|
|
565
|
+
Number.isFinite(entry.cdOrd)
|
|
566
|
+
? entry.cdOrd
|
|
567
|
+
: null,
|
|
568
|
+
});
|
|
569
|
+
}
|
|
570
|
+
return committees;
|
|
571
|
+
}
|
|
572
|
+
}
|
|
573
|
+
exports.LikmsStateParser = LikmsStateParser;
|
|
574
|
+
/**
|
|
575
|
+
* 국회 의안정보시스템 의안상세 파서.
|
|
576
|
+
*
|
|
577
|
+
* 상세 페이지 HTML과 심사정보 탭 조각 HTML을 **둘 다** 받을 수 있고, 들어 있는 값만
|
|
578
|
+
* 채우며 잘못된 HTML이면 빈 값을 반환한다(예외를 던지지 않는다).
|
|
579
|
+
* 사이트가 두 응답으로 나뉘어 있어 호출부는 `LikmsCrawler`/`LikmsStateCrawler`로
|
|
580
|
+
* 두 HTML을 모은 뒤 이 파서에 넘긴다.
|
|
581
|
+
*/
|
|
582
|
+
class LikmsDetailParser {
|
|
583
|
+
/** NBSP 제거 + 줄 단위 공백 축약(빈 줄 제거) */
|
|
584
|
+
normalizeText(text) {
|
|
585
|
+
return text
|
|
586
|
+
.replace(/\u00a0/g, ' ')
|
|
587
|
+
.replace(/\r/g, '')
|
|
588
|
+
.split('\n')
|
|
589
|
+
.map((line) => line.replace(/\s+/g, ' ').trim())
|
|
590
|
+
.filter(Boolean)
|
|
591
|
+
.join('\n');
|
|
592
|
+
}
|
|
593
|
+
/** 셀 텍스트의 라벨(`<i>의안번호</i>`)을 떼고 값만 남긴다 */
|
|
594
|
+
cellText(value) {
|
|
595
|
+
return this.normalizeText(value).trim();
|
|
596
|
+
}
|
|
597
|
+
/**
|
|
598
|
+
* `javascript: goDownload('/filegate/...')`에서 경로를 뽑아 절대 URL로 만든다.
|
|
599
|
+
* 다운로드 대상이 아닌 링크(`javascript:;` 미리보기 등)면 `null`.
|
|
600
|
+
*/
|
|
601
|
+
extractDownloadUrl(rawHref) {
|
|
602
|
+
const href = rawHref.trim();
|
|
603
|
+
if (!href || href === 'javascript:;' || href === '#') {
|
|
604
|
+
return null;
|
|
605
|
+
}
|
|
606
|
+
if (href.startsWith('javascript:')) {
|
|
607
|
+
const path = href.match(/['"]([^'"]+)['"]/)?.[1]?.trim();
|
|
608
|
+
if (!path) {
|
|
609
|
+
return null;
|
|
610
|
+
}
|
|
611
|
+
return this.toAbsoluteUrl(path);
|
|
612
|
+
}
|
|
613
|
+
return this.toAbsoluteUrl(href);
|
|
614
|
+
}
|
|
615
|
+
toAbsoluteUrl(path) {
|
|
616
|
+
if (/^https?:\/\//.test(path)) {
|
|
617
|
+
return path;
|
|
618
|
+
}
|
|
619
|
+
return `${config_1.Config.LIKMS_DOMAIN}${path.startsWith('/') ? '' : '/'}${path}`;
|
|
620
|
+
}
|
|
621
|
+
/** 파일 제목/링크 텍스트에서 확장자를 뽑는다 */
|
|
622
|
+
extractFileExtension(text) {
|
|
623
|
+
if (/hwp|한글/i.test(text)) {
|
|
624
|
+
return 'hwp';
|
|
625
|
+
}
|
|
626
|
+
if (/pdf/i.test(text)) {
|
|
627
|
+
return 'pdf';
|
|
628
|
+
}
|
|
629
|
+
return '';
|
|
630
|
+
}
|
|
631
|
+
parseAttachments($, selector) {
|
|
632
|
+
const attachments = [];
|
|
633
|
+
$(selector).each((_, el) => {
|
|
634
|
+
const $a = $(el);
|
|
635
|
+
const url = this.extractDownloadUrl($a.attr('href') ?? '');
|
|
636
|
+
if (!url) {
|
|
637
|
+
return;
|
|
638
|
+
}
|
|
639
|
+
const title = this.cellText($a.attr('title') ?? '');
|
|
640
|
+
const base = this.cellText(title
|
|
641
|
+
.replace(/\([^)]*다운로드\)\s*$/, '')
|
|
642
|
+
.replace(/^의안접수정보\s*/, ''));
|
|
643
|
+
const filename = base || this.cellText($a.text());
|
|
644
|
+
if (!filename) {
|
|
645
|
+
return;
|
|
646
|
+
}
|
|
647
|
+
const extension = this.extractFileExtension(title || $a.text());
|
|
648
|
+
attachments.push({
|
|
649
|
+
filename: extension ? `${filename}.${extension}` : filename,
|
|
650
|
+
url,
|
|
651
|
+
});
|
|
652
|
+
});
|
|
653
|
+
return attachments;
|
|
654
|
+
}
|
|
655
|
+
/**
|
|
656
|
+
* 심사정보 탭 조각의 `#prntSummary`에서 제안이유 및 주요내용을 추출합니다.
|
|
657
|
+
* `#prntSummary`가 없거나 비어 있으면 `null`을 반환합니다.
|
|
658
|
+
*/
|
|
659
|
+
parseProposalReason(fragmentHtml) {
|
|
660
|
+
const $ = cheerio.load(fragmentHtml);
|
|
661
|
+
const pre = $('#prntSummary').first();
|
|
662
|
+
if (!pre.length) {
|
|
663
|
+
return null;
|
|
664
|
+
}
|
|
665
|
+
const clone = pre.clone();
|
|
666
|
+
clone.find('br').replaceWith('\n');
|
|
667
|
+
const lines = clone
|
|
668
|
+
.text()
|
|
669
|
+
.replace(/\u00a0/g, ' ')
|
|
670
|
+
.replace(/\r/g, '')
|
|
671
|
+
.split('\n')
|
|
672
|
+
.map((line) => line.replace(/\s+/g, ' ').trim())
|
|
673
|
+
.filter(Boolean);
|
|
674
|
+
// 첫 줄이 섹션 제목("제안이유 및 주요내용")을 반복하는 경우 제거
|
|
675
|
+
if (lines[0]?.replace(/\s+/g, '') === '제안이유및주요내용') {
|
|
676
|
+
lines.shift();
|
|
677
|
+
}
|
|
678
|
+
const text = lines.join('\n');
|
|
679
|
+
return text || null;
|
|
680
|
+
}
|
|
681
|
+
/**
|
|
682
|
+
* 의안상세 페이지 HTML 또는 심사정보 탭 조각 HTML을 파싱합니다.
|
|
683
|
+
* 두 HTML을 모두 넘길 수 있으며, 들어 있는 값만 채웁니다.
|
|
684
|
+
*/
|
|
685
|
+
parseDetail(html) {
|
|
686
|
+
const $ = cheerio.load(html);
|
|
687
|
+
const rawTitle = ($('h3.detailh3').first().attr('title') ?? $('h3.detailh3').first().text()).trim();
|
|
688
|
+
const title = this.normalizeText(rawTitle)
|
|
689
|
+
.replace(/^\[\d+\]\s*/, '')
|
|
690
|
+
.trim();
|
|
691
|
+
const pageBillNo = ($('#form input[name="billNo"]').attr('value') ?? '').trim();
|
|
692
|
+
const titleBillNo = rawTitle.match(/^\s*\[(\d+)\]/)?.[1] ?? '';
|
|
693
|
+
const billNo = this.cellText($('#insc-rcp-row td.billNo span').first().text()) ||
|
|
694
|
+
pageBillNo ||
|
|
695
|
+
titleBillNo;
|
|
696
|
+
return {
|
|
697
|
+
title,
|
|
698
|
+
billNo,
|
|
699
|
+
proposer: this.cellText($('#insc-rcp-row td.proposer span').first().text()),
|
|
700
|
+
proposalDate: this.cellText($('#insc-rcp-row td.proposeDt span').first().text()),
|
|
701
|
+
session: this.cellText($('#insc-rcp-row td.sessionTitle span').first().text()),
|
|
702
|
+
proposalReason: this.parseProposalReason(html),
|
|
703
|
+
attachments: this.parseAttachments($, '#insc-rcp-row td.doc a'),
|
|
704
|
+
};
|
|
705
|
+
}
|
|
706
|
+
}
|
|
707
|
+
exports.LikmsDetailParser = LikmsDetailParser;
|
|
401
708
|
//# sourceMappingURL=parser.js.map
|