@dssp/dkpi 1.0.0-alpha.9 β 1.0.0-alpha.90
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/KPI-STATISTICS-SERVICE.md +233 -0
- package/_index.html +4 -9
- package/assets/favicon.ico +0 -0
- package/assets/helps/index.md +1 -1
- package/assets/images/project-image.png +0 -0
- package/assets/manifest/apple-1024.png +0 -0
- package/assets/manifest/apple-120.png +0 -0
- package/assets/manifest/apple-152.png +0 -0
- package/assets/manifest/apple-167.png +0 -0
- package/assets/manifest/apple-180.png +0 -0
- package/assets/manifest/apple-touch-icon.png +0 -0
- package/assets/manifest/badge-128x128.png +0 -0
- package/assets/manifest/chrome-splashscreen-icon-384x384.png +0 -0
- package/assets/manifest/chrome-touch-icon-192x192.png +0 -0
- package/assets/manifest/icon-128x128.png +0 -0
- package/assets/manifest/icon-192x192.png +0 -0
- package/assets/manifest/icon-512x512.png +0 -0
- package/assets/manifest/icon-72x72.png +0 -0
- package/assets/manifest/icon-96x96.png +0 -0
- package/assets/manifest/image-metaog.png +0 -0
- package/assets/manifest/maskable_icon.png +0 -0
- package/assets/manifest/ms-icon-144x144.png +0 -0
- package/assets/manifest/ms-touch-icon-144x144-precomposed.png +0 -0
- package/assets/manifest.json +2 -2
- package/assets/videos/intro.mp4 +0 -0
- package/config/config.development.js +2 -1
- package/config/config.production.js +2 -1
- package/dist-client/bootstrap.d.ts +1 -0
- package/dist-client/bootstrap.js +75 -4
- package/dist-client/bootstrap.js.map +1 -1
- package/dist-client/components/kpi-2d-lookup-chart.d.ts +50 -0
- package/dist-client/components/kpi-2d-lookup-chart.js +263 -0
- package/dist-client/components/kpi-2d-lookup-chart.js.map +1 -0
- package/dist-client/components/kpi-boxplot-chart.d.ts +31 -0
- package/dist-client/components/kpi-boxplot-chart.js +306 -0
- package/dist-client/components/kpi-boxplot-chart.js.map +1 -0
- package/dist-client/components/kpi-lookup-chart.d.ts +58 -0
- package/dist-client/components/kpi-lookup-chart.js +459 -0
- package/dist-client/components/kpi-lookup-chart.js.map +1 -0
- package/dist-client/components/kpi-mini-trend-chart.d.ts +14 -0
- package/dist-client/components/kpi-mini-trend-chart.js +180 -0
- package/dist-client/components/kpi-mini-trend-chart.js.map +1 -0
- package/dist-client/components/kpi-radar-chart.d.ts +17 -0
- package/dist-client/components/kpi-radar-chart.js +259 -0
- package/dist-client/components/kpi-radar-chart.js.map +1 -0
- package/dist-client/components/kpi-single-boxplot-chart.d.ts +36 -0
- package/dist-client/components/kpi-single-boxplot-chart.js +417 -0
- package/dist-client/components/kpi-single-boxplot-chart.js.map +1 -0
- package/dist-client/components/kpi-step-lookup-chart.d.ts +33 -0
- package/dist-client/components/kpi-step-lookup-chart.js +181 -0
- package/dist-client/components/kpi-step-lookup-chart.js.map +1 -0
- package/dist-client/components/kpi-trend-chart.d.ts +25 -0
- package/dist-client/components/kpi-trend-chart.js +241 -0
- package/dist-client/components/kpi-trend-chart.js.map +1 -0
- package/dist-client/components/sv-pagenation-control.d.ts +18 -0
- package/dist-client/components/sv-pagenation-control.js +142 -0
- package/dist-client/components/sv-pagenation-control.js.map +1 -0
- package/dist-client/entries/auth/checkin.d.ts +38 -0
- package/dist-client/entries/auth/checkin.js +551 -0
- package/dist-client/entries/auth/checkin.js.map +1 -0
- package/dist-client/google-map/common-google-map.d.ts +35 -0
- package/dist-client/google-map/common-google-map.js +349 -0
- package/dist-client/google-map/common-google-map.js.map +1 -0
- package/dist-client/google-map/google-map-loader.d.ts +6 -0
- package/dist-client/google-map/google-map-loader.js +23 -0
- package/dist-client/google-map/google-map-loader.js.map +1 -0
- package/dist-client/icons/menu-icons.d.ts +6 -0
- package/dist-client/icons/menu-icons.js +42 -0
- package/dist-client/icons/menu-icons.js.map +1 -1
- package/dist-client/pages/component/project-update-header.d.ts +1 -0
- package/dist-client/pages/component/project-update-header.js +127 -0
- package/dist-client/pages/component/project-update-header.js.map +1 -0
- package/dist-client/pages/kpi-admin/dssp-kpi-list-page.d.ts +22 -0
- package/dist-client/pages/kpi-admin/dssp-kpi-list-page.js +57 -0
- package/dist-client/pages/kpi-admin/dssp-kpi-list-page.js.map +1 -0
- package/dist-client/pages/kpi-admin/dssp-kpi-overview.d.ts +47 -0
- package/dist-client/pages/kpi-admin/dssp-kpi-overview.js +393 -0
- package/dist-client/pages/kpi-admin/dssp-kpi-overview.js.map +1 -0
- package/dist-client/pages/kpi-admin/kpi-grade-2d-editor.d.ts +20 -0
- package/dist-client/pages/kpi-admin/kpi-grade-2d-editor.js +445 -0
- package/dist-client/pages/kpi-admin/kpi-grade-2d-editor.js.map +1 -0
- package/dist-client/pages/kpi-admin/kpi-system-guide.d.ts +18 -0
- package/dist-client/pages/kpi-admin/kpi-system-guide.js +696 -0
- package/dist-client/pages/kpi-admin/kpi-system-guide.js.map +1 -0
- package/dist-client/pages/kpi-dashboard/cards/kpi-level1-card.d.ts +18 -0
- package/dist-client/pages/kpi-dashboard/cards/kpi-level1-card.js +259 -0
- package/dist-client/pages/kpi-dashboard/cards/kpi-level1-card.js.map +1 -0
- package/dist-client/pages/kpi-dashboard/cards/kpi-level2-comparison.d.ts +22 -0
- package/dist-client/pages/kpi-dashboard/cards/kpi-level2-comparison.js +346 -0
- package/dist-client/pages/kpi-dashboard/cards/kpi-level2-comparison.js.map +1 -0
- package/dist-client/pages/kpi-dashboard/cards/kpi-level3-comparison.d.ts +26 -0
- package/dist-client/pages/kpi-dashboard/cards/kpi-level3-comparison.js +433 -0
- package/dist-client/pages/kpi-dashboard/cards/kpi-level3-comparison.js.map +1 -0
- package/dist-client/pages/kpi-dashboard/components/kpi-chart-toggle.d.ts +8 -0
- package/dist-client/pages/kpi-dashboard/components/kpi-chart-toggle.js +78 -0
- package/dist-client/pages/kpi-dashboard/components/kpi-chart-toggle.js.map +1 -0
- package/dist-client/pages/kpi-dashboard/components/kpi-left-panel.d.ts +46 -0
- package/dist-client/pages/kpi-dashboard/components/kpi-left-panel.js +937 -0
- package/dist-client/pages/kpi-dashboard/components/kpi-left-panel.js.map +1 -0
- package/dist-client/pages/kpi-dashboard/components/kpi-map-panel.d.ts +33 -0
- package/dist-client/pages/kpi-dashboard/components/kpi-map-panel.js +231 -0
- package/dist-client/pages/kpi-dashboard/components/kpi-map-panel.js.map +1 -0
- package/dist-client/pages/kpi-dashboard/components/kpi-region-popup.d.ts +35 -0
- package/dist-client/pages/kpi-dashboard/components/kpi-region-popup.js +632 -0
- package/dist-client/pages/kpi-dashboard/components/kpi-region-popup.js.map +1 -0
- package/dist-client/pages/kpi-dashboard/kpi-alert-panel.d.ts +18 -0
- package/dist-client/pages/kpi-dashboard/kpi-alert-panel.js +131 -0
- package/dist-client/pages/kpi-dashboard/kpi-alert-panel.js.map +1 -0
- package/dist-client/pages/kpi-dashboard/kpi-dashboard-map.d.ts +52 -0
- package/dist-client/pages/kpi-dashboard/kpi-dashboard-map.js +842 -0
- package/dist-client/pages/kpi-dashboard/kpi-dashboard-map.js.map +1 -0
- package/dist-client/pages/kpi-dashboard/kpi-dashboard.d.ts +63 -0
- package/dist-client/pages/kpi-dashboard/kpi-dashboard.js +1097 -0
- package/dist-client/pages/kpi-dashboard/kpi-dashboard.js.map +1 -0
- package/dist-client/pages/kpi-dashboard/kpi-grade-visualization.d.ts +12 -0
- package/dist-client/pages/kpi-dashboard/kpi-grade-visualization.js +82 -0
- package/dist-client/pages/kpi-dashboard/kpi-grade-visualization.js.map +1 -0
- package/dist-client/pages/kpi-dashboard/kpi-history-viewer.d.ts +11 -0
- package/dist-client/pages/kpi-dashboard/kpi-history-viewer.js +65 -0
- package/dist-client/pages/kpi-dashboard/kpi-history-viewer.js.map +1 -0
- package/dist-client/pages/kpi-dashboard/kpi-list-summary.d.ts +13 -0
- package/dist-client/pages/kpi-dashboard/kpi-list-summary.js +115 -0
- package/dist-client/pages/kpi-dashboard/kpi-list-summary.js.map +1 -0
- package/dist-client/pages/kpi-dashboard/kpi-performance-summary.d.ts +15 -0
- package/dist-client/pages/kpi-dashboard/kpi-performance-summary.js +147 -0
- package/dist-client/pages/kpi-dashboard/kpi-performance-summary.js.map +1 -0
- package/dist-client/pages/kpi-dashboard/kpi-value-entry.d.ts +7 -0
- package/dist-client/pages/kpi-dashboard/kpi-value-entry.js +86 -0
- package/dist-client/pages/kpi-dashboard/kpi-value-entry.js.map +1 -0
- package/dist-client/pages/kpi-metric-value/kpi-metric-value-editor-page.d.ts +57 -0
- package/dist-client/pages/kpi-metric-value/kpi-metric-value-editor-page.js +719 -0
- package/dist-client/pages/kpi-metric-value/kpi-metric-value-editor-page.js.map +1 -0
- package/dist-client/pages/kpi-metric-value/kpi-metric-value-importer.d.ts +23 -0
- package/dist-client/pages/kpi-metric-value/kpi-metric-value-importer.js +76 -0
- package/dist-client/pages/kpi-metric-value/kpi-metric-value-importer.js.map +1 -0
- package/dist-client/pages/kpi-metric-value/kpi-metric-value-list-page.d.ts +68 -0
- package/dist-client/pages/kpi-metric-value/kpi-metric-value-list-page.js +394 -0
- package/dist-client/pages/kpi-metric-value/kpi-metric-value-list-page.js.map +1 -0
- package/dist-client/pages/kpi-metric-value/kpi-metric-value-manual-entry-form.d.ts +12 -0
- package/dist-client/pages/kpi-metric-value/kpi-metric-value-manual-entry-form.js +174 -0
- package/dist-client/pages/kpi-metric-value/kpi-metric-value-manual-entry-form.js.map +1 -0
- package/dist-client/pages/kpi-metric-value/kpi-metric-value-manual-entry-page.d.ts +40 -0
- package/dist-client/pages/kpi-metric-value/kpi-metric-value-manual-entry-page.js +190 -0
- package/dist-client/pages/kpi-metric-value/kpi-metric-value-manual-entry-page.js.map +1 -0
- package/dist-client/pages/kpi-value/kpi-value-importer.d.ts +23 -0
- package/dist-client/pages/kpi-value/kpi-value-importer.js +93 -0
- package/dist-client/pages/kpi-value/kpi-value-importer.js.map +1 -0
- package/dist-client/pages/kpi-value/kpi-value-list-page.d.ts +71 -0
- package/dist-client/pages/kpi-value/kpi-value-list-page.js +454 -0
- package/dist-client/pages/kpi-value/kpi-value-list-page.js.map +1 -0
- package/dist-client/pages/project-complete-tabs/pc-tab1-plan.d.ts +66 -0
- package/dist-client/pages/project-complete-tabs/pc-tab1-plan.js +775 -0
- package/dist-client/pages/project-complete-tabs/pc-tab1-plan.js.map +1 -0
- package/dist-client/pages/project-complete-tabs/pc-tab2-rating.d.ts +16 -0
- package/dist-client/pages/project-complete-tabs/pc-tab2-rating.js +337 -0
- package/dist-client/pages/project-complete-tabs/pc-tab2-rating.js.map +1 -0
- package/dist-client/pages/project-complete-tabs/pc-tab3-upload.d.ts +21 -0
- package/dist-client/pages/project-complete-tabs/pc-tab3-upload.js +335 -0
- package/dist-client/pages/project-complete-tabs/pc-tab3-upload.js.map +1 -0
- package/dist-client/pages/project-complete-tabs/pc-tab4-monthly.d.ts +42 -0
- package/dist-client/pages/project-complete-tabs/pc-tab4-monthly.js +635 -0
- package/dist-client/pages/project-complete-tabs/pc-tab4-monthly.js.map +1 -0
- package/dist-client/pages/sv-project-complete.d.ts +25 -0
- package/dist-client/pages/sv-project-complete.js +259 -0
- package/dist-client/pages/sv-project-complete.js.map +1 -0
- package/dist-client/pages/sv-project-completed-list.d.ts +27 -0
- package/dist-client/pages/sv-project-completed-list.js +416 -0
- package/dist-client/pages/sv-project-completed-list.js.map +1 -0
- package/dist-client/pages/sv-project-detail.d.ts +70 -0
- package/dist-client/pages/sv-project-detail.js +1486 -0
- package/dist-client/pages/sv-project-detail.js.map +1 -0
- package/dist-client/pages/sv-project-list.d.ts +175 -0
- package/dist-client/pages/sv-project-list.js +581 -0
- package/dist-client/pages/sv-project-list.js.map +1 -0
- package/dist-client/pages/sv-project-update.d.ts +91 -0
- package/dist-client/pages/sv-project-update.js +1151 -0
- package/dist-client/pages/sv-project-update.js.map +1 -0
- package/dist-client/pages/sv-user-management.d.ts +1 -0
- package/dist-client/pages/sv-user-management.js +5 -0
- package/dist-client/pages/sv-user-management.js.map +1 -1
- package/dist-client/route.d.ts +1 -1
- package/dist-client/route.js +50 -2
- package/dist-client/route.js.map +1 -1
- package/dist-client/shared/complete-api.d.ts +37 -0
- package/dist-client/shared/complete-api.js +227 -0
- package/dist-client/shared/complete-api.js.map +1 -0
- package/dist-client/shared/func.d.ts +2 -0
- package/dist-client/shared/func.js +22 -0
- package/dist-client/shared/func.js.map +1 -0
- package/dist-client/shared/geo-group-mapping.d.ts +25 -0
- package/dist-client/shared/geo-group-mapping.js +189 -0
- package/dist-client/shared/geo-group-mapping.js.map +1 -0
- package/dist-client/shared/integration-fetch.d.ts +35 -0
- package/dist-client/shared/integration-fetch.js +53 -0
- package/dist-client/shared/integration-fetch.js.map +1 -0
- package/dist-client/themes/dark.css +24 -24
- package/dist-client/themes/light.css +23 -23
- package/dist-client/tsconfig.tsbuildinfo +1 -1
- package/dist-client/viewparts/menu-tools.d.ts +40 -5
- package/dist-client/viewparts/menu-tools.js +317 -52
- package/dist-client/viewparts/menu-tools.js.map +1 -1
- package/dist-server/index.d.ts +2 -0
- package/dist-server/index.js +5 -0
- package/dist-server/index.js.map +1 -1
- package/dist-server/migrations/index.d.ts +1 -0
- package/dist-server/migrations/index.js +12 -0
- package/dist-server/migrations/index.js.map +1 -0
- package/dist-server/scripts/calculate-kpi-scores.d.ts +10 -0
- package/dist-server/scripts/calculate-kpi-scores.js +333 -0
- package/dist-server/scripts/calculate-kpi-scores.js.map +1 -0
- package/dist-server/scripts/load-grade-data-migration.d.ts +14 -0
- package/dist-server/scripts/load-grade-data-migration.js +279 -0
- package/dist-server/scripts/load-grade-data-migration.js.map +1 -0
- package/dist-server/scripts/propagate-parent-kpi-values.d.ts +14 -0
- package/dist-server/scripts/propagate-parent-kpi-values.js +786 -0
- package/dist-server/scripts/propagate-parent-kpi-values.js.map +1 -0
- package/dist-server/scripts/recalculate-by-project-name.d.ts +2 -0
- package/dist-server/scripts/recalculate-by-project-name.js +72 -0
- package/dist-server/scripts/recalculate-by-project-name.js.map +1 -0
- package/dist-server/service/index.d.ts +4 -0
- package/dist-server/service/index.js +20 -0
- package/dist-server/service/index.js.map +1 -0
- package/dist-server/service/kpi-metric-value/index.d.ts +4 -0
- package/dist-server/service/kpi-metric-value/index.js +8 -0
- package/dist-server/service/kpi-metric-value/index.js.map +1 -0
- package/dist-server/service/kpi-metric-value/kpi-metric-value-mutation.d.ts +171 -0
- package/dist-server/service/kpi-metric-value/kpi-metric-value-mutation.js +983 -0
- package/dist-server/service/kpi-metric-value/kpi-metric-value-mutation.js.map +1 -0
- package/dist-server/service/kpi-metric-value/kpi-metric-value-query.d.ts +12 -0
- package/dist-server/service/kpi-metric-value/kpi-metric-value-query.js +56 -0
- package/dist-server/service/kpi-metric-value/kpi-metric-value-query.js.map +1 -0
- package/dist-server/service/kpi-stat/index.d.ts +4 -0
- package/dist-server/service/kpi-stat/index.js +8 -0
- package/dist-server/service/kpi-stat/index.js.map +1 -0
- package/dist-server/service/kpi-stat/kpi-stat-query.d.ts +13 -0
- package/dist-server/service/kpi-stat/kpi-stat-query.js +727 -0
- package/dist-server/service/kpi-stat/kpi-stat-query.js.map +1 -0
- package/dist-server/service/kpi-stat/kpi-stat-types.d.ts +32 -0
- package/dist-server/service/kpi-stat/kpi-stat-types.js +180 -0
- package/dist-server/service/kpi-stat/kpi-stat-types.js.map +1 -0
- package/dist-server/service/kpi-value/index.d.ts +3 -0
- package/dist-server/service/kpi-value/index.js +7 -0
- package/dist-server/service/kpi-value/index.js.map +1 -0
- package/dist-server/service/kpi-value/kpi-value-query.d.ts +8 -0
- package/dist-server/service/kpi-value/kpi-value-query.js +90 -0
- package/dist-server/service/kpi-value/kpi-value-query.js.map +1 -0
- package/dist-server/tsconfig.tsbuildinfo +1 -1
- package/kpi-module-service-tests.md +1286 -0
- package/kpi-module-test-report.md +676 -0
- package/kpi-module-unit-test-detailed-report.md +925 -0
- package/kpi-module-unit-tests-detailed.md +1452 -0
- package/openapi/unstable.yaml +2 -2
- package/package.json +69 -55
- package/recalculate-batch.sh +64 -0
- package/recalculate-projects-range.sh +98 -0
- package/schema.graphql +3464 -458
- package/things-factory.config.js +12 -1
- package/translations/en.json +5 -1
- package/translations/ko.json +5 -1
- package/views/auth-page.html +4 -5
- package/views/public/home.html +5 -6
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* geo_group 2μ리 μ½λ β μλ/μꡰꡬ λ§€ν.
|
|
3
|
+
* convert-augmented-xlsx-to-csv.py μ GEO_GROUPS dict λ₯Ό TypeScript λ‘ μ΄μ.
|
|
4
|
+
*
|
|
5
|
+
* μ΄μμκ° νλ‘μ νΈ μ£Όμλ₯Ό μ
λ ₯νλ©΄ κ·Έ μμμ μλ+μꡰꡬ νμ€λͺ
μ λΆλΆ λ§€μΉνμ¬
|
|
6
|
+
* 2μ리 μ½λλ₯Ό μΆμ . μλ μ±μ νμλ μ΄μμκ° μλ μ μ κ°λ₯.
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* μ°νΈλ²νΈ prefix (2μ리) β geo_group 2μ리 μ½λ best-guess λ§€ν.
|
|
10
|
+
* convert-augmented-xlsx-to-csv.py μ GEO_GROUPS μΈ λ²μ§Έ κ° (postal_prefix) κΈ°μ€,
|
|
11
|
+
* 1:N μΌμ΄μ€λ 첫 λ§€μΉ μ¬μ©. μ νν μꡰꡬ λΆλ¦¬μλ νκ΅ νμ μμ λΆ 5μ리 μ°νΈλ²νΈ
|
|
12
|
+
* 룩μ
νμνμ§λ§ client embed λΆκ°λ₯ β best-guess λ‘ μλ λ¨μ ν΅κ³λ§ μ λ’° κ°λ₯.
|
|
13
|
+
*/
|
|
14
|
+
export declare const POSTAL_PREFIX_TO_GEO_GROUP: Record<string, string>;
|
|
15
|
+
export declare function inferGeoGroupFromPostalCode(postalCode: string | null | undefined): string | null;
|
|
16
|
+
/** "μλ+μꡰꡬ νμ€λͺ
" β "2μ리 geo_group μ½λ" */
|
|
17
|
+
export declare const ADDRESS_TO_GEO_GROUP: Record<string, string>;
|
|
18
|
+
/**
|
|
19
|
+
* μ£Όμ λ¬Έμμ΄μμ 2μ리 geo_group μ½λ μΆμ . λ§€μΉ μ λλ©΄ null.
|
|
20
|
+
* λ§€μΉ μ°μ :
|
|
21
|
+
* 1) μ μ μλλͺ
+ μꡰꡬλͺ
(μ: 'μμΈνΉλ³μ μ’
λ‘ꡬ')
|
|
22
|
+
* 2) μ½μΉ μλ + μꡰꡬ (μ: 'μμΈ μ’
λ‘ꡬ' β 'μμΈνΉλ³μ μ’
λ‘ꡬ')
|
|
23
|
+
* 3) μꡰꡬλͺ
λ¨λ
λ§€μΉ (μ: 'μ’
λ‘ꡬ') β μ λν¬ν κ²½μ°
|
|
24
|
+
*/
|
|
25
|
+
export declare function inferGeoGroupFromAddress(address: string | null | undefined): string | null;
|
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* geo_group 2μ리 μ½λ β μλ/μꡰꡬ λ§€ν.
|
|
3
|
+
* convert-augmented-xlsx-to-csv.py μ GEO_GROUPS dict λ₯Ό TypeScript λ‘ μ΄μ.
|
|
4
|
+
*
|
|
5
|
+
* μ΄μμκ° νλ‘μ νΈ μ£Όμλ₯Ό μ
λ ₯νλ©΄ κ·Έ μμμ μλ+μꡰꡬ νμ€λͺ
μ λΆλΆ λ§€μΉνμ¬
|
|
6
|
+
* 2μ리 μ½λλ₯Ό μΆμ . μλ μ±μ νμλ μ΄μμκ° μλ μ μ κ°λ₯.
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* μ°νΈλ²νΈ prefix (2μ리) β geo_group 2μ리 μ½λ best-guess λ§€ν.
|
|
10
|
+
* convert-augmented-xlsx-to-csv.py μ GEO_GROUPS μΈ λ²μ§Έ κ° (postal_prefix) κΈ°μ€,
|
|
11
|
+
* 1:N μΌμ΄μ€λ 첫 λ§€μΉ μ¬μ©. μ νν μꡰꡬ λΆλ¦¬μλ νκ΅ νμ μμ λΆ 5μ리 μ°νΈλ²νΈ
|
|
12
|
+
* 룩μ
νμνμ§λ§ client embed λΆκ°λ₯ β best-guess λ‘ μλ λ¨μ ν΅κ³λ§ μ λ’° κ°λ₯.
|
|
13
|
+
*/
|
|
14
|
+
export const POSTAL_PREFIX_TO_GEO_GROUP = {
|
|
15
|
+
'03': '01', // μμΈ μ’
λ‘ꡬ
|
|
16
|
+
'04': '02', // μμΈ μ€κ΅¬
|
|
17
|
+
'05': '05', // μμΈ κ΄μ§κ΅¬
|
|
18
|
+
'06': '06', // μμΈ κ°λ¨κ΅¬
|
|
19
|
+
'07': '08', // μμΈ κ°μꡬ
|
|
20
|
+
'10': '12', // κ²½κΈ° κ³ μμ / νμ£Όμ
|
|
21
|
+
'11': '11', // κ²½κΈ° μ±λ¨μ
|
|
22
|
+
'12': '11', // κ²½κΈ° μ±λ¨μ
|
|
23
|
+
'13': '11', // κ²½κΈ° μ±λ¨μ
|
|
24
|
+
'14': '14', // κ²½κΈ° λΆμ²μ
|
|
25
|
+
'15': '15', // κ²½κΈ° μμ°μ
|
|
26
|
+
'16': '10', // κ²½κΈ° μμμ
|
|
27
|
+
'17': '13', // κ²½κΈ° μ©μΈμ / ννμ
|
|
28
|
+
'18': '16', // κ²½κΈ° νμ±μ
|
|
29
|
+
'21': '21', // μΈμ² λ¨λꡬ / λΆνꡬ
|
|
30
|
+
'22': '23', // μΈμ² μꡬ
|
|
31
|
+
'24': '24', // κ°μ μΆμ²μ
|
|
32
|
+
'25': '26', // κ°μ κ°λ¦μ
|
|
33
|
+
'26': '25', // κ°μ μμ£Όμ
|
|
34
|
+
'27': '28', // μΆ©λΆ μΆ©μ£Όμ / μ μ²μ
|
|
35
|
+
'28': '27', // μΆ©λΆ μ²μ£Όμ
|
|
36
|
+
'30': '30', // μΈμ’
|
|
37
|
+
'31': '31', // μΆ©λ¨ μ²μμ / μμ°μ
|
|
38
|
+
'34': '35', // λμ μ μ±κ΅¬
|
|
39
|
+
'35': '34', // λμ μꡬ
|
|
40
|
+
'36': '39', // κ²½λΆ μλμ
|
|
41
|
+
'37': '36', // κ²½λΆ ν¬νμ
|
|
42
|
+
'38': '37', // κ²½λΆ κ²½μ£Όμ
|
|
43
|
+
'39': '38', // κ²½λΆ κ΅¬λ―Έμ / κΉμ²μ
|
|
44
|
+
'41': '41', // λꡬ μ€κ΅¬
|
|
45
|
+
'42': '42', // λꡬ μμ±κ΅¬ / λ¬μꡬ
|
|
46
|
+
'44': '44', // μΈμ° λ¨κ΅¬ / μ€κ΅¬
|
|
47
|
+
'46': '49', // λΆμ° κΈμ ꡬ
|
|
48
|
+
'48': '46', // λΆμ° μ€κ΅¬ / ν΄μ΄λꡬ
|
|
49
|
+
'49': '48', // λΆμ° μ¬νꡬ
|
|
50
|
+
'50': '51', // κ²½λ¨ κΉν΄μ / μμ°μ
|
|
51
|
+
'51': '50', // κ²½λ¨ μ°½μμ
|
|
52
|
+
'52': '52', // κ²½λ¨ μ§μ£Όμ
|
|
53
|
+
'54': '54', // μ λΆ μ μ£Όμ / μ΅μ°μ / κ΅°μ°μ
|
|
54
|
+
'57': '59', // μ λ¨ μμ²μ
|
|
55
|
+
'58': '57', // μ λ¨ λͺ©ν¬μ
|
|
56
|
+
'59': '58', // μ λ¨ μ¬μμ
|
|
57
|
+
'61': '61', // κ΄μ£Ό μꡬ / λΆκ΅¬
|
|
58
|
+
'63': '63' // μ μ£Ό
|
|
59
|
+
};
|
|
60
|
+
export function inferGeoGroupFromPostalCode(postalCode) {
|
|
61
|
+
if (!postalCode)
|
|
62
|
+
return null;
|
|
63
|
+
const prefix = postalCode.trim().slice(0, 2);
|
|
64
|
+
return POSTAL_PREFIX_TO_GEO_GROUP[prefix] || null;
|
|
65
|
+
}
|
|
66
|
+
/** "μλ+μꡰꡬ νμ€λͺ
" β "2μ리 geo_group μ½λ" */
|
|
67
|
+
export const ADDRESS_TO_GEO_GROUP = {
|
|
68
|
+
'μμΈνΉλ³μ μ’
λ‘ꡬ': '01',
|
|
69
|
+
'μμΈνΉλ³μ μ€κ΅¬': '02',
|
|
70
|
+
'μμΈνΉλ³μ μ©μ°κ΅¬': '03',
|
|
71
|
+
'μμΈνΉλ³μ μ±λꡬ': '04',
|
|
72
|
+
'μμΈνΉλ³μ κ΄μ§κ΅¬': '05',
|
|
73
|
+
'μμΈνΉλ³μ κ°λ¨κ΅¬': '06',
|
|
74
|
+
'μμΈνΉλ³μ μ‘νꡬ': '07',
|
|
75
|
+
'μμΈνΉλ³μ κ°μꡬ': '08',
|
|
76
|
+
'κ²½κΈ°λ μμμ': '10',
|
|
77
|
+
'κ²½κΈ°λ μ±λ¨μ': '11',
|
|
78
|
+
'κ²½κΈ°λ κ³ μμ': '12',
|
|
79
|
+
'κ²½κΈ°λ μ©μΈμ': '13',
|
|
80
|
+
'κ²½κΈ°λ λΆμ²μ': '14',
|
|
81
|
+
'κ²½κΈ°λ μμ°μ': '15',
|
|
82
|
+
'κ²½κΈ°λ νμ±μ': '16',
|
|
83
|
+
'κ²½κΈ°λ ννμ': '17',
|
|
84
|
+
'κ²½κΈ°λ νμ£Όμ': '18',
|
|
85
|
+
'μΈμ²κ΄μμ λ¨λꡬ': '21',
|
|
86
|
+
'μΈμ²κ΄μμ λΆνꡬ': '22',
|
|
87
|
+
'μΈμ²κ΄μμ μꡬ': '23',
|
|
88
|
+
'κ°μλ μΆμ²μ': '24',
|
|
89
|
+
'κ°μλ μμ£Όμ': '25',
|
|
90
|
+
'κ°μλ κ°λ¦μ': '26',
|
|
91
|
+
'μΆ©μ²λΆλ μ²μ£Όμ': '27',
|
|
92
|
+
'μΆ©μ²λΆλ μΆ©μ£Όμ': '28',
|
|
93
|
+
'μΆ©μ²λΆλ μ μ²μ': '29',
|
|
94
|
+
'μΈμ’
νΉλ³μμΉμ': '30',
|
|
95
|
+
'μΆ©μ²λ¨λ μ²μμ': '31',
|
|
96
|
+
'μΆ©μ²λ¨λ μμ°μ': '32',
|
|
97
|
+
'κ°μλ μμ΄μ': '33',
|
|
98
|
+
'λμ κ΄μμ μꡬ': '34',
|
|
99
|
+
'λμ κ΄μμ μ μ±κ΅¬': '35',
|
|
100
|
+
'κ²½μλΆλ ν¬νμ': '36',
|
|
101
|
+
'κ²½μλΆλ κ²½μ£Όμ': '37',
|
|
102
|
+
'κ²½μλΆλ ꡬ미μ': '38',
|
|
103
|
+
'κ²½μλΆλ μλμ': '39',
|
|
104
|
+
'κ²½μλΆλ κΉμ²μ': '40',
|
|
105
|
+
'λꡬκ΄μμ μ€κ΅¬': '41',
|
|
106
|
+
'λꡬκ΄μμ μμ±κ΅¬': '42',
|
|
107
|
+
'λꡬκ΄μμ λ¬μꡬ': '43',
|
|
108
|
+
'μΈμ°κ΄μμ λ¨κ΅¬': '44',
|
|
109
|
+
'μΈμ°κ΄μμ μ€κ΅¬': '45',
|
|
110
|
+
'λΆμ°κ΄μμ μ€κ΅¬': '46',
|
|
111
|
+
'λΆμ°κ΄μμ ν΄μ΄λꡬ': '47',
|
|
112
|
+
'λΆμ°κ΄μμ μ¬νꡬ': '48',
|
|
113
|
+
'λΆμ°κ΄μμ κΈμ ꡬ': '49',
|
|
114
|
+
'κ²½μλ¨λ μ°½μμ': '50',
|
|
115
|
+
'κ²½μλ¨λ κΉν΄μ': '51',
|
|
116
|
+
'κ²½μλ¨λ μ§μ£Όμ': '52',
|
|
117
|
+
'κ²½μλ¨λ μμ°μ': '53',
|
|
118
|
+
'μ λΌλΆλ μ μ£Όμ': '54',
|
|
119
|
+
'μ λΌλΆλ μ΅μ°μ': '55',
|
|
120
|
+
'μ λΌλΆλ κ΅°μ°μ': '56',
|
|
121
|
+
'μ λΌλ¨λ λͺ©ν¬μ': '57',
|
|
122
|
+
'μ λΌλ¨λ μ¬μμ': '58',
|
|
123
|
+
'μ λΌλ¨λ μμ²μ': '59',
|
|
124
|
+
'κ΄μ£Όκ΄μμ μꡬ': '61',
|
|
125
|
+
'κ΄μ£Όκ΄μμ λΆκ΅¬': '62',
|
|
126
|
+
'μ μ£ΌνΉλ³μμΉλ μ μ£Όμ': '63'
|
|
127
|
+
};
|
|
128
|
+
/** μλ μ½μΉ β μ μ λͺ
(λΆλΆ λ§€μΉμ©). */
|
|
129
|
+
const PROVINCE_ALIASES = {
|
|
130
|
+
μμΈ: 'μμΈνΉλ³μ',
|
|
131
|
+
κ²½κΈ°: 'κ²½κΈ°λ',
|
|
132
|
+
μΈμ²: 'μΈμ²κ΄μμ',
|
|
133
|
+
κ°μ: 'κ°μλ',
|
|
134
|
+
μΆ©λΆ: 'μΆ©μ²λΆλ',
|
|
135
|
+
μΆ©λ¨: 'μΆ©μ²λ¨λ',
|
|
136
|
+
μΈμ’
: 'μΈμ’
νΉλ³μμΉμ',
|
|
137
|
+
λμ : 'λμ κ΄μμ',
|
|
138
|
+
κ²½λΆ: 'κ²½μλΆλ',
|
|
139
|
+
κ²½λ¨: 'κ²½μλ¨λ',
|
|
140
|
+
λꡬ: 'λꡬκ΄μμ',
|
|
141
|
+
μΈμ°: 'μΈμ°κ΄μμ',
|
|
142
|
+
λΆμ°: 'λΆμ°κ΄μμ',
|
|
143
|
+
μ λΆ: 'μ λΌλΆλ',
|
|
144
|
+
μ λ¨: 'μ λΌλ¨λ',
|
|
145
|
+
κ΄μ£Ό: 'κ΄μ£Όκ΄μμ',
|
|
146
|
+
μ μ£Ό: 'μ μ£ΌνΉλ³μμΉλ'
|
|
147
|
+
};
|
|
148
|
+
/**
|
|
149
|
+
* μ£Όμ λ¬Έμμ΄μμ 2μ리 geo_group μ½λ μΆμ . λ§€μΉ μ λλ©΄ null.
|
|
150
|
+
* λ§€μΉ μ°μ :
|
|
151
|
+
* 1) μ μ μλλͺ
+ μꡰꡬλͺ
(μ: 'μμΈνΉλ³μ μ’
λ‘ꡬ')
|
|
152
|
+
* 2) μ½μΉ μλ + μꡰꡬ (μ: 'μμΈ μ’
λ‘ꡬ' β 'μμΈνΉλ³μ μ’
λ‘ꡬ')
|
|
153
|
+
* 3) μꡰꡬλͺ
λ¨λ
λ§€μΉ (μ: 'μ’
λ‘ꡬ') β μ λν¬ν κ²½μ°
|
|
154
|
+
*/
|
|
155
|
+
export function inferGeoGroupFromAddress(address) {
|
|
156
|
+
if (!address)
|
|
157
|
+
return null;
|
|
158
|
+
const trimmed = address.trim();
|
|
159
|
+
if (!trimmed)
|
|
160
|
+
return null;
|
|
161
|
+
// 1) μ μ λ§€μΉ
|
|
162
|
+
for (const key of Object.keys(ADDRESS_TO_GEO_GROUP)) {
|
|
163
|
+
if (trimmed.includes(key))
|
|
164
|
+
return ADDRESS_TO_GEO_GROUP[key];
|
|
165
|
+
}
|
|
166
|
+
// 2) μ½μΉ μλ β μ μ μλλ‘ expand ν λ€μ λ§€μΉ
|
|
167
|
+
for (const [short, full] of Object.entries(PROVINCE_ALIASES)) {
|
|
168
|
+
if (trimmed.startsWith(short) && !trimmed.startsWith(full)) {
|
|
169
|
+
const expanded = trimmed.replace(short, full);
|
|
170
|
+
for (const key of Object.keys(ADDRESS_TO_GEO_GROUP)) {
|
|
171
|
+
if (expanded.includes(key))
|
|
172
|
+
return ADDRESS_TO_GEO_GROUP[key];
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
// 3) μꡰꡬλͺ
λ¨λ
λ§€μΉ (μλ prefix μλ κ²½μ°). μ λν¬ν μκ΅°κ΅¬λ§ ν΅κ³Ό.
|
|
177
|
+
const districtMatches = Object.entries(ADDRESS_TO_GEO_GROUP)
|
|
178
|
+
.filter(([key]) => {
|
|
179
|
+
const parts = key.split(' ');
|
|
180
|
+
const district = parts[parts.length - 1];
|
|
181
|
+
return trimmed.includes(district);
|
|
182
|
+
})
|
|
183
|
+
.map(([, code]) => code);
|
|
184
|
+
const uniqueDistrictCodes = Array.from(new Set(districtMatches));
|
|
185
|
+
if (uniqueDistrictCodes.length === 1)
|
|
186
|
+
return uniqueDistrictCodes[0];
|
|
187
|
+
return null;
|
|
188
|
+
}
|
|
189
|
+
//# sourceMappingURL=geo-group-mapping.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"geo-group-mapping.js","sourceRoot":"","sources":["../../client/shared/geo-group-mapping.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * geo_group 2μ리 μ½λ β μλ/μꡰꡬ λ§€ν.\n * convert-augmented-xlsx-to-csv.py μ GEO_GROUPS dict λ₯Ό TypeScript λ‘ μ΄μ.\n *\n * μ΄μμκ° νλ‘μ νΈ μ£Όμλ₯Ό μ
λ ₯νλ©΄ κ·Έ μμμ μλ+μꡰꡬ νμ€λͺ
μ λΆλΆ λ§€μΉνμ¬\n * 2μ리 μ½λλ₯Ό μΆμ . μλ μ±μ νμλ μ΄μμκ° μλ μ μ κ°λ₯.\n */\n\n/**\n * μ°νΈλ²νΈ prefix (2μ리) β geo_group 2μ리 μ½λ best-guess λ§€ν.\n * convert-augmented-xlsx-to-csv.py μ GEO_GROUPS μΈ λ²μ§Έ κ° (postal_prefix) κΈ°μ€,\n * 1:N μΌμ΄μ€λ 첫 λ§€μΉ μ¬μ©. μ νν μꡰꡬ λΆλ¦¬μλ νκ΅ νμ μμ λΆ 5μ리 μ°νΈλ²νΈ\n * 룩μ
νμνμ§λ§ client embed λΆκ°λ₯ β best-guess λ‘ μλ λ¨μ ν΅κ³λ§ μ λ’° κ°λ₯.\n */\nexport const POSTAL_PREFIX_TO_GEO_GROUP: Record<string, string> = {\n '03': '01', // μμΈ μ’
λ‘ꡬ\n '04': '02', // μμΈ μ€κ΅¬\n '05': '05', // μμΈ κ΄μ§κ΅¬\n '06': '06', // μμΈ κ°λ¨κ΅¬\n '07': '08', // μμΈ κ°μꡬ\n '10': '12', // κ²½κΈ° κ³ μμ / νμ£Όμ\n '11': '11', // κ²½κΈ° μ±λ¨μ\n '12': '11', // κ²½κΈ° μ±λ¨μ\n '13': '11', // κ²½κΈ° μ±λ¨μ\n '14': '14', // κ²½κΈ° λΆμ²μ\n '15': '15', // κ²½κΈ° μμ°μ\n '16': '10', // κ²½κΈ° μμμ\n '17': '13', // κ²½κΈ° μ©μΈμ / ννμ\n '18': '16', // κ²½κΈ° νμ±μ\n '21': '21', // μΈμ² λ¨λꡬ / λΆνꡬ\n '22': '23', // μΈμ² μꡬ\n '24': '24', // κ°μ μΆμ²μ\n '25': '26', // κ°μ κ°λ¦μ\n '26': '25', // κ°μ μμ£Όμ\n '27': '28', // μΆ©λΆ μΆ©μ£Όμ / μ μ²μ\n '28': '27', // μΆ©λΆ μ²μ£Όμ\n '30': '30', // μΈμ’
\n '31': '31', // μΆ©λ¨ μ²μμ / μμ°μ\n '34': '35', // λμ μ μ±κ΅¬\n '35': '34', // λμ μꡬ\n '36': '39', // κ²½λΆ μλμ\n '37': '36', // κ²½λΆ ν¬νμ\n '38': '37', // κ²½λΆ κ²½μ£Όμ\n '39': '38', // κ²½λΆ κ΅¬λ―Έμ / κΉμ²μ\n '41': '41', // λꡬ μ€κ΅¬\n '42': '42', // λꡬ μμ±κ΅¬ / λ¬μꡬ\n '44': '44', // μΈμ° λ¨κ΅¬ / μ€κ΅¬\n '46': '49', // λΆμ° κΈμ ꡬ\n '48': '46', // λΆμ° μ€κ΅¬ / ν΄μ΄λꡬ\n '49': '48', // λΆμ° μ¬νꡬ\n '50': '51', // κ²½λ¨ κΉν΄μ / μμ°μ\n '51': '50', // κ²½λ¨ μ°½μμ\n '52': '52', // κ²½λ¨ μ§μ£Όμ\n '54': '54', // μ λΆ μ μ£Όμ / μ΅μ°μ / κ΅°μ°μ\n '57': '59', // μ λ¨ μμ²μ\n '58': '57', // μ λ¨ λͺ©ν¬μ\n '59': '58', // μ λ¨ μ¬μμ\n '61': '61', // κ΄μ£Ό μꡬ / λΆκ΅¬\n '63': '63' // μ μ£Ό\n}\n\nexport function inferGeoGroupFromPostalCode(postalCode: string | null | undefined): string | null {\n if (!postalCode) return null\n const prefix = postalCode.trim().slice(0, 2)\n return POSTAL_PREFIX_TO_GEO_GROUP[prefix] || null\n}\n\n/** \"μλ+μꡰꡬ νμ€λͺ
\" β \"2μ리 geo_group μ½λ\" */\nexport const ADDRESS_TO_GEO_GROUP: Record<string, string> = {\n 'μμΈνΉλ³μ μ’
λ‘ꡬ': '01',\n 'μμΈνΉλ³μ μ€κ΅¬': '02',\n 'μμΈνΉλ³μ μ©μ°κ΅¬': '03',\n 'μμΈνΉλ³μ μ±λꡬ': '04',\n 'μμΈνΉλ³μ κ΄μ§κ΅¬': '05',\n 'μμΈνΉλ³μ κ°λ¨κ΅¬': '06',\n 'μμΈνΉλ³μ μ‘νꡬ': '07',\n 'μμΈνΉλ³μ κ°μꡬ': '08',\n 'κ²½κΈ°λ μμμ': '10',\n 'κ²½κΈ°λ μ±λ¨μ': '11',\n 'κ²½κΈ°λ κ³ μμ': '12',\n 'κ²½κΈ°λ μ©μΈμ': '13',\n 'κ²½κΈ°λ λΆμ²μ': '14',\n 'κ²½κΈ°λ μμ°μ': '15',\n 'κ²½κΈ°λ νμ±μ': '16',\n 'κ²½κΈ°λ ννμ': '17',\n 'κ²½κΈ°λ νμ£Όμ': '18',\n 'μΈμ²κ΄μμ λ¨λꡬ': '21',\n 'μΈμ²κ΄μμ λΆνꡬ': '22',\n 'μΈμ²κ΄μμ μꡬ': '23',\n 'κ°μλ μΆμ²μ': '24',\n 'κ°μλ μμ£Όμ': '25',\n 'κ°μλ κ°λ¦μ': '26',\n 'μΆ©μ²λΆλ μ²μ£Όμ': '27',\n 'μΆ©μ²λΆλ μΆ©μ£Όμ': '28',\n 'μΆ©μ²λΆλ μ μ²μ': '29',\n 'μΈμ’
νΉλ³μμΉμ': '30',\n 'μΆ©μ²λ¨λ μ²μμ': '31',\n 'μΆ©μ²λ¨λ μμ°μ': '32',\n 'κ°μλ μμ΄μ': '33',\n 'λμ κ΄μμ μꡬ': '34',\n 'λμ κ΄μμ μ μ±κ΅¬': '35',\n 'κ²½μλΆλ ν¬νμ': '36',\n 'κ²½μλΆλ κ²½μ£Όμ': '37',\n 'κ²½μλΆλ ꡬ미μ': '38',\n 'κ²½μλΆλ μλμ': '39',\n 'κ²½μλΆλ κΉμ²μ': '40',\n 'λꡬκ΄μμ μ€κ΅¬': '41',\n 'λꡬκ΄μμ μμ±κ΅¬': '42',\n 'λꡬκ΄μμ λ¬μꡬ': '43',\n 'μΈμ°κ΄μμ λ¨κ΅¬': '44',\n 'μΈμ°κ΄μμ μ€κ΅¬': '45',\n 'λΆμ°κ΄μμ μ€κ΅¬': '46',\n 'λΆμ°κ΄μμ ν΄μ΄λꡬ': '47',\n 'λΆμ°κ΄μμ μ¬νꡬ': '48',\n 'λΆμ°κ΄μμ κΈμ ꡬ': '49',\n 'κ²½μλ¨λ μ°½μμ': '50',\n 'κ²½μλ¨λ κΉν΄μ': '51',\n 'κ²½μλ¨λ μ§μ£Όμ': '52',\n 'κ²½μλ¨λ μμ°μ': '53',\n 'μ λΌλΆλ μ μ£Όμ': '54',\n 'μ λΌλΆλ μ΅μ°μ': '55',\n 'μ λΌλΆλ κ΅°μ°μ': '56',\n 'μ λΌλ¨λ λͺ©ν¬μ': '57',\n 'μ λΌλ¨λ μ¬μμ': '58',\n 'μ λΌλ¨λ μμ²μ': '59',\n 'κ΄μ£Όκ΄μμ μꡬ': '61',\n 'κ΄μ£Όκ΄μμ λΆκ΅¬': '62',\n 'μ μ£ΌνΉλ³μμΉλ μ μ£Όμ': '63'\n}\n\n/** μλ μ½μΉ β μ μ λͺ
(λΆλΆ λ§€μΉμ©). */\nconst PROVINCE_ALIASES: Record<string, string> = {\n μμΈ: 'μμΈνΉλ³μ',\n κ²½κΈ°: 'κ²½κΈ°λ',\n μΈμ²: 'μΈμ²κ΄μμ',\n κ°μ: 'κ°μλ',\n μΆ©λΆ: 'μΆ©μ²λΆλ',\n μΆ©λ¨: 'μΆ©μ²λ¨λ',\n μΈμ’
: 'μΈμ’
νΉλ³μμΉμ',\n λμ : 'λμ κ΄μμ',\n κ²½λΆ: 'κ²½μλΆλ',\n κ²½λ¨: 'κ²½μλ¨λ',\n λꡬ: 'λꡬκ΄μμ',\n μΈμ°: 'μΈμ°κ΄μμ',\n λΆμ°: 'λΆμ°κ΄μμ',\n μ λΆ: 'μ λΌλΆλ',\n μ λ¨: 'μ λΌλ¨λ',\n κ΄μ£Ό: 'κ΄μ£Όκ΄μμ',\n μ μ£Ό: 'μ μ£ΌνΉλ³μμΉλ'\n}\n\n/**\n * μ£Όμ λ¬Έμμ΄μμ 2μ리 geo_group μ½λ μΆμ . λ§€μΉ μ λλ©΄ null.\n * λ§€μΉ μ°μ :\n * 1) μ μ μλλͺ
+ μꡰꡬλͺ
(μ: 'μμΈνΉλ³μ μ’
λ‘ꡬ')\n * 2) μ½μΉ μλ + μꡰꡬ (μ: 'μμΈ μ’
λ‘ꡬ' β 'μμΈνΉλ³μ μ’
λ‘ꡬ')\n * 3) μꡰꡬλͺ
λ¨λ
λ§€μΉ (μ: 'μ’
λ‘ꡬ') β μ λν¬ν κ²½μ°\n */\nexport function inferGeoGroupFromAddress(address: string | null | undefined): string | null {\n if (!address) return null\n const trimmed = address.trim()\n if (!trimmed) return null\n\n // 1) μ μ λ§€μΉ\n for (const key of Object.keys(ADDRESS_TO_GEO_GROUP)) {\n if (trimmed.includes(key)) return ADDRESS_TO_GEO_GROUP[key]\n }\n\n // 2) μ½μΉ μλ β μ μ μλλ‘ expand ν λ€μ λ§€μΉ\n for (const [short, full] of Object.entries(PROVINCE_ALIASES)) {\n if (trimmed.startsWith(short) && !trimmed.startsWith(full)) {\n const expanded = trimmed.replace(short, full)\n for (const key of Object.keys(ADDRESS_TO_GEO_GROUP)) {\n if (expanded.includes(key)) return ADDRESS_TO_GEO_GROUP[key]\n }\n }\n }\n\n // 3) μꡰꡬλͺ
λ¨λ
λ§€μΉ (μλ prefix μλ κ²½μ°). μ λν¬ν μκ΅°κ΅¬λ§ ν΅κ³Ό.\n const districtMatches = Object.entries(ADDRESS_TO_GEO_GROUP)\n .filter(([key]) => {\n const parts = key.split(' ')\n const district = parts[parts.length - 1]\n return trimmed.includes(district)\n })\n .map(([, code]) => code)\n const uniqueDistrictCodes = Array.from(new Set(districtMatches))\n if (uniqueDistrictCodes.length === 1) return uniqueDistrictCodes[0]\n\n return null\n}\n"]}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* μ곡 μ
λ ₯ νλ©΄μ "μλ μμ§" μν¬νλ‘μ© μΈλΆ μμ€ν
μ°λ μμ§ ν¨μ.
|
|
3
|
+
*
|
|
4
|
+
* λ°λͺ¨ λͺ©μ : ν€μ€μ½Β·μΈμν°Β·μ¬λ°λ‘μμ "μ°λμ ν΅ν΄ κ°μ κ°μ Έμ¨λ€"λ μν¬νλ‘λ₯Ό
|
|
5
|
+
* 보μ¬μ£ΌκΈ° μν κ². μ€μ μ€ν¬λν/API μ°λμ κΉμ΄λ μ΄ ν¨μ λ΄λΆμ μΊ‘μνλμ΄
|
|
6
|
+
* μμΌλ―λ‘, μΆν μ€μ°λ(integration-kiscon / data-go-kr / integration-allbaro)
|
|
7
|
+
* μΌλ‘ κ΅μ²΄ν λ μ΄ λ³Έλ¬Έλ§ λ°κΎΈλ©΄ νλ©΄/μ μ₯ νλ¦μ κ·Έλλ‘ μ μ§λλ€.
|
|
8
|
+
*/
|
|
9
|
+
export type IntegrationSource = 'kiscon' | 'saeumteo' | 'allbaro';
|
|
10
|
+
export interface IntegrationSourceMeta {
|
|
11
|
+
source: IntegrationSource;
|
|
12
|
+
label: string;
|
|
13
|
+
icon: string;
|
|
14
|
+
desc: string;
|
|
15
|
+
}
|
|
16
|
+
/** νλ©΄μ νμν μ°λ μμ€ λͺ©λ‘ (μμ§ μμλλ‘) */
|
|
17
|
+
export declare const INTEGRATION_SOURCES: IntegrationSourceMeta[];
|
|
18
|
+
export interface CollectedField {
|
|
19
|
+
/** νΌμ projectKey (KPI_METRIC_KEY_MAPPING μ projectKey μ μΌμΉ) */
|
|
20
|
+
projectKey: string;
|
|
21
|
+
label: string;
|
|
22
|
+
value: number | string;
|
|
23
|
+
unit?: string;
|
|
24
|
+
}
|
|
25
|
+
export interface CollectionResult {
|
|
26
|
+
source: IntegrationSource;
|
|
27
|
+
label: string;
|
|
28
|
+
fields: CollectedField[];
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* ν μΈλΆ μμ€ν
μμ μ°λμΌλ‘ κ°μ μμ§νλ€.
|
|
32
|
+
* λ°λͺ¨μμλ μ°λ μμ§μ νλ΄λ΄κΈ° μν΄ μ§§μ μ§μ° ν λνκ°μ λ°ννλ€
|
|
33
|
+
* (νλ‘μ νΈμ μ΄λ―Έ μλ κ°μ΄ μμΌλ©΄ μ°μ μ¬μ©).
|
|
34
|
+
*/
|
|
35
|
+
export declare function collectFromSource(source: IntegrationSource, project: any): Promise<CollectionResult>;
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* μ곡 μ
λ ₯ νλ©΄μ "μλ μμ§" μν¬νλ‘μ© μΈλΆ μμ€ν
μ°λ μμ§ ν¨μ.
|
|
3
|
+
*
|
|
4
|
+
* λ°λͺ¨ λͺ©μ : ν€μ€μ½Β·μΈμν°Β·μ¬λ°λ‘μμ "μ°λμ ν΅ν΄ κ°μ κ°μ Έμ¨λ€"λ μν¬νλ‘λ₯Ό
|
|
5
|
+
* 보μ¬μ£ΌκΈ° μν κ². μ€μ μ€ν¬λν/API μ°λμ κΉμ΄λ μ΄ ν¨μ λ΄λΆμ μΊ‘μνλμ΄
|
|
6
|
+
* μμΌλ―λ‘, μΆν μ€μ°λ(integration-kiscon / data-go-kr / integration-allbaro)
|
|
7
|
+
* μΌλ‘ κ΅μ²΄ν λ μ΄ λ³Έλ¬Έλ§ λ°κΎΈλ©΄ νλ©΄/μ μ₯ νλ¦μ κ·Έλλ‘ μ μ§λλ€.
|
|
8
|
+
*/
|
|
9
|
+
/** νλ©΄μ νμν μ°λ μμ€ λͺ©λ‘ (μμ§ μμλλ‘) */
|
|
10
|
+
export const INTEGRATION_SOURCES = [
|
|
11
|
+
{ source: 'kiscon', label: 'ν€μ€μ½', icon: 'π', desc: '건μ€κ³΅μ¬λμ₯ ν΅λ³΄' },
|
|
12
|
+
{ source: 'saeumteo', label: 'μΈμν°', icon: 'π', desc: '건μΆλ¬Όλμ₯ / 건μΆHUB' },
|
|
13
|
+
{ source: 'allbaro', label: 'μ¬λ°λ‘', icon: 'β»', desc: '건μ€νκΈ°λ¬Ό μ²λ¦¬μ€μ ' }
|
|
14
|
+
];
|
|
15
|
+
/**
|
|
16
|
+
* ν μΈλΆ μμ€ν
μμ μ°λμΌλ‘ κ°μ μμ§νλ€.
|
|
17
|
+
* λ°λͺ¨μμλ μ°λ μμ§μ νλ΄λ΄κΈ° μν΄ μ§§μ μ§μ° ν λνκ°μ λ°ννλ€
|
|
18
|
+
* (νλ‘μ νΈμ μ΄λ―Έ μλ κ°μ΄ μμΌλ©΄ μ°μ μ¬μ©).
|
|
19
|
+
*/
|
|
20
|
+
export async function collectFromSource(source, project) {
|
|
21
|
+
// μ°λ μμ§μ΄ "μ§νλλ" λλμ μ£ΌκΈ° μν μ§§μ μ§μ° (λ°λͺ¨μ©)
|
|
22
|
+
await new Promise(r => setTimeout(r, 700));
|
|
23
|
+
const bc = (project === null || project === void 0 ? void 0 : project.buildingComplex) || {};
|
|
24
|
+
switch (source) {
|
|
25
|
+
case 'kiscon':
|
|
26
|
+
return {
|
|
27
|
+
source,
|
|
28
|
+
label: 'ν€μ€μ½',
|
|
29
|
+
fields: [
|
|
30
|
+
{ projectKey: 'constructionPeriod', label: 'κ³ν곡μ¬κΈ°κ°', value: 30, unit: 'κ°μ' },
|
|
31
|
+
{ projectKey: 'constructionCost', label: 'κ³ν곡μ¬λΉ', value: bc.constructionCost || 2500, unit: 'μ΅μ' }
|
|
32
|
+
]
|
|
33
|
+
};
|
|
34
|
+
case 'saeumteo':
|
|
35
|
+
return {
|
|
36
|
+
source,
|
|
37
|
+
label: 'μΈμν°',
|
|
38
|
+
fields: [
|
|
39
|
+
{ projectKey: 'area', label: 'μ°λ©΄μ ', value: bc.area || 114000, unit: 'γ‘' },
|
|
40
|
+
{ projectKey: 'floorAreaRatio', label: 'μ©μ μ¨', value: bc.floorAreaRatio || 250, unit: '%' },
|
|
41
|
+
{ projectKey: 'upperFloorCount', label: 'μ§μμΈ΅μ', value: 25, unit: 'μΈ΅' },
|
|
42
|
+
{ projectKey: 'lowerFloorCount', label: 'μ§νμΈ΅μ', value: 3, unit: 'μΈ΅' }
|
|
43
|
+
]
|
|
44
|
+
};
|
|
45
|
+
case 'allbaro':
|
|
46
|
+
return {
|
|
47
|
+
source,
|
|
48
|
+
label: 'μ¬λ°λ‘',
|
|
49
|
+
fields: [{ projectKey: 'totalConstructionWasteAmount', label: 'μ΄ κ±΄μ€νκΈ°λ¬Ό', value: 15, unit: 'ton' }]
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=integration-fetch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"integration-fetch.js","sourceRoot":"","sources":["../../client/shared/integration-fetch.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAWH,iCAAiC;AACjC,MAAM,CAAC,MAAM,mBAAmB,GAA4B;IAC1D,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE;IACjE,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,eAAe,EAAE;IACvE,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,YAAY,EAAE;CACnE,CAAA;AAgBD;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,MAAyB,EAAE,OAAY;IAC7E,sCAAsC;IACtC,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAA;IAE1C,MAAM,EAAE,GAAG,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,eAAe,KAAI,EAAE,CAAA;IAEzC,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,QAAQ;YACX,OAAO;gBACL,MAAM;gBACN,KAAK,EAAE,KAAK;gBACZ,MAAM,EAAE;oBACN,EAAE,UAAU,EAAE,oBAAoB,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE;oBAC5E,EAAE,UAAU,EAAE,kBAAkB,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,gBAAgB,IAAI,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE;iBACnG;aACF,CAAA;QAEH,KAAK,UAAU;YACb,OAAO;gBACL,MAAM;gBACN,KAAK,EAAE,KAAK;gBACZ,MAAM,EAAE;oBACN,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,IAAI,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE;oBACzE,EAAE,UAAU,EAAE,gBAAgB,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,cAAc,IAAI,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE;oBAC1F,EAAE,UAAU,EAAE,iBAAiB,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE;oBACtE,EAAE,UAAU,EAAE,iBAAiB,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE;iBACtE;aACF,CAAA;QAEH,KAAK,SAAS;YACZ,OAAO;gBACL,MAAM;gBACN,KAAK,EAAE,KAAK;gBACZ,MAAM,EAAE,CAAC,EAAE,UAAU,EAAE,8BAA8B,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;aACnG,CAAA;IACL,CAAC;AACH,CAAC","sourcesContent":["/**\n * μ곡 μ
λ ₯ νλ©΄μ \"μλ μμ§\" μν¬νλ‘μ© μΈλΆ μμ€ν
μ°λ μμ§ ν¨μ.\n *\n * λ°λͺ¨ λͺ©μ : ν€μ€μ½Β·μΈμν°Β·μ¬λ°λ‘μμ \"μ°λμ ν΅ν΄ κ°μ κ°μ Έμ¨λ€\"λ μν¬νλ‘λ₯Ό\n * 보μ¬μ£ΌκΈ° μν κ². μ€μ μ€ν¬λν/API μ°λμ κΉμ΄λ μ΄ ν¨μ λ΄λΆμ μΊ‘μνλμ΄\n * μμΌλ―λ‘, μΆν μ€μ°λ(integration-kiscon / data-go-kr / integration-allbaro)\n * μΌλ‘ κ΅μ²΄ν λ μ΄ λ³Έλ¬Έλ§ λ°κΎΈλ©΄ νλ©΄/μ μ₯ νλ¦μ κ·Έλλ‘ μ μ§λλ€.\n */\n\nexport type IntegrationSource = 'kiscon' | 'saeumteo' | 'allbaro'\n\nexport interface IntegrationSourceMeta {\n source: IntegrationSource\n label: string\n icon: string\n desc: string\n}\n\n/** νλ©΄μ νμν μ°λ μμ€ λͺ©λ‘ (μμ§ μμλλ‘) */\nexport const INTEGRATION_SOURCES: IntegrationSourceMeta[] = [\n { source: 'kiscon', label: 'ν€μ€μ½', icon: 'π', desc: '건μ€κ³΅μ¬λμ₯ ν΅λ³΄' },\n { source: 'saeumteo', label: 'μΈμν°', icon: 'π', desc: '건μΆλ¬Όλμ₯ / 건μΆHUB' },\n { source: 'allbaro', label: 'μ¬λ°λ‘', icon: 'β»', desc: '건μ€νκΈ°λ¬Ό μ²λ¦¬μ€μ ' }\n]\n\nexport interface CollectedField {\n /** νΌμ projectKey (KPI_METRIC_KEY_MAPPING μ projectKey μ μΌμΉ) */\n projectKey: string\n label: string\n value: number | string\n unit?: string\n}\n\nexport interface CollectionResult {\n source: IntegrationSource\n label: string\n fields: CollectedField[]\n}\n\n/**\n * ν μΈλΆ μμ€ν
μμ μ°λμΌλ‘ κ°μ μμ§νλ€.\n * λ°λͺ¨μμλ μ°λ μμ§μ νλ΄λ΄κΈ° μν΄ μ§§μ μ§μ° ν λνκ°μ λ°ννλ€\n * (νλ‘μ νΈμ μ΄λ―Έ μλ κ°μ΄ μμΌλ©΄ μ°μ μ¬μ©).\n */\nexport async function collectFromSource(source: IntegrationSource, project: any): Promise<CollectionResult> {\n // μ°λ μμ§μ΄ \"μ§νλλ\" λλμ μ£ΌκΈ° μν μ§§μ μ§μ° (λ°λͺ¨μ©)\n await new Promise(r => setTimeout(r, 700))\n\n const bc = project?.buildingComplex || {}\n\n switch (source) {\n case 'kiscon':\n return {\n source,\n label: 'ν€μ€μ½',\n fields: [\n { projectKey: 'constructionPeriod', label: 'κ³ν곡μ¬κΈ°κ°', value: 30, unit: 'κ°μ' },\n { projectKey: 'constructionCost', label: 'κ³ν곡μ¬λΉ', value: bc.constructionCost || 2500, unit: 'μ΅μ' }\n ]\n }\n\n case 'saeumteo':\n return {\n source,\n label: 'μΈμν°',\n fields: [\n { projectKey: 'area', label: 'μ°λ©΄μ ', value: bc.area || 114000, unit: 'γ‘' },\n { projectKey: 'floorAreaRatio', label: 'μ©μ μ¨', value: bc.floorAreaRatio || 250, unit: '%' },\n { projectKey: 'upperFloorCount', label: 'μ§μμΈ΅μ', value: 25, unit: 'μΈ΅' },\n { projectKey: 'lowerFloorCount', label: 'μ§νμΈ΅μ', value: 3, unit: 'μΈ΅' }\n ]\n }\n\n case 'allbaro':\n return {\n source,\n label: 'μ¬λ°λ‘',\n fields: [{ projectKey: 'totalConstructionWasteAmount', label: 'μ΄ κ±΄μ€νκΈ°λ¬Ό', value: 15, unit: 'ton' }]\n }\n }\n}\n"]}
|
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
.dark {
|
|
2
|
-
--md-sys-color-primary: rgb(
|
|
3
|
-
--md-sys-color-surface-tint: rgb(
|
|
4
|
-
--md-sys-color-on-primary: rgb(
|
|
5
|
-
--md-sys-color-primary-container: rgb(
|
|
2
|
+
--md-sys-color-primary: rgb(173 198 255);
|
|
3
|
+
--md-sys-color-surface-tint: rgb(173 198 255);
|
|
4
|
+
--md-sys-color-on-primary: rgb(16 47 96);
|
|
5
|
+
--md-sys-color-primary-container: rgb(43 70 120);
|
|
6
6
|
--md-sys-color-on-primary-container: rgb(216 226 255);
|
|
7
|
-
--md-sys-color-secondary: rgb(
|
|
8
|
-
--md-sys-color-on-secondary: rgb(
|
|
9
|
-
--md-sys-color-secondary-container: rgb(
|
|
10
|
-
--md-sys-color-on-secondary-container: rgb(
|
|
11
|
-
--md-sys-color-tertiary: rgb(
|
|
12
|
-
--md-sys-color-on-tertiary: rgb(
|
|
13
|
-
--md-sys-color-tertiary-container: rgb(
|
|
14
|
-
--md-sys-color-on-tertiary-container: rgb(
|
|
7
|
+
--md-sys-color-secondary: rgb(167 200 255);
|
|
8
|
+
--md-sys-color-on-secondary: rgb(4 48 95);
|
|
9
|
+
--md-sys-color-secondary-container: rgb(36 71 119);
|
|
10
|
+
--md-sys-color-on-secondary-container: rgb(213 227 255);
|
|
11
|
+
--md-sys-color-tertiary: rgb(234 181 238);
|
|
12
|
+
--md-sys-color-on-tertiary: rgb(72 32 79);
|
|
13
|
+
--md-sys-color-tertiary-container: rgb(96 55 103);
|
|
14
|
+
--md-sys-color-on-tertiary-container: rgb(254 214 255);
|
|
15
15
|
--md-sys-color-error: rgb(255 180 171);
|
|
16
16
|
--md-sys-color-on-error: rgb(105 0 5);
|
|
17
17
|
--md-sys-color-error-container: rgb(147 0 10);
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
--md-sys-color-surface: rgb(17 19 24);
|
|
22
22
|
--md-sys-color-on-surface: rgb(226 226 233);
|
|
23
23
|
--md-sys-color-surface-variant: rgb(68 71 79);
|
|
24
|
-
--md-sys-color-on-surface-variant: rgb(
|
|
24
|
+
--md-sys-color-on-surface-variant: rgb(196 198 208);
|
|
25
25
|
--md-sys-color-outline: rgb(142 144 153);
|
|
26
26
|
--md-sys-color-outline-variant: rgb(68 71 79);
|
|
27
27
|
--md-sys-color-shadow: rgb(0 0 0);
|
|
@@ -30,17 +30,17 @@
|
|
|
30
30
|
--md-sys-color-inverse-on-surface: rgb(47 48 54);
|
|
31
31
|
--md-sys-color-inverse-primary: rgb(68 94 145);
|
|
32
32
|
--md-sys-color-primary-fixed: rgb(216 226 255);
|
|
33
|
-
--md-sys-color-on-primary-fixed: rgb(0 26
|
|
34
|
-
--md-sys-color-primary-fixed-dim: rgb(
|
|
35
|
-
--md-sys-color-on-primary-fixed-variant: rgb(
|
|
36
|
-
--md-sys-color-secondary-fixed: rgb(
|
|
37
|
-
--md-sys-color-on-secondary-fixed: rgb(
|
|
38
|
-
--md-sys-color-secondary-fixed-dim: rgb(
|
|
39
|
-
--md-sys-color-on-secondary-fixed-variant: rgb(
|
|
40
|
-
--md-sys-color-tertiary-fixed: rgb(
|
|
41
|
-
--md-sys-color-on-tertiary-fixed: rgb(
|
|
42
|
-
--md-sys-color-tertiary-fixed-dim: rgb(
|
|
43
|
-
--md-sys-color-on-tertiary-fixed-variant: rgb(
|
|
33
|
+
--md-sys-color-on-primary-fixed: rgb(0 26 65);
|
|
34
|
+
--md-sys-color-primary-fixed-dim: rgb(173 198 255);
|
|
35
|
+
--md-sys-color-on-primary-fixed-variant: rgb(43 70 120);
|
|
36
|
+
--md-sys-color-secondary-fixed: rgb(213 227 255);
|
|
37
|
+
--md-sys-color-on-secondary-fixed: rgb(0 27 60);
|
|
38
|
+
--md-sys-color-secondary-fixed-dim: rgb(167 200 255);
|
|
39
|
+
--md-sys-color-on-secondary-fixed-variant: rgb(36 71 119);
|
|
40
|
+
--md-sys-color-tertiary-fixed: rgb(254 214 255);
|
|
41
|
+
--md-sys-color-on-tertiary-fixed: rgb(48 9 57);
|
|
42
|
+
--md-sys-color-tertiary-fixed-dim: rgb(234 181 238);
|
|
43
|
+
--md-sys-color-on-tertiary-fixed-variant: rgb(96 55 103);
|
|
44
44
|
--md-sys-color-surface-dim: rgb(17 19 24);
|
|
45
45
|
--md-sys-color-surface-bright: rgb(55 57 62);
|
|
46
46
|
--md-sys-color-surface-container-lowest: rgb(12 14 19);
|
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
.light {
|
|
2
|
-
--md-sys-color-primary: rgb(
|
|
2
|
+
--md-sys-color-primary: rgb(11 77 162);
|
|
3
3
|
--md-sys-color-surface-tint: rgb(68 94 145);
|
|
4
4
|
--md-sys-color-on-primary: rgb(255 255 255);
|
|
5
5
|
--md-sys-color-primary-container: rgb(216 226 255);
|
|
6
|
-
--md-sys-color-on-primary-container: rgb(
|
|
7
|
-
--md-sys-color-secondary: rgb(
|
|
6
|
+
--md-sys-color-on-primary-container: rgb(43 70 120);
|
|
7
|
+
--md-sys-color-secondary: rgb(36, 41, 60);
|
|
8
8
|
--md-sys-color-on-secondary: rgb(255 255 255);
|
|
9
|
-
--md-sys-color-secondary-container: rgb(
|
|
10
|
-
--md-sys-color-on-secondary-container: rgb(
|
|
11
|
-
--md-sys-color-tertiary: rgb(
|
|
9
|
+
--md-sys-color-secondary-container: rgb(213 227 255);
|
|
10
|
+
--md-sys-color-on-secondary-container: rgb(36 71 119);
|
|
11
|
+
--md-sys-color-tertiary: rgb(122 79 128);
|
|
12
12
|
--md-sys-color-on-tertiary: rgb(255 255 255);
|
|
13
|
-
--md-sys-color-tertiary-container: rgb(
|
|
14
|
-
--md-sys-color-on-tertiary-container: rgb(
|
|
13
|
+
--md-sys-color-tertiary-container: rgb(254 214 255);
|
|
14
|
+
--md-sys-color-on-tertiary-container: rgb(96 55 103);
|
|
15
15
|
--md-sys-color-error: rgb(186 26 26);
|
|
16
16
|
--md-sys-color-on-error: rgb(255 255 255);
|
|
17
17
|
--md-sys-color-error-container: rgb(255 218 214);
|
|
@@ -23,29 +23,29 @@
|
|
|
23
23
|
--md-sys-color-surface-variant: rgb(225 226 236);
|
|
24
24
|
--md-sys-color-on-surface-variant: rgb(68 71 79);
|
|
25
25
|
--md-sys-color-outline: rgb(117 119 127);
|
|
26
|
-
--md-sys-color-outline-variant: rgb(
|
|
26
|
+
--md-sys-color-outline-variant: rgb(196 198 208);
|
|
27
27
|
--md-sys-color-shadow: rgb(0 0 0);
|
|
28
28
|
--md-sys-color-scrim: rgb(0 0 0);
|
|
29
29
|
--md-sys-color-inverse-surface: rgb(47 48 54);
|
|
30
30
|
--md-sys-color-inverse-on-surface: rgb(240 240 247);
|
|
31
|
-
--md-sys-color-inverse-primary: rgb(
|
|
31
|
+
--md-sys-color-inverse-primary: rgb(173 198 255);
|
|
32
32
|
--md-sys-color-primary-fixed: rgb(216 226 255);
|
|
33
|
-
--md-sys-color-on-primary-fixed: rgb(0 26
|
|
34
|
-
--md-sys-color-primary-fixed-dim: rgb(
|
|
35
|
-
--md-sys-color-on-primary-fixed-variant: rgb(
|
|
36
|
-
--md-sys-color-secondary-fixed: rgb(
|
|
37
|
-
--md-sys-color-on-secondary-fixed: rgb(
|
|
38
|
-
--md-sys-color-secondary-fixed-dim: rgb(
|
|
39
|
-
--md-sys-color-on-secondary-fixed-variant: rgb(
|
|
40
|
-
--md-sys-color-tertiary-fixed: rgb(
|
|
41
|
-
--md-sys-color-on-tertiary-fixed: rgb(
|
|
42
|
-
--md-sys-color-tertiary-fixed-dim: rgb(
|
|
43
|
-
--md-sys-color-on-tertiary-fixed-variant: rgb(
|
|
33
|
+
--md-sys-color-on-primary-fixed: rgb(0 26 65);
|
|
34
|
+
--md-sys-color-primary-fixed-dim: rgb(173 198 255);
|
|
35
|
+
--md-sys-color-on-primary-fixed-variant: rgb(43 70 120);
|
|
36
|
+
--md-sys-color-secondary-fixed: rgb(213 227 255);
|
|
37
|
+
--md-sys-color-on-secondary-fixed: rgb(0 27 60);
|
|
38
|
+
--md-sys-color-secondary-fixed-dim: rgb(167 200 255);
|
|
39
|
+
--md-sys-color-on-secondary-fixed-variant: rgb(36 71 119);
|
|
40
|
+
--md-sys-color-tertiary-fixed: rgb(254 214 255);
|
|
41
|
+
--md-sys-color-on-tertiary-fixed: rgb(48 9 57);
|
|
42
|
+
--md-sys-color-tertiary-fixed-dim: rgb(234 181 238);
|
|
43
|
+
--md-sys-color-on-tertiary-fixed-variant: rgb(96 55 103);
|
|
44
44
|
--md-sys-color-surface-dim: rgb(217 217 224);
|
|
45
45
|
--md-sys-color-surface-bright: rgb(249 249 255);
|
|
46
46
|
--md-sys-color-surface-container-lowest: rgb(255 255 255);
|
|
47
47
|
--md-sys-color-surface-container-low: rgb(243 243 250);
|
|
48
|
-
--md-sys-color-surface-container: rgb(
|
|
49
|
-
--md-sys-color-surface-container-high: rgb(232 231
|
|
48
|
+
--md-sys-color-surface-container: rgb(237 237 244);
|
|
49
|
+
--md-sys-color-surface-container-high: rgb(232 231 238);
|
|
50
50
|
--md-sys-color-surface-container-highest: rgb(226 226 233);
|
|
51
51
|
}
|