@things-factory/integration-data-go-kr 10.0.0-zeta.3 → 10.0.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/dist-server/engine/spec/building-permit/hub.d.ts +17 -0
- package/dist-server/engine/spec/building-permit/hub.js +118 -0
- package/dist-server/engine/spec/building-permit/hub.js.map +1 -0
- package/dist-server/engine/spec/building-permit/index.d.ts +7 -0
- package/dist-server/engine/spec/building-permit/index.js +12 -0
- package/dist-server/engine/spec/building-permit/index.js.map +1 -0
- package/dist-server/engine/spec/housing-permit/hub.d.ts +16 -0
- package/dist-server/engine/spec/housing-permit/hub.js +114 -0
- package/dist-server/engine/spec/housing-permit/hub.js.map +1 -0
- package/dist-server/engine/spec/housing-permit/index.d.ts +5 -0
- package/dist-server/engine/spec/housing-permit/index.js +10 -0
- package/dist-server/engine/spec/housing-permit/index.js.map +1 -0
- package/dist-server/engine/spec/index.d.ts +2 -0
- package/dist-server/engine/spec/index.js +6 -0
- package/dist-server/engine/spec/index.js.map +1 -1
- package/dist-server/engine/task/building-info.d.ts +30 -0
- package/dist-server/engine/task/building-info.js +43 -0
- package/dist-server/engine/task/building-info.js.map +1 -0
- package/dist-server/engine/task/building-permit/index.d.ts +8 -0
- package/dist-server/engine/task/building-permit/index.js +11 -0
- package/dist-server/engine/task/building-permit/index.js.map +1 -0
- package/dist-server/engine/task/building-permit/summary.d.ts +72 -0
- package/dist-server/engine/task/building-permit/summary.js +280 -0
- package/dist-server/engine/task/building-permit/summary.js.map +1 -0
- package/dist-server/engine/task/housing-permit/index.d.ts +9 -0
- package/dist-server/engine/task/housing-permit/index.js +12 -0
- package/dist-server/engine/task/housing-permit/index.js.map +1 -0
- package/dist-server/engine/task/housing-permit/summary.d.ts +58 -0
- package/dist-server/engine/task/housing-permit/summary.js +267 -0
- package/dist-server/engine/task/housing-permit/summary.js.map +1 -0
- package/dist-server/engine/task/index.d.ts +3 -0
- package/dist-server/engine/task/index.js +3 -0
- package/dist-server/engine/task/index.js.map +1 -1
- package/dist-server/tsconfig.tsbuildinfo +1 -1
- package/package.json +3 -3
- package/server/engine/spec/building-permit/hub.ts +122 -0
- package/server/engine/spec/building-permit/index.ts +7 -0
- package/server/engine/spec/housing-permit/hub.ts +118 -0
- package/server/engine/spec/housing-permit/index.ts +5 -0
- package/server/engine/spec/index.ts +6 -0
- package/server/engine/task/building-info.ts +45 -0
- package/server/engine/task/building-permit/index.ts +8 -0
- package/server/engine/task/building-permit/summary.ts +362 -0
- package/server/engine/task/housing-permit/index.ts +9 -0
- package/server/engine/task/housing-permit/summary.ts +336 -0
- package/server/engine/task/index.ts +3 -0
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { ServiceSpec } from '../types';
|
|
2
|
+
/**
|
|
3
|
+
* 국토교통부_건축HUB 건축인허가정보 서비스 (data.go.kr 데이터셋 15134730).
|
|
4
|
+
*
|
|
5
|
+
* 세움터(EAIS) 원천의 **건축 인허가(허가·착공·사용승인 전) 단계** 정보를 조회한다.
|
|
6
|
+
* 건축물대장(BldRgstHubService)이 "사용승인 완료된 건물"만 담는 것과 달리, 이 서비스는
|
|
7
|
+
* **준공 전(시공 중) 현장**의 허가 개요·동별·층별 정보를 제공한다 → 진행 중 프로젝트의
|
|
8
|
+
* 연면적·용적률·층수·구조 등을 대장 생성 이전에 확보하는 유일한 공공 경로.
|
|
9
|
+
*
|
|
10
|
+
* 모든 오퍼레이션은 건축물대장과 동일한 PNU 구성요소로 조회한다:
|
|
11
|
+
* - sigunguCd(5) + bjdongCd(5) + platGbCd(1) + bun(4) + ji(4)
|
|
12
|
+
*
|
|
13
|
+
* 주의: 한 필지에 여러 허가(mgmPmsrgstPk)가 존재할 수 있고, 공사용 가설건축물
|
|
14
|
+
* (컨테이너 현장사무소 등) 이 다수 섞여 내려온다. 본건물 개요를 얻으려면
|
|
15
|
+
* `mainPurpsCdNm='가설건축물'` 을 걸러내고 주건축물(mainAtchGbCd='0') 을 선택해야 한다.
|
|
16
|
+
*/
|
|
17
|
+
export declare const ArchPmsHubService: ServiceSpec;
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ArchPmsHubService = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* PNU 5요소 파라미터 스펙 — ArchPmsHubService 의 모든 오퍼레이션이 공유.
|
|
6
|
+
* (건축물대장 허브와 동일 구성. 별도 선언으로 서비스 간 독립성 유지.)
|
|
7
|
+
*/
|
|
8
|
+
const pnuParams = [
|
|
9
|
+
{
|
|
10
|
+
name: 'sigunguCd',
|
|
11
|
+
label: 'label.sigungu-cd',
|
|
12
|
+
required: true,
|
|
13
|
+
length: 5,
|
|
14
|
+
description: '시군구코드 5자리 (법정동코드 10자리의 앞 5자리).',
|
|
15
|
+
example: '11500'
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
name: 'bjdongCd',
|
|
19
|
+
label: 'label.bjdong-cd',
|
|
20
|
+
required: true,
|
|
21
|
+
length: 5,
|
|
22
|
+
description: '법정동코드 5자리 (법정동코드 10자리의 뒤 5자리).',
|
|
23
|
+
example: '10500'
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
name: 'platGbCd',
|
|
27
|
+
label: 'label.plat-gb-cd',
|
|
28
|
+
default: '0',
|
|
29
|
+
length: 1,
|
|
30
|
+
description: '대지구분 1자리. `0` 대지 / `1` 산 / `2` 블록.',
|
|
31
|
+
example: '0',
|
|
32
|
+
enum: [
|
|
33
|
+
{ value: '0', label: '대지' },
|
|
34
|
+
{ value: '1', label: '산' },
|
|
35
|
+
{ value: '2', label: '블록' }
|
|
36
|
+
]
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
name: 'bun',
|
|
40
|
+
label: 'label.bun',
|
|
41
|
+
required: true,
|
|
42
|
+
pad: 4,
|
|
43
|
+
description: '본번. 자동으로 4자리 zero-pad 됨 (예: `747` → `0747`).',
|
|
44
|
+
example: '747'
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
name: 'ji',
|
|
48
|
+
label: 'label.ji',
|
|
49
|
+
default: '0',
|
|
50
|
+
pad: 4,
|
|
51
|
+
description: '부번. 없으면 `0`. 자동 4자리 zero-pad.',
|
|
52
|
+
example: '1'
|
|
53
|
+
}
|
|
54
|
+
];
|
|
55
|
+
/**
|
|
56
|
+
* 국토교통부_건축HUB 건축인허가정보 서비스 (data.go.kr 데이터셋 15134730).
|
|
57
|
+
*
|
|
58
|
+
* 세움터(EAIS) 원천의 **건축 인허가(허가·착공·사용승인 전) 단계** 정보를 조회한다.
|
|
59
|
+
* 건축물대장(BldRgstHubService)이 "사용승인 완료된 건물"만 담는 것과 달리, 이 서비스는
|
|
60
|
+
* **준공 전(시공 중) 현장**의 허가 개요·동별·층별 정보를 제공한다 → 진행 중 프로젝트의
|
|
61
|
+
* 연면적·용적률·층수·구조 등을 대장 생성 이전에 확보하는 유일한 공공 경로.
|
|
62
|
+
*
|
|
63
|
+
* 모든 오퍼레이션은 건축물대장과 동일한 PNU 구성요소로 조회한다:
|
|
64
|
+
* - sigunguCd(5) + bjdongCd(5) + platGbCd(1) + bun(4) + ji(4)
|
|
65
|
+
*
|
|
66
|
+
* 주의: 한 필지에 여러 허가(mgmPmsrgstPk)가 존재할 수 있고, 공사용 가설건축물
|
|
67
|
+
* (컨테이너 현장사무소 등) 이 다수 섞여 내려온다. 본건물 개요를 얻으려면
|
|
68
|
+
* `mainPurpsCdNm='가설건축물'` 을 걸러내고 주건축물(mainAtchGbCd='0') 을 선택해야 한다.
|
|
69
|
+
*/
|
|
70
|
+
exports.ArchPmsHubService = {
|
|
71
|
+
serviceId: '1613000/ArchPmsHubService',
|
|
72
|
+
label: '국토교통부_건축HUB 건축인허가정보 서비스',
|
|
73
|
+
description: '세움터(EAIS) 원천의 건축 인허가 정보를 조회한다. 기본개요·동별개요·층별개요·주택·부설주차장 등 오퍼레이션 제공. 준공 전(시공 중) 현장 조회에 사용.',
|
|
74
|
+
homepage: 'https://www.data.go.kr/data/15134730/openapi.do',
|
|
75
|
+
operations: {
|
|
76
|
+
getApBasisOulnInfo: {
|
|
77
|
+
operationId: 'getApBasisOulnInfo',
|
|
78
|
+
label: '기본개요 조회',
|
|
79
|
+
description: '허가 기본개요(대지면적·건축면적·건폐율·용적률·연면적·주용도·허가일·착공(예정)일·사용승인일 등) 를 조회. 한 필지에 허가가 여러 건이면 복수 레코드로 내려온다 (mgmPmsrgstPk 로 구분).',
|
|
80
|
+
params: [...pnuParams],
|
|
81
|
+
responseNotes: '지상/지하 층수(grndFlrCnt/ugrndFlrCnt) 는 기본개요에 없고 동별개요/층별개요에 있음. 숫자 필드가 문자열/공백으로 올 수 있음.',
|
|
82
|
+
externalDocsUrl: 'https://www.data.go.kr/data/15134730/openapi.do',
|
|
83
|
+
examples: [
|
|
84
|
+
{
|
|
85
|
+
label: '서울 강서구 마곡동 747-1',
|
|
86
|
+
params: { sigunguCd: '11500', bjdongCd: '10500', bun: '747', ji: '1' }
|
|
87
|
+
}
|
|
88
|
+
]
|
|
89
|
+
},
|
|
90
|
+
getApDongOulnInfo: {
|
|
91
|
+
operationId: 'getApDongOulnInfo',
|
|
92
|
+
label: '동별개요 조회',
|
|
93
|
+
description: '동(棟) 별 개요(주부속구분·주용도·구조·동 연면적·세대수·지상/지하 층수 등) 를 조회. 주건축물/부속건축물, 가설건축물 여부 판별의 기준.',
|
|
94
|
+
params: [...pnuParams],
|
|
95
|
+
responseNotes: 'mainAtchGbCd(0=주건축물,1=부속) / mainPurpsCdNm(가설건축물 여부) 로 본건물 필터링. mgmPmsrgstPk·mgmDongOulnPk 로 기본개요/층별개요와 조인.'
|
|
96
|
+
},
|
|
97
|
+
getApFlrOulnInfo: {
|
|
98
|
+
operationId: 'getApFlrOulnInfo',
|
|
99
|
+
label: '층별개요 조회',
|
|
100
|
+
description: '층별 주용도·구조·면적을 조회. flrGbCd(지상/지하) + flrNo 로 동별 지상/지하 층수 산출에 사용.',
|
|
101
|
+
params: [...pnuParams],
|
|
102
|
+
responseNotes: 'mgmDongOulnPk 로 특정 동의 층만 필터. 한 필지 다동이면 결과 건수가 많음.'
|
|
103
|
+
},
|
|
104
|
+
getApHousInfo: {
|
|
105
|
+
operationId: 'getApHousInfo',
|
|
106
|
+
label: '주택 조회',
|
|
107
|
+
description: '주택 관련 세부(가구/세대/호 수 등) 를 조회.',
|
|
108
|
+
params: [...pnuParams]
|
|
109
|
+
},
|
|
110
|
+
getApAtchParkngPlcInfo: {
|
|
111
|
+
operationId: 'getApAtchParkngPlcInfo',
|
|
112
|
+
label: '부설주차장 조회',
|
|
113
|
+
description: '부설주차장 설치 계획(옥내/옥외/면수) 을 조회.',
|
|
114
|
+
params: [...pnuParams]
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
};
|
|
118
|
+
//# sourceMappingURL=hub.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hub.js","sourceRoot":"","sources":["../../../../server/engine/spec/building-permit/hub.ts"],"names":[],"mappings":";;;AAEA;;;GAGG;AACH,MAAM,SAAS,GAAyB;IACtC;QACE,IAAI,EAAE,WAAW;QACjB,KAAK,EAAE,kBAAkB;QACzB,QAAQ,EAAE,IAAI;QACd,MAAM,EAAE,CAAC;QACT,WAAW,EAAE,gCAAgC;QAC7C,OAAO,EAAE,OAAO;KACjB;IACD;QACE,IAAI,EAAE,UAAU;QAChB,KAAK,EAAE,iBAAiB;QACxB,QAAQ,EAAE,IAAI;QACd,MAAM,EAAE,CAAC;QACT,WAAW,EAAE,gCAAgC;QAC7C,OAAO,EAAE,OAAO;KACjB;IACD;QACE,IAAI,EAAE,UAAU;QAChB,KAAK,EAAE,kBAAkB;QACzB,OAAO,EAAE,GAAG;QACZ,MAAM,EAAE,CAAC;QACT,WAAW,EAAE,oCAAoC;QACjD,OAAO,EAAE,GAAG;QACZ,IAAI,EAAE;YACJ,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE;YAC3B,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE;YAC1B,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE;SAC5B;KACF;IACD;QACE,IAAI,EAAE,KAAK;QACX,KAAK,EAAE,WAAW;QAClB,QAAQ,EAAE,IAAI;QACd,GAAG,EAAE,CAAC;QACN,WAAW,EAAE,8CAA8C;QAC3D,OAAO,EAAE,KAAK;KACf;IACD;QACE,IAAI,EAAE,IAAI;QACV,KAAK,EAAE,UAAU;QACjB,OAAO,EAAE,GAAG;QACZ,GAAG,EAAE,CAAC;QACN,WAAW,EAAE,+BAA+B;QAC5C,OAAO,EAAE,GAAG;KACb;CACF,CAAA;AAED;;;;;;;;;;;;;;GAcG;AACU,QAAA,iBAAiB,GAAgB;IAC5C,SAAS,EAAE,2BAA2B;IACtC,KAAK,EAAE,yBAAyB;IAChC,WAAW,EACT,0FAA0F;IAC5F,QAAQ,EAAE,iDAAiD;IAC3D,UAAU,EAAE;QACV,kBAAkB,EAAE;YAClB,WAAW,EAAE,oBAAoB;YACjC,KAAK,EAAE,SAAS;YAChB,WAAW,EACT,iHAAiH;YACnH,MAAM,EAAE,CAAC,GAAG,SAAS,CAAC;YACtB,aAAa,EACX,oFAAoF;YACtF,eAAe,EAAE,iDAAiD;YAClE,QAAQ,EAAE;gBACR;oBACE,KAAK,EAAE,kBAAkB;oBACzB,MAAM,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,GAAG,EAAE;iBACvE;aACF;SACF;QACD,iBAAiB,EAAE;YACjB,WAAW,EAAE,mBAAmB;YAChC,KAAK,EAAE,SAAS;YAChB,WAAW,EACT,iFAAiF;YACnF,MAAM,EAAE,CAAC,GAAG,SAAS,CAAC;YACtB,aAAa,EAAE,4GAA4G;SAC5H;QACD,gBAAgB,EAAE;YAChB,WAAW,EAAE,kBAAkB;YAC/B,KAAK,EAAE,SAAS;YAChB,WAAW,EACT,gEAAgE;YAClE,MAAM,EAAE,CAAC,GAAG,SAAS,CAAC;YACtB,aAAa,EAAE,mDAAmD;SACnE;QACD,aAAa,EAAE;YACb,WAAW,EAAE,eAAe;YAC5B,KAAK,EAAE,OAAO;YACd,WAAW,EAAE,6BAA6B;YAC1C,MAAM,EAAE,CAAC,GAAG,SAAS,CAAC;SACvB;QACD,sBAAsB,EAAE;YACtB,WAAW,EAAE,wBAAwB;YACrC,KAAK,EAAE,UAAU;YACjB,WAAW,EAAE,6BAA6B;YAC1C,MAAM,EAAE,CAAC,GAAG,SAAS,CAAC;SACvB;KACF;CACF,CAAA","sourcesContent":["import { OperationParamSpec, ServiceSpec } from '../types'\n\n/**\n * PNU 5요소 파라미터 스펙 — ArchPmsHubService 의 모든 오퍼레이션이 공유.\n * (건축물대장 허브와 동일 구성. 별도 선언으로 서비스 간 독립성 유지.)\n */\nconst pnuParams: OperationParamSpec[] = [\n {\n name: 'sigunguCd',\n label: 'label.sigungu-cd',\n required: true,\n length: 5,\n description: '시군구코드 5자리 (법정동코드 10자리의 앞 5자리).',\n example: '11500'\n },\n {\n name: 'bjdongCd',\n label: 'label.bjdong-cd',\n required: true,\n length: 5,\n description: '법정동코드 5자리 (법정동코드 10자리의 뒤 5자리).',\n example: '10500'\n },\n {\n name: 'platGbCd',\n label: 'label.plat-gb-cd',\n default: '0',\n length: 1,\n description: '대지구분 1자리. `0` 대지 / `1` 산 / `2` 블록.',\n example: '0',\n enum: [\n { value: '0', label: '대지' },\n { value: '1', label: '산' },\n { value: '2', label: '블록' }\n ]\n },\n {\n name: 'bun',\n label: 'label.bun',\n required: true,\n pad: 4,\n description: '본번. 자동으로 4자리 zero-pad 됨 (예: `747` → `0747`).',\n example: '747'\n },\n {\n name: 'ji',\n label: 'label.ji',\n default: '0',\n pad: 4,\n description: '부번. 없으면 `0`. 자동 4자리 zero-pad.',\n example: '1'\n }\n]\n\n/**\n * 국토교통부_건축HUB 건축인허가정보 서비스 (data.go.kr 데이터셋 15134730).\n *\n * 세움터(EAIS) 원천의 **건축 인허가(허가·착공·사용승인 전) 단계** 정보를 조회한다.\n * 건축물대장(BldRgstHubService)이 \"사용승인 완료된 건물\"만 담는 것과 달리, 이 서비스는\n * **준공 전(시공 중) 현장**의 허가 개요·동별·층별 정보를 제공한다 → 진행 중 프로젝트의\n * 연면적·용적률·층수·구조 등을 대장 생성 이전에 확보하는 유일한 공공 경로.\n *\n * 모든 오퍼레이션은 건축물대장과 동일한 PNU 구성요소로 조회한다:\n * - sigunguCd(5) + bjdongCd(5) + platGbCd(1) + bun(4) + ji(4)\n *\n * 주의: 한 필지에 여러 허가(mgmPmsrgstPk)가 존재할 수 있고, 공사용 가설건축물\n * (컨테이너 현장사무소 등) 이 다수 섞여 내려온다. 본건물 개요를 얻으려면\n * `mainPurpsCdNm='가설건축물'` 을 걸러내고 주건축물(mainAtchGbCd='0') 을 선택해야 한다.\n */\nexport const ArchPmsHubService: ServiceSpec = {\n serviceId: '1613000/ArchPmsHubService',\n label: '국토교통부_건축HUB 건축인허가정보 서비스',\n description:\n '세움터(EAIS) 원천의 건축 인허가 정보를 조회한다. 기본개요·동별개요·층별개요·주택·부설주차장 등 오퍼레이션 제공. 준공 전(시공 중) 현장 조회에 사용.',\n homepage: 'https://www.data.go.kr/data/15134730/openapi.do',\n operations: {\n getApBasisOulnInfo: {\n operationId: 'getApBasisOulnInfo',\n label: '기본개요 조회',\n description:\n '허가 기본개요(대지면적·건축면적·건폐율·용적률·연면적·주용도·허가일·착공(예정)일·사용승인일 등) 를 조회. 한 필지에 허가가 여러 건이면 복수 레코드로 내려온다 (mgmPmsrgstPk 로 구분).',\n params: [...pnuParams],\n responseNotes:\n '지상/지하 층수(grndFlrCnt/ugrndFlrCnt) 는 기본개요에 없고 동별개요/층별개요에 있음. 숫자 필드가 문자열/공백으로 올 수 있음.',\n externalDocsUrl: 'https://www.data.go.kr/data/15134730/openapi.do',\n examples: [\n {\n label: '서울 강서구 마곡동 747-1',\n params: { sigunguCd: '11500', bjdongCd: '10500', bun: '747', ji: '1' }\n }\n ]\n },\n getApDongOulnInfo: {\n operationId: 'getApDongOulnInfo',\n label: '동별개요 조회',\n description:\n '동(棟) 별 개요(주부속구분·주용도·구조·동 연면적·세대수·지상/지하 층수 등) 를 조회. 주건축물/부속건축물, 가설건축물 여부 판별의 기준.',\n params: [...pnuParams],\n responseNotes: 'mainAtchGbCd(0=주건축물,1=부속) / mainPurpsCdNm(가설건축물 여부) 로 본건물 필터링. mgmPmsrgstPk·mgmDongOulnPk 로 기본개요/층별개요와 조인.'\n },\n getApFlrOulnInfo: {\n operationId: 'getApFlrOulnInfo',\n label: '층별개요 조회',\n description:\n '층별 주용도·구조·면적을 조회. flrGbCd(지상/지하) + flrNo 로 동별 지상/지하 층수 산출에 사용.',\n params: [...pnuParams],\n responseNotes: 'mgmDongOulnPk 로 특정 동의 층만 필터. 한 필지 다동이면 결과 건수가 많음.'\n },\n getApHousInfo: {\n operationId: 'getApHousInfo',\n label: '주택 조회',\n description: '주택 관련 세부(가구/세대/호 수 등) 를 조회.',\n params: [...pnuParams]\n },\n getApAtchParkngPlcInfo: {\n operationId: 'getApAtchParkngPlcInfo',\n label: '부설주차장 조회',\n description: '부설주차장 설치 계획(옥내/옥외/면수) 을 조회.',\n params: [...pnuParams]\n }\n }\n}\n"]}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ArchPmsHubService = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* 건축인허가 도메인 서비스 스펙 묶음.
|
|
6
|
+
*
|
|
7
|
+
* 건축물대장(building-ledger)이 "완공 건물"을 담는 것과 대비되는, "허가/시공 단계"
|
|
8
|
+
* 원천 서비스. 새 변종 추가 시 이 폴더에 파일을 만들고 본 index 에 export.
|
|
9
|
+
*/
|
|
10
|
+
var hub_1 = require("./hub");
|
|
11
|
+
Object.defineProperty(exports, "ArchPmsHubService", { enumerable: true, get: function () { return hub_1.ArchPmsHubService; } });
|
|
12
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../server/engine/spec/building-permit/index.ts"],"names":[],"mappings":";;;AAAA;;;;;GAKG;AACH,6BAAyC;AAAhC,wGAAA,iBAAiB,OAAA","sourcesContent":["/**\n * 건축인허가 도메인 서비스 스펙 묶음.\n *\n * 건축물대장(building-ledger)이 \"완공 건물\"을 담는 것과 대비되는, \"허가/시공 단계\"\n * 원천 서비스. 새 변종 추가 시 이 폴더에 파일을 만들고 본 index 에 export.\n */\nexport { ArchPmsHubService } from './hub'\n"]}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { ServiceSpec } from '../types';
|
|
2
|
+
/**
|
|
3
|
+
* 국토교통부_건축HUB 주택인허가정보 서비스 (data.go.kr 데이터셋 15136560).
|
|
4
|
+
*
|
|
5
|
+
* 세움터(EAIS) 원천의 **주택건설 사업계획승인** 단계 정보를 조회한다. 건축인허가
|
|
6
|
+
* (ArchPmsHubService)가 개별 필지 건축허가를 담는 것과 달리, 이 서비스는 **공동주택 단지/
|
|
7
|
+
* 택지지구 사업** 을 블록 단위로 담아 — **지번이 없는 블록형 단지(예: LH/SH 택지지구
|
|
8
|
+
* 공공주택)** 의 연면적·용적률·동/층수를 준공(건축물대장 생성) 이전에 확보하는 경로다.
|
|
9
|
+
*
|
|
10
|
+
* 조회는 건축인허가와 동일한 PNU 구성이나 **platGbCd=2(블록) + bun=블록번호** 가 핵심.
|
|
11
|
+
* - sigunguCd(5) + bjdongCd(5) + platGbCd(1) + bun(4=블록번호) + ji(4)
|
|
12
|
+
*
|
|
13
|
+
* 응답: 기본개요에 연면적(totArea)·용적률(vlRat)·건폐율(bcRat)·대지면적(platArea) 등.
|
|
14
|
+
* 한 사업/블록에 여러 승인(mgmPmsrgstPk)·여러 동이 존재할 수 있다.
|
|
15
|
+
*/
|
|
16
|
+
export declare const HsPmsHubService: ServiceSpec;
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.HsPmsHubService = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* PNU 5요소 파라미터 스펙 — HsPmsHubService(주택인허가) 오퍼레이션 공유.
|
|
6
|
+
*
|
|
7
|
+
* 건축인허가(ArchPmsHubService)와 동일 구성이나, **주택건설 사업계획승인**은 택지지구/
|
|
8
|
+
* 정비사업처럼 개별 지번이 아닌 **블록(platGbCd=2) + 블록번호(bun)** 로 등록되는 경우가
|
|
9
|
+
* 많다. 따라서 `platGbCd=2`(블록) 조회가 1급 시나리오다.
|
|
10
|
+
*/
|
|
11
|
+
const pnuParams = [
|
|
12
|
+
{
|
|
13
|
+
name: 'sigunguCd',
|
|
14
|
+
label: 'label.sigungu-cd',
|
|
15
|
+
required: true,
|
|
16
|
+
length: 5,
|
|
17
|
+
description: '시군구코드 5자리 (법정동코드 10자리의 앞 5자리).',
|
|
18
|
+
example: '11740'
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
name: 'bjdongCd',
|
|
22
|
+
label: 'label.bjdong-cd',
|
|
23
|
+
required: true,
|
|
24
|
+
length: 5,
|
|
25
|
+
description: '법정동코드 5자리 (법정동코드 10자리의 뒤 5자리).',
|
|
26
|
+
example: '10600'
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
name: 'platGbCd',
|
|
30
|
+
label: 'label.plat-gb-cd',
|
|
31
|
+
default: '0',
|
|
32
|
+
length: 1,
|
|
33
|
+
description: '대지구분 1자리. `0` 대지 / `1` 산 / `2` 블록. 택지지구·정비사업 단지는 대개 `2`(블록).',
|
|
34
|
+
example: '2',
|
|
35
|
+
enum: [
|
|
36
|
+
{ value: '0', label: '대지' },
|
|
37
|
+
{ value: '1', label: '산' },
|
|
38
|
+
{ value: '2', label: '블록' }
|
|
39
|
+
]
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
name: 'bun',
|
|
43
|
+
label: 'label.bun',
|
|
44
|
+
required: true,
|
|
45
|
+
pad: 4,
|
|
46
|
+
description: '본번. 블록 조회 시 **블록번호**. 자동 4자리 zero-pad (예: `1` → `0001`).',
|
|
47
|
+
example: '1'
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
name: 'ji',
|
|
51
|
+
label: 'label.ji',
|
|
52
|
+
default: '0',
|
|
53
|
+
pad: 4,
|
|
54
|
+
description: '부번. 없으면 `0`. 자동 4자리 zero-pad.',
|
|
55
|
+
example: '0'
|
|
56
|
+
}
|
|
57
|
+
];
|
|
58
|
+
/**
|
|
59
|
+
* 국토교통부_건축HUB 주택인허가정보 서비스 (data.go.kr 데이터셋 15136560).
|
|
60
|
+
*
|
|
61
|
+
* 세움터(EAIS) 원천의 **주택건설 사업계획승인** 단계 정보를 조회한다. 건축인허가
|
|
62
|
+
* (ArchPmsHubService)가 개별 필지 건축허가를 담는 것과 달리, 이 서비스는 **공동주택 단지/
|
|
63
|
+
* 택지지구 사업** 을 블록 단위로 담아 — **지번이 없는 블록형 단지(예: LH/SH 택지지구
|
|
64
|
+
* 공공주택)** 의 연면적·용적률·동/층수를 준공(건축물대장 생성) 이전에 확보하는 경로다.
|
|
65
|
+
*
|
|
66
|
+
* 조회는 건축인허가와 동일한 PNU 구성이나 **platGbCd=2(블록) + bun=블록번호** 가 핵심.
|
|
67
|
+
* - sigunguCd(5) + bjdongCd(5) + platGbCd(1) + bun(4=블록번호) + ji(4)
|
|
68
|
+
*
|
|
69
|
+
* 응답: 기본개요에 연면적(totArea)·용적률(vlRat)·건폐율(bcRat)·대지면적(platArea) 등.
|
|
70
|
+
* 한 사업/블록에 여러 승인(mgmPmsrgstPk)·여러 동이 존재할 수 있다.
|
|
71
|
+
*/
|
|
72
|
+
exports.HsPmsHubService = {
|
|
73
|
+
serviceId: '1613000/HsPmsHubService',
|
|
74
|
+
label: '국토교통부_건축HUB 주택인허가정보 서비스',
|
|
75
|
+
description: '세움터(EAIS) 원천의 주택건설 사업계획승인 정보를 조회한다. 기본개요·동별개요·층별개요·호별개요·대지위치 등 제공. 블록(platGbCd=2) 단위 단지 조회에 사용 — 지번 없는 택지지구/정비사업 단지의 연면적·용적률 확보.',
|
|
76
|
+
homepage: 'https://www.data.go.kr/data/15136560/openapi.do',
|
|
77
|
+
operations: {
|
|
78
|
+
getHpBasisOulnInfo: {
|
|
79
|
+
operationId: 'getHpBasisOulnInfo',
|
|
80
|
+
label: '기본개요 조회',
|
|
81
|
+
description: '사업계획승인 기본개요(대지면적·건축면적·건폐율·용적률·연면적·주용도·승인일 등) 를 조회. 한 사업/블록에 승인이 여러 건이면 복수 레코드로 내려온다 (mgmPmsrgstPk 로 구분).',
|
|
82
|
+
params: [...pnuParams],
|
|
83
|
+
responseNotes: '연면적 totArea / 용적률 vlRat / 건폐율 bcRat / 대지면적 platArea. 지상/지하 층수는 기본개요에 없고 동별개요/층별개요에 있음. 숫자 필드가 문자열/공백으로 올 수 있음.',
|
|
84
|
+
externalDocsUrl: 'https://www.data.go.kr/data/15136560/openapi.do',
|
|
85
|
+
examples: [
|
|
86
|
+
{
|
|
87
|
+
label: '서울 강동구 강일동 1블록 (고덕강일3단지)',
|
|
88
|
+
params: { sigunguCd: '11740', bjdongCd: '10600', platGbCd: '2', bun: '1', ji: '0' }
|
|
89
|
+
}
|
|
90
|
+
]
|
|
91
|
+
},
|
|
92
|
+
getHpDongOulnInfo: {
|
|
93
|
+
operationId: 'getHpDongOulnInfo',
|
|
94
|
+
label: '동별개요 조회',
|
|
95
|
+
description: '동(棟) 별 개요(주부속구분·주용도·구조·동 연면적·세대수·지상/지하 층수 등) 를 조회. 주건축물/부속건축물 판별 기준.',
|
|
96
|
+
params: [...pnuParams],
|
|
97
|
+
responseNotes: 'mainAtchGbCd(0=주건축물,1=부속) 로 본건물 필터링. mgmPmsrgstPk·mgmDongOulnPk 로 기본개요/층별개요와 조인.'
|
|
98
|
+
},
|
|
99
|
+
getHpFlrOulnInfo: {
|
|
100
|
+
operationId: 'getHpFlrOulnInfo',
|
|
101
|
+
label: '층별개요 조회',
|
|
102
|
+
description: '층별 주용도·구조·면적을 조회. flrGbCd(지상/지하) + flrNo 로 동별 지상/지하 층수 산출에 사용.',
|
|
103
|
+
params: [...pnuParams],
|
|
104
|
+
responseNotes: 'mgmDongOulnPk 로 특정 동의 층만 필터. 한 사업 다동이면 결과 건수가 많음.'
|
|
105
|
+
},
|
|
106
|
+
getHpPlatPlcInfo: {
|
|
107
|
+
operationId: 'getHpPlatPlcInfo',
|
|
108
|
+
label: '대지위치 조회',
|
|
109
|
+
description: '사업의 대지위치(지번/도로명) 목록을 조회. 블록에 포함된 실제 필지 확인용.',
|
|
110
|
+
params: [...pnuParams]
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
};
|
|
114
|
+
//# sourceMappingURL=hub.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hub.js","sourceRoot":"","sources":["../../../../server/engine/spec/housing-permit/hub.ts"],"names":[],"mappings":";;;AAEA;;;;;;GAMG;AACH,MAAM,SAAS,GAAyB;IACtC;QACE,IAAI,EAAE,WAAW;QACjB,KAAK,EAAE,kBAAkB;QACzB,QAAQ,EAAE,IAAI;QACd,MAAM,EAAE,CAAC;QACT,WAAW,EAAE,gCAAgC;QAC7C,OAAO,EAAE,OAAO;KACjB;IACD;QACE,IAAI,EAAE,UAAU;QAChB,KAAK,EAAE,iBAAiB;QACxB,QAAQ,EAAE,IAAI;QACd,MAAM,EAAE,CAAC;QACT,WAAW,EAAE,gCAAgC;QAC7C,OAAO,EAAE,OAAO;KACjB;IACD;QACE,IAAI,EAAE,UAAU;QAChB,KAAK,EAAE,kBAAkB;QACzB,OAAO,EAAE,GAAG;QACZ,MAAM,EAAE,CAAC;QACT,WAAW,EAAE,8DAA8D;QAC3E,OAAO,EAAE,GAAG;QACZ,IAAI,EAAE;YACJ,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE;YAC3B,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE;YAC1B,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE;SAC5B;KACF;IACD;QACE,IAAI,EAAE,KAAK;QACX,KAAK,EAAE,WAAW;QAClB,QAAQ,EAAE,IAAI;QACd,GAAG,EAAE,CAAC;QACN,WAAW,EAAE,0DAA0D;QACvE,OAAO,EAAE,GAAG;KACb;IACD;QACE,IAAI,EAAE,IAAI;QACV,KAAK,EAAE,UAAU;QACjB,OAAO,EAAE,GAAG;QACZ,GAAG,EAAE,CAAC;QACN,WAAW,EAAE,+BAA+B;QAC5C,OAAO,EAAE,GAAG;KACb;CACF,CAAA;AAED;;;;;;;;;;;;;GAaG;AACU,QAAA,eAAe,GAAgB;IAC1C,SAAS,EAAE,yBAAyB;IACpC,KAAK,EAAE,yBAAyB;IAChC,WAAW,EACT,kIAAkI;IACpI,QAAQ,EAAE,iDAAiD;IAC3D,UAAU,EAAE;QACV,kBAAkB,EAAE;YAClB,WAAW,EAAE,oBAAoB;YACjC,KAAK,EAAE,SAAS;YAChB,WAAW,EACT,0GAA0G;YAC5G,MAAM,EAAE,CAAC,GAAG,SAAS,CAAC;YACtB,aAAa,EACX,gHAAgH;YAClH,eAAe,EAAE,iDAAiD;YAClE,QAAQ,EAAE;gBACR;oBACE,KAAK,EAAE,0BAA0B;oBACjC,MAAM,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE;iBACpF;aACF;SACF;QACD,iBAAiB,EAAE;YACjB,WAAW,EAAE,mBAAmB;YAChC,KAAK,EAAE,SAAS;YAChB,WAAW,EACT,sEAAsE;YACxE,MAAM,EAAE,CAAC,GAAG,SAAS,CAAC;YACtB,aAAa,EACX,kFAAkF;SACrF;QACD,gBAAgB,EAAE;YAChB,WAAW,EAAE,kBAAkB;YAC/B,KAAK,EAAE,SAAS;YAChB,WAAW,EAAE,gEAAgE;YAC7E,MAAM,EAAE,CAAC,GAAG,SAAS,CAAC;YACtB,aAAa,EAAE,mDAAmD;SACnE;QACD,gBAAgB,EAAE;YAChB,WAAW,EAAE,kBAAkB;YAC/B,KAAK,EAAE,SAAS;YAChB,WAAW,EAAE,6CAA6C;YAC1D,MAAM,EAAE,CAAC,GAAG,SAAS,CAAC;SACvB;KACF;CACF,CAAA","sourcesContent":["import { OperationParamSpec, ServiceSpec } from '../types'\n\n/**\n * PNU 5요소 파라미터 스펙 — HsPmsHubService(주택인허가) 오퍼레이션 공유.\n *\n * 건축인허가(ArchPmsHubService)와 동일 구성이나, **주택건설 사업계획승인**은 택지지구/\n * 정비사업처럼 개별 지번이 아닌 **블록(platGbCd=2) + 블록번호(bun)** 로 등록되는 경우가\n * 많다. 따라서 `platGbCd=2`(블록) 조회가 1급 시나리오다.\n */\nconst pnuParams: OperationParamSpec[] = [\n {\n name: 'sigunguCd',\n label: 'label.sigungu-cd',\n required: true,\n length: 5,\n description: '시군구코드 5자리 (법정동코드 10자리의 앞 5자리).',\n example: '11740'\n },\n {\n name: 'bjdongCd',\n label: 'label.bjdong-cd',\n required: true,\n length: 5,\n description: '법정동코드 5자리 (법정동코드 10자리의 뒤 5자리).',\n example: '10600'\n },\n {\n name: 'platGbCd',\n label: 'label.plat-gb-cd',\n default: '0',\n length: 1,\n description: '대지구분 1자리. `0` 대지 / `1` 산 / `2` 블록. 택지지구·정비사업 단지는 대개 `2`(블록).',\n example: '2',\n enum: [\n { value: '0', label: '대지' },\n { value: '1', label: '산' },\n { value: '2', label: '블록' }\n ]\n },\n {\n name: 'bun',\n label: 'label.bun',\n required: true,\n pad: 4,\n description: '본번. 블록 조회 시 **블록번호**. 자동 4자리 zero-pad (예: `1` → `0001`).',\n example: '1'\n },\n {\n name: 'ji',\n label: 'label.ji',\n default: '0',\n pad: 4,\n description: '부번. 없으면 `0`. 자동 4자리 zero-pad.',\n example: '0'\n }\n]\n\n/**\n * 국토교통부_건축HUB 주택인허가정보 서비스 (data.go.kr 데이터셋 15136560).\n *\n * 세움터(EAIS) 원천의 **주택건설 사업계획승인** 단계 정보를 조회한다. 건축인허가\n * (ArchPmsHubService)가 개별 필지 건축허가를 담는 것과 달리, 이 서비스는 **공동주택 단지/\n * 택지지구 사업** 을 블록 단위로 담아 — **지번이 없는 블록형 단지(예: LH/SH 택지지구\n * 공공주택)** 의 연면적·용적률·동/층수를 준공(건축물대장 생성) 이전에 확보하는 경로다.\n *\n * 조회는 건축인허가와 동일한 PNU 구성이나 **platGbCd=2(블록) + bun=블록번호** 가 핵심.\n * - sigunguCd(5) + bjdongCd(5) + platGbCd(1) + bun(4=블록번호) + ji(4)\n *\n * 응답: 기본개요에 연면적(totArea)·용적률(vlRat)·건폐율(bcRat)·대지면적(platArea) 등.\n * 한 사업/블록에 여러 승인(mgmPmsrgstPk)·여러 동이 존재할 수 있다.\n */\nexport const HsPmsHubService: ServiceSpec = {\n serviceId: '1613000/HsPmsHubService',\n label: '국토교통부_건축HUB 주택인허가정보 서비스',\n description:\n '세움터(EAIS) 원천의 주택건설 사업계획승인 정보를 조회한다. 기본개요·동별개요·층별개요·호별개요·대지위치 등 제공. 블록(platGbCd=2) 단위 단지 조회에 사용 — 지번 없는 택지지구/정비사업 단지의 연면적·용적률 확보.',\n homepage: 'https://www.data.go.kr/data/15136560/openapi.do',\n operations: {\n getHpBasisOulnInfo: {\n operationId: 'getHpBasisOulnInfo',\n label: '기본개요 조회',\n description:\n '사업계획승인 기본개요(대지면적·건축면적·건폐율·용적률·연면적·주용도·승인일 등) 를 조회. 한 사업/블록에 승인이 여러 건이면 복수 레코드로 내려온다 (mgmPmsrgstPk 로 구분).',\n params: [...pnuParams],\n responseNotes:\n '연면적 totArea / 용적률 vlRat / 건폐율 bcRat / 대지면적 platArea. 지상/지하 층수는 기본개요에 없고 동별개요/층별개요에 있음. 숫자 필드가 문자열/공백으로 올 수 있음.',\n externalDocsUrl: 'https://www.data.go.kr/data/15136560/openapi.do',\n examples: [\n {\n label: '서울 강동구 강일동 1블록 (고덕강일3단지)',\n params: { sigunguCd: '11740', bjdongCd: '10600', platGbCd: '2', bun: '1', ji: '0' }\n }\n ]\n },\n getHpDongOulnInfo: {\n operationId: 'getHpDongOulnInfo',\n label: '동별개요 조회',\n description:\n '동(棟) 별 개요(주부속구분·주용도·구조·동 연면적·세대수·지상/지하 층수 등) 를 조회. 주건축물/부속건축물 판별 기준.',\n params: [...pnuParams],\n responseNotes:\n 'mainAtchGbCd(0=주건축물,1=부속) 로 본건물 필터링. mgmPmsrgstPk·mgmDongOulnPk 로 기본개요/층별개요와 조인.'\n },\n getHpFlrOulnInfo: {\n operationId: 'getHpFlrOulnInfo',\n label: '층별개요 조회',\n description: '층별 주용도·구조·면적을 조회. flrGbCd(지상/지하) + flrNo 로 동별 지상/지하 층수 산출에 사용.',\n params: [...pnuParams],\n responseNotes: 'mgmDongOulnPk 로 특정 동의 층만 필터. 한 사업 다동이면 결과 건수가 많음.'\n },\n getHpPlatPlcInfo: {\n operationId: 'getHpPlatPlcInfo',\n label: '대지위치 조회',\n description: '사업의 대지위치(지번/도로명) 목록을 조회. 블록에 포함된 실제 필지 확인용.',\n params: [...pnuParams]\n }\n }\n}\n"]}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.HsPmsHubService = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* 주택인허가 도메인 서비스 스펙 묶음.
|
|
6
|
+
* 주택건설 사업계획승인(블록 단위) 정보 — 지번 없는 택지지구/정비사업 단지 대응.
|
|
7
|
+
*/
|
|
8
|
+
var hub_1 = require("./hub");
|
|
9
|
+
Object.defineProperty(exports, "HsPmsHubService", { enumerable: true, get: function () { return hub_1.HsPmsHubService; } });
|
|
10
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../server/engine/spec/housing-permit/index.ts"],"names":[],"mappings":";;;AAAA;;;GAGG;AACH,6BAAuC;AAA9B,sGAAA,eAAe,OAAA","sourcesContent":["/**\n * 주택인허가 도메인 서비스 스펙 묶음.\n * 주택건설 사업계획승인(블록 단위) 정보 — 지번 없는 택지지구/정비사업 단지 대응.\n */\nexport { HsPmsHubService } from './hub'\n"]}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { OperationSpec, ServiceSpec } from './types';
|
|
2
2
|
export * from './types';
|
|
3
3
|
export * from './building-ledger';
|
|
4
|
+
export * from './building-permit';
|
|
5
|
+
export * from './housing-permit';
|
|
4
6
|
export * from './weather';
|
|
5
7
|
export declare const SpecRegistry: {
|
|
6
8
|
/** 등록된 모든 서비스 스펙을 반환. */
|
|
@@ -5,9 +5,13 @@ const tslib_1 = require("tslib");
|
|
|
5
5
|
const types_1 = require("./types");
|
|
6
6
|
/* 도메인별 서비스 스펙 — 새 도메인 추가 시 폴더 추가 + 본 import 한 줄 */
|
|
7
7
|
const buildingLedger = tslib_1.__importStar(require("./building-ledger"));
|
|
8
|
+
const buildingPermit = tslib_1.__importStar(require("./building-permit"));
|
|
9
|
+
const housingPermit = tslib_1.__importStar(require("./housing-permit"));
|
|
8
10
|
const weather = tslib_1.__importStar(require("./weather"));
|
|
9
11
|
tslib_1.__exportStar(require("./types"), exports);
|
|
10
12
|
tslib_1.__exportStar(require("./building-ledger"), exports);
|
|
13
|
+
tslib_1.__exportStar(require("./building-permit"), exports);
|
|
14
|
+
tslib_1.__exportStar(require("./housing-permit"), exports);
|
|
11
15
|
tslib_1.__exportStar(require("./weather"), exports);
|
|
12
16
|
const services = new Map();
|
|
13
17
|
function registerService(spec) {
|
|
@@ -28,6 +32,8 @@ function isServiceSpec(value) {
|
|
|
28
32
|
typeof value.operations === 'object');
|
|
29
33
|
}
|
|
30
34
|
registerDomain(buildingLedger);
|
|
35
|
+
registerDomain(buildingPermit);
|
|
36
|
+
registerDomain(housingPermit);
|
|
31
37
|
registerDomain(weather);
|
|
32
38
|
exports.SpecRegistry = {
|
|
33
39
|
/** 등록된 모든 서비스 스펙을 반환. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../server/engine/spec/index.ts"],"names":[],"mappings":";;;;AAAA,mCAAuE;AAEvE,mDAAmD;AACnD,0EAAmD;AACnD,2DAAoC;AAEpC,kDAAuB;AACvB,4DAAiC;AACjC,oDAAyB;AAEzB,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAuB,CAAA;AAE/C,SAAS,eAAe,CAAC,IAAiB;IACxC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAA;AACpC,CAAC;AAED;qCACqC;AACrC,SAAS,cAAc,CAAC,MAA+B;IACrD,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;QAC1C,IAAI,aAAa,CAAC,KAAK,CAAC;YAAE,eAAe,CAAC,KAAK,CAAC,CAAA;IAClD,CAAC;AACH,CAAC;AACD,SAAS,aAAa,CAAC,KAAc;IACnC,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACd,OAAQ,KAAa,CAAC,SAAS,KAAK,QAAQ;QAC5C,OAAQ,KAAa,CAAC,UAAU,KAAK,QAAQ,CAC9C,CAAA;AACH,CAAC;AAED,cAAc,CAAC,cAAc,CAAC,CAAA;AAC9B,cAAc,CAAC,OAAO,CAAC,CAAA;AAEV,QAAA,YAAY,GAAG;IAC1B,yBAAyB;IACzB,YAAY;QACV,OAAO,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAA;IACtC,CAAC;IAED,0BAA0B;IAC1B,UAAU,CAAC,SAAiB;QAC1B,OAAO,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;IAChC,CAAC;IAED,uDAAuD;IACvD,OAAO,CAAC,YAAoB;QAC1B,MAAM,KAAK,GAAG,IAAA,yBAAiB,EAAC,YAAY,CAAC,CAAA;QAC7C,IAAI,CAAC,KAAK;YAAE,OAAO,SAAS,CAAA;QAC5B,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;QAC7C,IAAI,CAAC,OAAO;YAAE,OAAO,SAAS,CAAA;QAC9B,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,WAAW,CAAC,CAAA;QACvD,IAAI,CAAC,SAAS;YAAE,OAAO,SAAS,CAAA;QAChC,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,CAAA;IAC/B,CAAC;IAED,gCAAgC;IAChC,QAAQ,CAAC,IAAiB;QACxB,eAAe,CAAC,IAAI,CAAC,CAAA;IACvB,CAAC;CACF,CAAA","sourcesContent":["import { OperationSpec, ServiceSpec, parseOperationRef } from './types'\n\n/* 도메인별 서비스 스펙 — 새 도메인 추가 시 폴더 추가 + 본 import 한 줄 */\nimport * as buildingLedger from './building-ledger'\nimport * as weather from './weather'\n\nexport * from './types'\nexport * from './building-ledger'\nexport * from './weather'\n\nconst services = new Map<string, ServiceSpec>()\n\nfunction registerService(spec: ServiceSpec) {\n services.set(spec.serviceId, spec)\n}\n\n/* 도메인 모듈에서 export 된 모든 ServiceSpec 인스턴스를 자동 등록.\n 추가 도메인 import 만 늘리면 이하 코드는 그대로. */\nfunction registerDomain(domain: Record<string, unknown>) {\n for (const value of Object.values(domain)) {\n if (isServiceSpec(value)) registerService(value)\n }\n}\nfunction isServiceSpec(value: unknown): value is ServiceSpec {\n return (\n typeof value === 'object' &&\n value !== null &&\n typeof (value as any).serviceId === 'string' &&\n typeof (value as any).operations === 'object'\n )\n}\n\nregisterDomain(buildingLedger)\nregisterDomain(weather)\n\nexport const SpecRegistry = {\n /** 등록된 모든 서비스 스펙을 반환. */\n listServices(): ServiceSpec[] {\n return Array.from(services.values())\n },\n\n /** 서비스 ID 로 서비스 스펙 조회. */\n getService(serviceId: string): ServiceSpec | undefined {\n return services.get(serviceId)\n },\n\n /** `<serviceId>.<operationId>` 참조 문자열로 오퍼레이션 스펙 조회. */\n resolve(operationRef: string): { service: ServiceSpec; operation: OperationSpec } | undefined {\n const parts = parseOperationRef(operationRef)\n if (!parts) return undefined\n const service = services.get(parts.serviceId)\n if (!service) return undefined\n const operation = service.operations[parts.operationId]\n if (!operation) return undefined\n return { service, operation }\n },\n\n /** (확장용) 외부에서 서비스 스펙을 추가 등록. */\n register(spec: ServiceSpec) {\n registerService(spec)\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../server/engine/spec/index.ts"],"names":[],"mappings":";;;;AAAA,mCAAuE;AAEvE,mDAAmD;AACnD,0EAAmD;AACnD,0EAAmD;AACnD,wEAAiD;AACjD,2DAAoC;AAEpC,kDAAuB;AACvB,4DAAiC;AACjC,4DAAiC;AACjC,2DAAgC;AAChC,oDAAyB;AAEzB,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAuB,CAAA;AAE/C,SAAS,eAAe,CAAC,IAAiB;IACxC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAA;AACpC,CAAC;AAED;qCACqC;AACrC,SAAS,cAAc,CAAC,MAA+B;IACrD,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;QAC1C,IAAI,aAAa,CAAC,KAAK,CAAC;YAAE,eAAe,CAAC,KAAK,CAAC,CAAA;IAClD,CAAC;AACH,CAAC;AACD,SAAS,aAAa,CAAC,KAAc;IACnC,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACd,OAAQ,KAAa,CAAC,SAAS,KAAK,QAAQ;QAC5C,OAAQ,KAAa,CAAC,UAAU,KAAK,QAAQ,CAC9C,CAAA;AACH,CAAC;AAED,cAAc,CAAC,cAAc,CAAC,CAAA;AAC9B,cAAc,CAAC,cAAc,CAAC,CAAA;AAC9B,cAAc,CAAC,aAAa,CAAC,CAAA;AAC7B,cAAc,CAAC,OAAO,CAAC,CAAA;AAEV,QAAA,YAAY,GAAG;IAC1B,yBAAyB;IACzB,YAAY;QACV,OAAO,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAA;IACtC,CAAC;IAED,0BAA0B;IAC1B,UAAU,CAAC,SAAiB;QAC1B,OAAO,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;IAChC,CAAC;IAED,uDAAuD;IACvD,OAAO,CAAC,YAAoB;QAC1B,MAAM,KAAK,GAAG,IAAA,yBAAiB,EAAC,YAAY,CAAC,CAAA;QAC7C,IAAI,CAAC,KAAK;YAAE,OAAO,SAAS,CAAA;QAC5B,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;QAC7C,IAAI,CAAC,OAAO;YAAE,OAAO,SAAS,CAAA;QAC9B,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,WAAW,CAAC,CAAA;QACvD,IAAI,CAAC,SAAS;YAAE,OAAO,SAAS,CAAA;QAChC,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,CAAA;IAC/B,CAAC;IAED,gCAAgC;IAChC,QAAQ,CAAC,IAAiB;QACxB,eAAe,CAAC,IAAI,CAAC,CAAA;IACvB,CAAC;CACF,CAAA","sourcesContent":["import { OperationSpec, ServiceSpec, parseOperationRef } from './types'\n\n/* 도메인별 서비스 스펙 — 새 도메인 추가 시 폴더 추가 + 본 import 한 줄 */\nimport * as buildingLedger from './building-ledger'\nimport * as buildingPermit from './building-permit'\nimport * as housingPermit from './housing-permit'\nimport * as weather from './weather'\n\nexport * from './types'\nexport * from './building-ledger'\nexport * from './building-permit'\nexport * from './housing-permit'\nexport * from './weather'\n\nconst services = new Map<string, ServiceSpec>()\n\nfunction registerService(spec: ServiceSpec) {\n services.set(spec.serviceId, spec)\n}\n\n/* 도메인 모듈에서 export 된 모든 ServiceSpec 인스턴스를 자동 등록.\n 추가 도메인 import 만 늘리면 이하 코드는 그대로. */\nfunction registerDomain(domain: Record<string, unknown>) {\n for (const value of Object.values(domain)) {\n if (isServiceSpec(value)) registerService(value)\n }\n}\nfunction isServiceSpec(value: unknown): value is ServiceSpec {\n return (\n typeof value === 'object' &&\n value !== null &&\n typeof (value as any).serviceId === 'string' &&\n typeof (value as any).operations === 'object'\n )\n}\n\nregisterDomain(buildingLedger)\nregisterDomain(buildingPermit)\nregisterDomain(housingPermit)\nregisterDomain(weather)\n\nexport const SpecRegistry = {\n /** 등록된 모든 서비스 스펙을 반환. */\n listServices(): ServiceSpec[] {\n return Array.from(services.values())\n },\n\n /** 서비스 ID 로 서비스 스펙 조회. */\n getService(serviceId: string): ServiceSpec | undefined {\n return services.get(serviceId)\n },\n\n /** `<serviceId>.<operationId>` 참조 문자열로 오퍼레이션 스펙 조회. */\n resolve(operationRef: string): { service: ServiceSpec; operation: OperationSpec } | undefined {\n const parts = parseOperationRef(operationRef)\n if (!parts) return undefined\n const service = services.get(parts.serviceId)\n if (!service) return undefined\n const operation = service.operations[parts.operationId]\n if (!operation) return undefined\n return { service, operation }\n },\n\n /** (확장용) 외부에서 서비스 스펙을 추가 등록. */\n register(spec: ServiceSpec) {\n registerService(spec)\n }\n}\n"]}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { Context } from '@things-factory/integration-base';
|
|
2
|
+
/**
|
|
3
|
+
* 건축물 정보 통합 조회 (`data-go-kr-building-info`).
|
|
4
|
+
*
|
|
5
|
+
* **건축물대장(완공) 우선 → 없으면 건축인허가(시공 전) 폴백** 하는 단일 진입점.
|
|
6
|
+
*
|
|
7
|
+
* - 완공 건물: 건축물대장(`data-go-kr-building-summary`)에 연면적·용적률·층수·사용승인
|
|
8
|
+
* 등이 정확히 있음 → 우선 사용 (source='ledger').
|
|
9
|
+
* - 시공 중 현장: 대장이 아직 없음(0건) → 건축인허가(`data-go-kr-building-permit`)로
|
|
10
|
+
* 허가/착공 단계 개요 확보 (source='permit', 가설만 있으면 provisionalOnly=true).
|
|
11
|
+
* - 둘 다 없음: 빈 결과(found=false) — 시나리오 HALT 방지.
|
|
12
|
+
*
|
|
13
|
+
* 출력 스키마는 두 태스크와 동일(area/vlRat/층수/…)이라 시나리오 result 스크립트를
|
|
14
|
+
* 바꿀 필요가 없다. 시나리오 fetch step 의 task 를 `data-go-kr-building-info` 로만
|
|
15
|
+
* 바꾸면 완공·시공중 모두 커버된다.
|
|
16
|
+
*/
|
|
17
|
+
declare function BuildingInfoTask(step: any, context: Context): Promise<{
|
|
18
|
+
data: any;
|
|
19
|
+
}>;
|
|
20
|
+
declare namespace BuildingInfoTask {
|
|
21
|
+
var parameterSpec: {
|
|
22
|
+
type: string;
|
|
23
|
+
name: string;
|
|
24
|
+
label: string;
|
|
25
|
+
placeholder: string;
|
|
26
|
+
description: string;
|
|
27
|
+
}[];
|
|
28
|
+
var help: string;
|
|
29
|
+
}
|
|
30
|
+
export default BuildingInfoTask;
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const tslib_1 = require("tslib");
|
|
4
|
+
const integration_base_1 = require("@things-factory/integration-base");
|
|
5
|
+
const summary_1 = tslib_1.__importDefault(require("./building-ledger/summary"));
|
|
6
|
+
const summary_2 = tslib_1.__importDefault(require("./building-permit/summary"));
|
|
7
|
+
/**
|
|
8
|
+
* 건축물 정보 통합 조회 (`data-go-kr-building-info`).
|
|
9
|
+
*
|
|
10
|
+
* **건축물대장(완공) 우선 → 없으면 건축인허가(시공 전) 폴백** 하는 단일 진입점.
|
|
11
|
+
*
|
|
12
|
+
* - 완공 건물: 건축물대장(`data-go-kr-building-summary`)에 연면적·용적률·층수·사용승인
|
|
13
|
+
* 등이 정확히 있음 → 우선 사용 (source='ledger').
|
|
14
|
+
* - 시공 중 현장: 대장이 아직 없음(0건) → 건축인허가(`data-go-kr-building-permit`)로
|
|
15
|
+
* 허가/착공 단계 개요 확보 (source='permit', 가설만 있으면 provisionalOnly=true).
|
|
16
|
+
* - 둘 다 없음: 빈 결과(found=false) — 시나리오 HALT 방지.
|
|
17
|
+
*
|
|
18
|
+
* 출력 스키마는 두 태스크와 동일(area/vlRat/층수/…)이라 시나리오 result 스크립트를
|
|
19
|
+
* 바꿀 필요가 없다. 시나리오 fetch step 의 task 를 `data-go-kr-building-info` 로만
|
|
20
|
+
* 바꾸면 완공·시공중 모두 커버된다.
|
|
21
|
+
*/
|
|
22
|
+
async function BuildingInfoTask(step, context) {
|
|
23
|
+
const { logger } = context;
|
|
24
|
+
// 1) 건축물대장(완공) 우선. building-summary 는 0건 시 throw → catch 해서 폴백.
|
|
25
|
+
try {
|
|
26
|
+
const ledger = await (0, summary_1.default)(step, context);
|
|
27
|
+
if (ledger?.data) {
|
|
28
|
+
logger?.info?.('[data-go-kr] building-info: 건축물대장(완공)에서 확보 (source=ledger)');
|
|
29
|
+
return { data: { ...ledger.data, source: 'ledger', found: true } };
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
catch (err) {
|
|
33
|
+
logger?.warn?.(`[data-go-kr] building-info: 대장 미확보 → 인허가 폴백 (${err.message})`);
|
|
34
|
+
}
|
|
35
|
+
// 2) 건축인허가(시공 전) 폴백. permit 태스크는 자체 HALT 방지(빈 결과/found=false) 포함.
|
|
36
|
+
return await (0, summary_2.default)(step, context);
|
|
37
|
+
}
|
|
38
|
+
// PNU 파라미터 스펙은 두 하위 태스크와 동일하므로 그대로 재사용.
|
|
39
|
+
BuildingInfoTask.parameterSpec = summary_2.default.parameterSpec;
|
|
40
|
+
BuildingInfoTask.help = 'integration/task/building-info';
|
|
41
|
+
integration_base_1.TaskRegistry.registerTaskHandler('data-go-kr-building-info', BuildingInfoTask);
|
|
42
|
+
exports.default = BuildingInfoTask;
|
|
43
|
+
//# sourceMappingURL=building-info.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"building-info.js","sourceRoot":"","sources":["../../../server/engine/task/building-info.ts"],"names":[],"mappings":";;;AAAA,uEAAwE;AAExE,gFAA2D;AAC3D,gFAA0D;AAE1D;;;;;;;;;;;;;;GAcG;AACH,KAAK,UAAU,gBAAgB,CAAC,IAAI,EAAE,OAAgB;IACpD,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAA;IAE1B,gEAAgE;IAChE,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,IAAA,iBAAmB,EAAC,IAAI,EAAE,OAAO,CAAC,CAAA;QACvD,IAAI,MAAM,EAAE,IAAI,EAAE,CAAC;YACjB,MAAM,EAAE,IAAI,EAAE,CAAC,4DAA4D,CAAC,CAAA;YAC5E,OAAO,EAAE,IAAI,EAAE,EAAE,GAAG,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CAAA;QACpE,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,EAAE,IAAI,EAAE,CAAC,gDAAiD,GAAa,CAAC,OAAO,GAAG,CAAC,CAAA;IAC3F,CAAC;IAED,kEAAkE;IAClE,OAAO,MAAM,IAAA,iBAAkB,EAAC,IAAI,EAAE,OAAO,CAAC,CAAA;AAChD,CAAC;AAED,wCAAwC;AACxC,gBAAgB,CAAC,aAAa,GAAG,iBAAkB,CAAC,aAAa,CAAA;AACjE,gBAAgB,CAAC,IAAI,GAAG,gCAAgC,CAAA;AAExD,+BAAY,CAAC,mBAAmB,CAAC,0BAA0B,EAAE,gBAAgB,CAAC,CAAA;AAE9E,kBAAe,gBAAgB,CAAA","sourcesContent":["import { Context, TaskRegistry } from '@things-factory/integration-base'\n\nimport BuildingSummaryTask from './building-ledger/summary'\nimport BuildingPermitTask from './building-permit/summary'\n\n/**\n * 건축물 정보 통합 조회 (`data-go-kr-building-info`).\n *\n * **건축물대장(완공) 우선 → 없으면 건축인허가(시공 전) 폴백** 하는 단일 진입점.\n *\n * - 완공 건물: 건축물대장(`data-go-kr-building-summary`)에 연면적·용적률·층수·사용승인\n * 등이 정확히 있음 → 우선 사용 (source='ledger').\n * - 시공 중 현장: 대장이 아직 없음(0건) → 건축인허가(`data-go-kr-building-permit`)로\n * 허가/착공 단계 개요 확보 (source='permit', 가설만 있으면 provisionalOnly=true).\n * - 둘 다 없음: 빈 결과(found=false) — 시나리오 HALT 방지.\n *\n * 출력 스키마는 두 태스크와 동일(area/vlRat/층수/…)이라 시나리오 result 스크립트를\n * 바꿀 필요가 없다. 시나리오 fetch step 의 task 를 `data-go-kr-building-info` 로만\n * 바꾸면 완공·시공중 모두 커버된다.\n */\nasync function BuildingInfoTask(step, context: Context): Promise<{ data: any }> {\n const { logger } = context\n\n // 1) 건축물대장(완공) 우선. building-summary 는 0건 시 throw → catch 해서 폴백.\n try {\n const ledger = await BuildingSummaryTask(step, context)\n if (ledger?.data) {\n logger?.info?.('[data-go-kr] building-info: 건축물대장(완공)에서 확보 (source=ledger)')\n return { data: { ...ledger.data, source: 'ledger', found: true } }\n }\n } catch (err) {\n logger?.warn?.(`[data-go-kr] building-info: 대장 미확보 → 인허가 폴백 (${(err as Error).message})`)\n }\n\n // 2) 건축인허가(시공 전) 폴백. permit 태스크는 자체 HALT 방지(빈 결과/found=false) 포함.\n return await BuildingPermitTask(step, context)\n}\n\n// PNU 파라미터 스펙은 두 하위 태스크와 동일하므로 그대로 재사용.\nBuildingInfoTask.parameterSpec = BuildingPermitTask.parameterSpec\nBuildingInfoTask.help = 'integration/task/building-info'\n\nTaskRegistry.registerTaskHandler('data-go-kr-building-info', BuildingInfoTask)\n\nexport default BuildingInfoTask\n"]}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
/**
|
|
4
|
+
* 건축인허가 도메인 전용 태스크 그룹.
|
|
5
|
+
*
|
|
6
|
+
* 건축물대장(building-ledger)이 완공 건물을 다루는 것과 달리, 준공 전(시공 중) 현장의
|
|
7
|
+
* 허가 개요를 조회한다. 공통 경로(`data-go-kr-call` + SpecRegistry)로 커버 어려운
|
|
8
|
+
* 도메인 특화 로직(3종 오퍼레이션 조합 + 가설건축물 필터)이 필요해 전용 태스크로 둔다.
|
|
9
|
+
*/
|
|
10
|
+
require("./summary");
|
|
11
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../server/engine/task/building-permit/index.ts"],"names":[],"mappings":";;AAAA;;;;;;GAMG;AACH,qBAAkB","sourcesContent":["/**\n * 건축인허가 도메인 전용 태스크 그룹.\n *\n * 건축물대장(building-ledger)이 완공 건물을 다루는 것과 달리, 준공 전(시공 중) 현장의\n * 허가 개요를 조회한다. 공통 경로(`data-go-kr-call` + SpecRegistry)로 커버 어려운\n * 도메인 특화 로직(3종 오퍼레이션 조합 + 가설건축물 필터)이 필요해 전용 태스크로 둔다.\n */\nimport './summary'\n"]}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { Context } from '@things-factory/integration-base';
|
|
2
|
+
/**
|
|
3
|
+
* 건축인허가 요약 태스크 (`data-go-kr-building-permit`).
|
|
4
|
+
*
|
|
5
|
+
* 건축물대장(`data-go-kr-building-summary`)이 **완공 건물**만 담는 것과 달리, 이 태스크는
|
|
6
|
+
* **준공 전(시공 중)** 현장을 건축HUB 건축인허가정보 서비스(ArchPmsHubService)로 조회해
|
|
7
|
+
* 건축물대장 요약과 **동일한 스키마**(totArea/vlRat/grndFlrCnt/… )로 돌려준다.
|
|
8
|
+
* → 시나리오 step2 매핑 스크립트를 바꾸지 않고 step1 태스크만 교체/병행 가능.
|
|
9
|
+
*
|
|
10
|
+
* 내부 흐름:
|
|
11
|
+
* 1) getApBasisOulnInfo(기본개요) + getApDongOulnInfo(동별개요) + getApFlrOulnInfo(층별개요)
|
|
12
|
+
* 3종을 병렬 호출.
|
|
13
|
+
* 2) 동별개요에서 **본건물** 선택: 가설건축물(mainPurpsCdNm='가설건축물') 제외 + 주건축물
|
|
14
|
+
* (mainAtchGbCd='0') 우선 + 연면적(totArea) 최대. 본건물이 없으면(=가설만 존재)
|
|
15
|
+
* 가장 큰 가설 row 로 폴백하고 `provisionalOnly=true` 로 표시.
|
|
16
|
+
* 3) 선택 동의 mgmPmsrgstPk 로 기본개요(대지면적·건폐율·용적률·허가일) 를 조인.
|
|
17
|
+
* 4) 지상/지하 층수는 동별개요 값 우선, 없으면 층별개요(mgmDongOulnPk 매칭) 에서 산출.
|
|
18
|
+
*
|
|
19
|
+
* 출력 (`data`) — building-summary 와 호환:
|
|
20
|
+
* { totArea, platArea, archArea, bcRat, vlRat, grndFlrCnt, ugrndFlrCnt,
|
|
21
|
+
* strctCd, strctCdNm, mainPurpsCd, mainPurpsCdNm, hhldCnt, fmlyCnt, hoCnt,
|
|
22
|
+
* mainBldCnt, atchBldCnt, bldNm, useAprDay, pmsDay, stcnsDay,
|
|
23
|
+
* source:'permit', provisionalOnly, raw }
|
|
24
|
+
*/
|
|
25
|
+
export interface BuildingPermitSummary {
|
|
26
|
+
totArea: number | null;
|
|
27
|
+
platArea: number | null;
|
|
28
|
+
archArea: number | null;
|
|
29
|
+
bcRat: number | null;
|
|
30
|
+
vlRat: number | null;
|
|
31
|
+
grndFlrCnt: number | null;
|
|
32
|
+
ugrndFlrCnt: number | null;
|
|
33
|
+
strctCd: string | null;
|
|
34
|
+
strctCdNm: string | null;
|
|
35
|
+
mainPurpsCd: string | null;
|
|
36
|
+
mainPurpsCdNm: string | null;
|
|
37
|
+
hhldCnt: number | null;
|
|
38
|
+
fmlyCnt: number | null;
|
|
39
|
+
hoCnt: number | null;
|
|
40
|
+
mainBldCnt: number | null;
|
|
41
|
+
atchBldCnt: number | null;
|
|
42
|
+
bldNm: string | null;
|
|
43
|
+
/** 사용승인일 (인허가 단계에선 대개 공백) */
|
|
44
|
+
useAprDay: string | null;
|
|
45
|
+
/** 건축허가일 YYYYMMDD */
|
|
46
|
+
pmsDay: string | null;
|
|
47
|
+
/** 착공일(실착공→예정 순) YYYYMMDD */
|
|
48
|
+
stcnsDay: string | null;
|
|
49
|
+
source: 'permit';
|
|
50
|
+
/** 본건물 없이 가설건축물만 등록된 필지면 true (조회값은 가설 기준) */
|
|
51
|
+
provisionalOnly: boolean;
|
|
52
|
+
/** 인허가 데이터를 실제로 찾았는지. false 면 빈 결과(HALT 방지 폴백). */
|
|
53
|
+
found: boolean;
|
|
54
|
+
raw: {
|
|
55
|
+
basis: any;
|
|
56
|
+
dong: any;
|
|
57
|
+
} | null;
|
|
58
|
+
}
|
|
59
|
+
declare function BuildingPermitTask(step: any, context: Context): Promise<{
|
|
60
|
+
data: BuildingPermitSummary;
|
|
61
|
+
}>;
|
|
62
|
+
declare namespace BuildingPermitTask {
|
|
63
|
+
var parameterSpec: {
|
|
64
|
+
type: string;
|
|
65
|
+
name: string;
|
|
66
|
+
label: string;
|
|
67
|
+
placeholder: string;
|
|
68
|
+
description: string;
|
|
69
|
+
}[];
|
|
70
|
+
var help: string;
|
|
71
|
+
}
|
|
72
|
+
export default BuildingPermitTask;
|