@dssp/dkpi 1.0.0-y.0 → 1.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/KPI-STATISTICS-SERVICE.md +233 -0
- package/_index.html +4 -9
- package/assets/helps/index.md +1 -1
- package/assets/images/project-image.png +0 -0
- package/assets/manifest.json +2 -2
- package/config/config.development.js +2 -1
- package/config/config.production.js +2 -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 +58 -54
- package/recalculate-batch.sh +64 -0
- package/recalculate-projects-range.sh +98 -0
- package/schema.graphql +1159 -55
- package/things-factory.config.js +6 -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
- package/dist-client/bootstrap.d.ts +0 -8
- package/dist-client/bootstrap.js +0 -257
- package/dist-client/bootstrap.js.map +0 -1
- package/dist-client/components/kpi-single-boxplot-chart.d.ts +0 -24
- package/dist-client/components/kpi-single-boxplot-chart.js +0 -317
- package/dist-client/components/kpi-single-boxplot-chart.js.map +0 -1
- package/dist-client/components/sv-pagenation-control.d.ts +0 -18
- package/dist-client/components/sv-pagenation-control.js +0 -142
- package/dist-client/components/sv-pagenation-control.js.map +0 -1
- package/dist-client/entries/public/home.d.ts +0 -8
- package/dist-client/entries/public/home.js +0 -97
- package/dist-client/entries/public/home.js.map +0 -1
- package/dist-client/icons/menu-icons.d.ts +0 -11
- package/dist-client/icons/menu-icons.js +0 -126
- package/dist-client/icons/menu-icons.js.map +0 -1
- package/dist-client/index.d.ts +0 -0
- package/dist-client/index.js +0 -2
- package/dist-client/index.js.map +0 -1
- package/dist-client/menu.d.ts +0 -23
- package/dist-client/menu.js +0 -59
- package/dist-client/menu.js.map +0 -1
- package/dist-client/pages/kpi-metric-value/kpi-metric-value-editor-page.d.ts +0 -58
- package/dist-client/pages/kpi-metric-value/kpi-metric-value-editor-page.js +0 -731
- package/dist-client/pages/kpi-metric-value/kpi-metric-value-editor-page.js.map +0 -1
- package/dist-client/pages/kpi-metric-value/kpi-metric-value-importer.d.ts +0 -23
- package/dist-client/pages/kpi-metric-value/kpi-metric-value-importer.js +0 -76
- package/dist-client/pages/kpi-metric-value/kpi-metric-value-importer.js.map +0 -1
- package/dist-client/pages/kpi-metric-value/kpi-metric-value-list-page.d.ts +0 -69
- package/dist-client/pages/kpi-metric-value/kpi-metric-value-list-page.js +0 -385
- package/dist-client/pages/kpi-metric-value/kpi-metric-value-list-page.js.map +0 -1
- package/dist-client/pages/kpi-metric-value/kpi-metric-value-manual-entry-form.d.ts +0 -12
- package/dist-client/pages/kpi-metric-value/kpi-metric-value-manual-entry-form.js +0 -174
- package/dist-client/pages/kpi-metric-value/kpi-metric-value-manual-entry-form.js.map +0 -1
- package/dist-client/pages/kpi-metric-value/kpi-metric-value-manual-entry-page.d.ts +0 -41
- package/dist-client/pages/kpi-metric-value/kpi-metric-value-manual-entry-page.js +0 -191
- package/dist-client/pages/kpi-metric-value/kpi-metric-value-manual-entry-page.js.map +0 -1
- package/dist-client/pages/kpi-value/kpi-value-importer.d.ts +0 -23
- package/dist-client/pages/kpi-value/kpi-value-importer.js +0 -93
- package/dist-client/pages/kpi-value/kpi-value-importer.js.map +0 -1
- package/dist-client/pages/kpi-value/kpi-value-list-page.d.ts +0 -72
- package/dist-client/pages/kpi-value/kpi-value-list-page.js +0 -465
- package/dist-client/pages/kpi-value/kpi-value-list-page.js.map +0 -1
- package/dist-client/pages/project-complete-tabs/pc-tab1-plan.d.ts +0 -13
- package/dist-client/pages/project-complete-tabs/pc-tab1-plan.js +0 -248
- package/dist-client/pages/project-complete-tabs/pc-tab1-plan.js.map +0 -1
- package/dist-client/pages/project-complete-tabs/pc-tab2-rating.d.ts +0 -10
- package/dist-client/pages/project-complete-tabs/pc-tab2-rating.js +0 -229
- package/dist-client/pages/project-complete-tabs/pc-tab2-rating.js.map +0 -1
- package/dist-client/pages/project-complete-tabs/pc-tab3-upload.d.ts +0 -12
- package/dist-client/pages/project-complete-tabs/pc-tab3-upload.js +0 -213
- package/dist-client/pages/project-complete-tabs/pc-tab3-upload.js.map +0 -1
- package/dist-client/pages/sv-project-complete.d.ts +0 -22
- package/dist-client/pages/sv-project-complete.js +0 -213
- package/dist-client/pages/sv-project-complete.js.map +0 -1
- package/dist-client/pages/sv-project-completed-list.d.ts +0 -24
- package/dist-client/pages/sv-project-completed-list.js +0 -357
- package/dist-client/pages/sv-project-completed-list.js.map +0 -1
- package/dist-client/pages/sv-project-detail.d.ts +0 -13
- package/dist-client/pages/sv-project-detail.js +0 -494
- package/dist-client/pages/sv-project-detail.js.map +0 -1
- package/dist-client/pages/sv-project-list.d.ts +0 -157
- package/dist-client/pages/sv-project-list.js +0 -431
- package/dist-client/pages/sv-project-list.js.map +0 -1
- package/dist-client/pages/sv-user-management.d.ts +0 -5
- package/dist-client/pages/sv-user-management.js +0 -219
- package/dist-client/pages/sv-user-management.js.map +0 -1
- package/dist-client/route.d.ts +0 -1
- package/dist-client/route.js +0 -31
- package/dist-client/route.js.map +0 -1
- package/dist-client/shared/complete-api.d.ts +0 -5
- package/dist-client/shared/complete-api.js +0 -125
- package/dist-client/shared/complete-api.js.map +0 -1
- package/dist-client/shared/func.d.ts +0 -2
- package/dist-client/shared/func.js +0 -22
- package/dist-client/shared/func.js.map +0 -1
- package/dist-client/themes/dark.css +0 -51
- package/dist-client/themes/light.css +0 -51
- package/dist-client/tsconfig.tsbuildinfo +0 -1
- package/dist-client/viewparts/menu-tools.d.ts +0 -54
- package/dist-client/viewparts/menu-tools.js +0 -503
- package/dist-client/viewparts/menu-tools.js.map +0 -1
- package/dist-client/viewparts/user-circle.d.ts +0 -5
- package/dist-client/viewparts/user-circle.js +0 -26
- package/dist-client/viewparts/user-circle.js.map +0 -1
- package/dist-server/index.d.ts +0 -2
- package/dist-server/index.js +0 -6
- package/dist-server/index.js.map +0 -1
- package/dist-server/migrations/index.d.ts +0 -1
- package/dist-server/migrations/index.js +0 -12
- package/dist-server/migrations/index.js.map +0 -1
- package/dist-server/scripts/calculate-kpi-scores.d.ts +0 -10
- package/dist-server/scripts/calculate-kpi-scores.js +0 -271
- package/dist-server/scripts/calculate-kpi-scores.js.map +0 -1
- package/dist-server/scripts/load-grade-data-migration.d.ts +0 -10
- package/dist-server/scripts/load-grade-data-migration.js +0 -194
- package/dist-server/scripts/load-grade-data-migration.js.map +0 -1
- package/dist-server/scripts/propagate-parent-kpi-values.d.ts +0 -10
- package/dist-server/scripts/propagate-parent-kpi-values.js +0 -440
- package/dist-server/scripts/propagate-parent-kpi-values.js.map +0 -1
- package/dist-server/service/index.d.ts +0 -6
- package/dist-server/service/index.js +0 -21
- package/dist-server/service/index.js.map +0 -1
- package/dist-server/service/kpi-metric-value/index.d.ts +0 -4
- package/dist-server/service/kpi-metric-value/index.js +0 -8
- package/dist-server/service/kpi-metric-value/index.js.map +0 -1
- package/dist-server/service/kpi-metric-value/kpi-metric-value-mutation.d.ts +0 -7
- package/dist-server/service/kpi-metric-value/kpi-metric-value-mutation.js +0 -112
- package/dist-server/service/kpi-metric-value/kpi-metric-value-mutation.js.map +0 -1
- package/dist-server/service/kpi-metric-value/kpi-metric-value-query.d.ts +0 -7
- package/dist-server/service/kpi-metric-value/kpi-metric-value-query.js +0 -47
- package/dist-server/service/kpi-metric-value/kpi-metric-value-query.js.map +0 -1
- package/dist-server/service/kpi-value/index.d.ts +0 -3
- package/dist-server/service/kpi-value/index.js +0 -7
- package/dist-server/service/kpi-value/index.js.map +0 -1
- package/dist-server/service/kpi-value/kpi-value-query.d.ts +0 -7
- package/dist-server/service/kpi-value/kpi-value-query.js +0 -47
- package/dist-server/service/kpi-value/kpi-value-query.js.map +0 -1
- package/dist-server/tsconfig.tsbuildinfo +0 -1
package/openapi/unstable.yaml
CHANGED
|
@@ -2,9 +2,9 @@ openapi: 3.0.0
|
|
|
2
2
|
info:
|
|
3
3
|
description: >
|
|
4
4
|
For the latest release information please check our [release notes](https://developer.dssp.com/release_notes).
|
|
5
|
-
The Digital Digital KPI
|
|
5
|
+
The Digital Digital platform-based KPI Navigator API exposes integrations endpoint and related functions.
|
|
6
6
|
version: 'unstable'
|
|
7
|
-
title: 'Digital Digital KPI
|
|
7
|
+
title: 'Digital Digital platform-based KPI Navigator'
|
|
8
8
|
termsOfService: 'https://dssp.com/terms/'
|
|
9
9
|
contact:
|
|
10
10
|
email: 'heartyoh@hatiolab.com'
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dssp/dkpi",
|
|
3
|
-
"version": "1.0.0
|
|
3
|
+
"version": "1.0.0",
|
|
4
4
|
"main": "dist-server/index.js",
|
|
5
5
|
"browser": "dist-client/index.js",
|
|
6
6
|
"things-factory": true,
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
},
|
|
18
18
|
"scripts": {
|
|
19
19
|
"serve": "things-factory dkpi",
|
|
20
|
-
"serve:dev": "npm run build:server && concurrently -k -r \"npm run build:client:watch\" \"things-factory-dev dkpi\"",
|
|
20
|
+
"serve:dev": "npm run build:server && concurrently -k -r \"npm run build:client:watch\" \"things-factory-dev dkpi --webpack ../../webpack.config.dev.js\"",
|
|
21
21
|
"copy:files": "copyfiles -e \"./client/**/*.{ts,js,json}\" -u 1 \"./client/**/*\" dist-client",
|
|
22
22
|
"build": "npm run build:server && npm run build:client",
|
|
23
23
|
"build:client": "npm run clean:client && npm run copy:files && tsc --p ./client/tsconfig.json",
|
|
@@ -48,60 +48,64 @@
|
|
|
48
48
|
"docker:push": "docker image push hatiolab/dkpi:latest && docker image push hatiolab/dkpi:$npm_package_version"
|
|
49
49
|
},
|
|
50
50
|
"dependencies": {
|
|
51
|
-
"@dssp/
|
|
52
|
-
"@
|
|
53
|
-
"@
|
|
54
|
-
"@
|
|
55
|
-
"@operato/
|
|
56
|
-
"@operato/
|
|
57
|
-
"@operato/scene-
|
|
58
|
-
"@operato/scene-
|
|
59
|
-
"@operato/scene-
|
|
60
|
-
"@operato/scene-
|
|
61
|
-
"@operato/scene-
|
|
62
|
-
"@operato/scene-
|
|
63
|
-
"@operato/scene-
|
|
64
|
-
"@operato/scene-
|
|
65
|
-
"@operato/scene-
|
|
66
|
-
"@operato/scene-
|
|
67
|
-
"@operato/scene-
|
|
68
|
-
"@operato/scene-
|
|
69
|
-
"@operato/scene-
|
|
70
|
-
"@operato/scene-
|
|
71
|
-
"@operato/scene-
|
|
72
|
-
"@operato/scene-
|
|
73
|
-
"@
|
|
74
|
-
"@
|
|
75
|
-
"@things-factory/
|
|
76
|
-
"@things-factory/
|
|
77
|
-
"@things-factory/
|
|
78
|
-
"@things-factory/
|
|
79
|
-
"@things-factory/
|
|
80
|
-
"@things-factory/
|
|
81
|
-
"@things-factory/
|
|
82
|
-
"@things-factory/
|
|
83
|
-
"@things-factory/
|
|
84
|
-
"@things-factory/
|
|
85
|
-
"@things-factory/
|
|
86
|
-
"@things-factory/
|
|
87
|
-
"@things-factory/
|
|
88
|
-
"@things-factory/
|
|
89
|
-
"@things-factory/
|
|
90
|
-
"@things-factory/
|
|
91
|
-
"@things-factory/
|
|
92
|
-
"@things-factory/
|
|
93
|
-
"@things-factory/
|
|
94
|
-
"@things-factory/
|
|
95
|
-
"@things-factory/
|
|
96
|
-
"@things-factory/
|
|
97
|
-
"@things-factory/
|
|
98
|
-
"@things-factory/
|
|
99
|
-
"@things-factory/
|
|
51
|
+
"@dssp/integration-allbaro": "^1.0.0",
|
|
52
|
+
"@dssp/integration-kiscon": "^1.0.0",
|
|
53
|
+
"@dssp/project": "^1.0.0",
|
|
54
|
+
"@material/web": "^2.4.0",
|
|
55
|
+
"@operato/chart": "^10.0.0",
|
|
56
|
+
"@operato/gantt": "^10.0.0",
|
|
57
|
+
"@operato/scene-auth": "^10.0.0",
|
|
58
|
+
"@operato/scene-chartjs": "^10.0.0",
|
|
59
|
+
"@operato/scene-clock": "^10.0.0",
|
|
60
|
+
"@operato/scene-data-transform": "^10.0.0",
|
|
61
|
+
"@operato/scene-form": "^10.0.0",
|
|
62
|
+
"@operato/scene-gauge": "^10.0.0",
|
|
63
|
+
"@operato/scene-grist": "^10.0.0",
|
|
64
|
+
"@operato/scene-half-roundrect": "^10.0.0",
|
|
65
|
+
"@operato/scene-image-slider": "^10.0.0",
|
|
66
|
+
"@operato/scene-integration": "^10.0.0",
|
|
67
|
+
"@operato/scene-legend": "^10.0.0",
|
|
68
|
+
"@operato/scene-news-ticker": "^10.0.0",
|
|
69
|
+
"@operato/scene-progressbar": "^10.0.0",
|
|
70
|
+
"@operato/scene-random": "^10.0.0",
|
|
71
|
+
"@operato/scene-switch": "^10.0.0",
|
|
72
|
+
"@operato/scene-tab": "^10.0.0",
|
|
73
|
+
"@operato/scene-table": "^10.0.0",
|
|
74
|
+
"@operato/scene-timer": "^10.0.0",
|
|
75
|
+
"@things-factory/api": "^10.0.0",
|
|
76
|
+
"@things-factory/apptool-base": "^10.0.0",
|
|
77
|
+
"@things-factory/apptool-ui": "^10.0.0",
|
|
78
|
+
"@things-factory/auth-base": "^10.0.0",
|
|
79
|
+
"@things-factory/auth-ui": "^10.0.0",
|
|
80
|
+
"@things-factory/board-service": "^10.0.0",
|
|
81
|
+
"@things-factory/board-ui": "^10.0.0",
|
|
82
|
+
"@things-factory/code-ui": "^10.0.0",
|
|
83
|
+
"@things-factory/context-ui": "^10.0.0",
|
|
84
|
+
"@things-factory/dashboard": "^10.0.0",
|
|
85
|
+
"@things-factory/dataset": "^10.0.0",
|
|
86
|
+
"@things-factory/evaluation": "^10.0.0",
|
|
87
|
+
"@things-factory/export-ui": "^10.0.0",
|
|
88
|
+
"@things-factory/help": "^10.0.0",
|
|
89
|
+
"@things-factory/i18n-base": "^10.0.0",
|
|
90
|
+
"@things-factory/integration-base": "^10.0.0",
|
|
91
|
+
"@things-factory/integration-data-go-kr": "^10.0.0",
|
|
92
|
+
"@things-factory/integration-juso": "^10.0.0",
|
|
93
|
+
"@things-factory/integration-ui": "^10.0.0",
|
|
94
|
+
"@things-factory/kpi": "^10.0.0",
|
|
95
|
+
"@things-factory/lite-menu": "^10.0.0",
|
|
96
|
+
"@things-factory/more-base": "^10.0.0",
|
|
97
|
+
"@things-factory/more-ui": "^10.0.0",
|
|
98
|
+
"@things-factory/notification": "^10.0.0",
|
|
99
|
+
"@things-factory/resource-ui": "^10.0.0",
|
|
100
|
+
"@things-factory/setting-base": "^10.0.0",
|
|
101
|
+
"@things-factory/setting-ui": "^10.0.0",
|
|
102
|
+
"@things-factory/shell": "^10.0.0",
|
|
103
|
+
"@things-factory/system": "^10.0.0",
|
|
100
104
|
"moment": "2.30.1",
|
|
101
|
-
"puppeteer": "^24.
|
|
105
|
+
"puppeteer": "^24.39.0"
|
|
102
106
|
},
|
|
103
107
|
"devDependencies": {
|
|
104
|
-
"@things-factory/builder": "^
|
|
108
|
+
"@things-factory/builder": "^10.0.0"
|
|
105
109
|
},
|
|
106
|
-
"gitHead": "
|
|
110
|
+
"gitHead": "a41eaae7a2e1651af65e8f285e95073b921b9c91"
|
|
107
111
|
}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
|
|
3
|
+
# Recalculate KPI values for projects in a specified range (optimized batch mode)
|
|
4
|
+
# Usage: ./recalculate-batch.sh <from> <to>
|
|
5
|
+
# Example: ./recalculate-batch.sh 1 100
|
|
6
|
+
|
|
7
|
+
if [ "$#" -ne 2 ]; then
|
|
8
|
+
echo "Usage: $0 <from> <to>"
|
|
9
|
+
echo "Example: $0 1 100"
|
|
10
|
+
exit 1
|
|
11
|
+
fi
|
|
12
|
+
|
|
13
|
+
FROM=$1
|
|
14
|
+
TO=$2
|
|
15
|
+
|
|
16
|
+
if ! [[ "$FROM" =~ ^[0-9]+$ ]] || ! [[ "$TO" =~ ^[0-9]+$ ]]; then
|
|
17
|
+
echo "Error: Both FROM and TO must be numbers"
|
|
18
|
+
exit 1
|
|
19
|
+
fi
|
|
20
|
+
|
|
21
|
+
if [ "$FROM" -gt "$TO" ]; then
|
|
22
|
+
echo "Error: FROM ($FROM) must be less than or equal to TO ($TO)"
|
|
23
|
+
exit 1
|
|
24
|
+
fi
|
|
25
|
+
|
|
26
|
+
echo "========================================="
|
|
27
|
+
echo "KPI Batch Recalculation Script"
|
|
28
|
+
echo "========================================="
|
|
29
|
+
echo "Range: 프로젝트 - $(printf '%05d' $FROM) to 프로젝트 - $(printf '%05d' $TO)"
|
|
30
|
+
echo ""
|
|
31
|
+
|
|
32
|
+
# Build SQL to get project IDs
|
|
33
|
+
SQL="SELECT id FROM projects WHERE name ~ '프로젝트.*[0-9]{5}\$' AND "
|
|
34
|
+
SQL+="CAST(SUBSTRING(name FROM '[0-9]{5}\$') AS INTEGER) BETWEEN $FROM AND $TO "
|
|
35
|
+
SQL+="ORDER BY CAST(SUBSTRING(name FROM '[0-9]{5}\$') AS INTEGER);"
|
|
36
|
+
|
|
37
|
+
# Get project IDs from database
|
|
38
|
+
echo "Fetching project IDs from database..."
|
|
39
|
+
PROJECT_IDS=$(PGPASSWORD='hatioLAB1008' psql -h 127.0.0.1 -U postgres -d dssp -t -c "$SQL" | tr -d ' ' | tr '\n' ',')
|
|
40
|
+
|
|
41
|
+
if [ -z "$PROJECT_IDS" ]; then
|
|
42
|
+
echo "No projects found in the specified range"
|
|
43
|
+
exit 1
|
|
44
|
+
fi
|
|
45
|
+
|
|
46
|
+
# Remove trailing comma
|
|
47
|
+
PROJECT_IDS=${PROJECT_IDS%,}
|
|
48
|
+
|
|
49
|
+
# Count projects
|
|
50
|
+
PROJECT_COUNT=$(echo "$PROJECT_IDS" | tr ',' '\n' | wc -l | tr -d ' ')
|
|
51
|
+
|
|
52
|
+
echo "Found $PROJECT_COUNT projects"
|
|
53
|
+
echo "========================================="
|
|
54
|
+
echo ""
|
|
55
|
+
echo "Starting batch processing with single initialization..."
|
|
56
|
+
echo ""
|
|
57
|
+
|
|
58
|
+
# Run the batch recalculation with --orgs option
|
|
59
|
+
npm run propagate-parent-kpi-values -- --orgs "$PROJECT_IDS"
|
|
60
|
+
|
|
61
|
+
echo ""
|
|
62
|
+
echo "========================================="
|
|
63
|
+
echo "Batch Recalculation Complete!"
|
|
64
|
+
echo "========================================="
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
|
|
3
|
+
# Recalculate KPI values for projects in a specified range
|
|
4
|
+
# Usage: ./recalculate-projects-range.sh <from> <to>
|
|
5
|
+
# Example: ./recalculate-projects-range.sh 1 100
|
|
6
|
+
|
|
7
|
+
if [ "$#" -ne 2 ]; then
|
|
8
|
+
echo "Usage: $0 <from> <to>"
|
|
9
|
+
echo "Example: $0 1 100"
|
|
10
|
+
exit 1
|
|
11
|
+
fi
|
|
12
|
+
|
|
13
|
+
FROM=$1
|
|
14
|
+
TO=$2
|
|
15
|
+
|
|
16
|
+
if ! [[ "$FROM" =~ ^[0-9]+$ ]] || ! [[ "$TO" =~ ^[0-9]+$ ]]; then
|
|
17
|
+
echo "Error: Both FROM and TO must be numbers"
|
|
18
|
+
exit 1
|
|
19
|
+
fi
|
|
20
|
+
|
|
21
|
+
if [ "$FROM" -gt "$TO" ]; then
|
|
22
|
+
echo "Error: FROM ($FROM) must be less than or equal to TO ($TO)"
|
|
23
|
+
exit 1
|
|
24
|
+
fi
|
|
25
|
+
|
|
26
|
+
echo "========================================="
|
|
27
|
+
echo "KPI Recalculation Script"
|
|
28
|
+
echo "========================================="
|
|
29
|
+
echo "Range: 프로젝트 - $(printf '%05d' $FROM) to 프로젝트 - $(printf '%05d' $TO)"
|
|
30
|
+
echo ""
|
|
31
|
+
|
|
32
|
+
# Build SQL to get project IDs
|
|
33
|
+
SQL="SELECT id FROM projects WHERE name ~ '프로젝트.*[0-9]{5}\$' AND "
|
|
34
|
+
SQL+="CAST(SUBSTRING(name FROM '[0-9]{5}\$') AS INTEGER) BETWEEN $FROM AND $TO "
|
|
35
|
+
SQL+="ORDER BY CAST(SUBSTRING(name FROM '[0-9]{5}\$') AS INTEGER);"
|
|
36
|
+
|
|
37
|
+
# Get project IDs from database
|
|
38
|
+
echo "Fetching project IDs from database..."
|
|
39
|
+
PROJECT_IDS=$(PGPASSWORD='hatioLAB1008' psql -h 127.0.0.1 -U postgres -d dssp -t -c "$SQL" | tr -d ' ')
|
|
40
|
+
|
|
41
|
+
if [ -z "$PROJECT_IDS" ]; then
|
|
42
|
+
echo "No projects found in the specified range"
|
|
43
|
+
exit 1
|
|
44
|
+
fi
|
|
45
|
+
|
|
46
|
+
# Convert to array
|
|
47
|
+
IFS=$'\n' read -rd '' -a PROJECT_ARRAY <<<"$PROJECT_IDS"
|
|
48
|
+
TOTAL=${#PROJECT_ARRAY[@]}
|
|
49
|
+
|
|
50
|
+
echo "Found $TOTAL projects"
|
|
51
|
+
echo "========================================="
|
|
52
|
+
echo ""
|
|
53
|
+
|
|
54
|
+
SUCCESS=0
|
|
55
|
+
FAILED=0
|
|
56
|
+
COUNTER=0
|
|
57
|
+
|
|
58
|
+
# Process each project
|
|
59
|
+
for PROJECT_ID in "${PROJECT_ARRAY[@]}"; do
|
|
60
|
+
# Skip empty lines
|
|
61
|
+
if [ -z "$PROJECT_ID" ]; then
|
|
62
|
+
continue
|
|
63
|
+
fi
|
|
64
|
+
|
|
65
|
+
COUNTER=$((COUNTER + 1))
|
|
66
|
+
|
|
67
|
+
# Get project name for logging
|
|
68
|
+
PROJECT_NAME=$(PGPASSWORD='hatioLAB1008' psql -h 127.0.0.1 -U postgres -d dssp -t -c "SELECT name FROM projects WHERE id = '$PROJECT_ID';" | tr -d ' ')
|
|
69
|
+
|
|
70
|
+
echo "[$COUNTER/$TOTAL] Processing: $PROJECT_NAME"
|
|
71
|
+
echo " ID: $PROJECT_ID"
|
|
72
|
+
|
|
73
|
+
# Run the recalculation script
|
|
74
|
+
if npm run propagate-parent-kpi-values -- --org "$PROJECT_ID" > "/tmp/kpi-recalc-$PROJECT_ID.log" 2>&1; then
|
|
75
|
+
SUCCESS=$((SUCCESS + 1))
|
|
76
|
+
echo " ✅ SUCCESS"
|
|
77
|
+
# Clean up log file on success
|
|
78
|
+
rm -f "/tmp/kpi-recalc-$PROJECT_ID.log"
|
|
79
|
+
else
|
|
80
|
+
FAILED=$((FAILED + 1))
|
|
81
|
+
echo " ❌ FAILED - Check log: /tmp/kpi-recalc-$PROJECT_ID.log"
|
|
82
|
+
fi
|
|
83
|
+
echo ""
|
|
84
|
+
done
|
|
85
|
+
|
|
86
|
+
echo ""
|
|
87
|
+
echo "========================================="
|
|
88
|
+
echo "Recalculation Complete!"
|
|
89
|
+
echo "========================================="
|
|
90
|
+
echo "Total: $TOTAL"
|
|
91
|
+
echo "Success: $SUCCESS"
|
|
92
|
+
echo "Failed: $FAILED"
|
|
93
|
+
echo "========================================="
|
|
94
|
+
|
|
95
|
+
if [ $FAILED -gt 0 ]; then
|
|
96
|
+
echo ""
|
|
97
|
+
echo "Failed project logs are available in /tmp/kpi-recalc-*.log"
|
|
98
|
+
fi
|