On this page
Δομή
Το σύστημα αποτελείται από microservices και διακριτά κομμάτια με σκοπό την ευκολότερη αποσφαλμάτωση και συντηρησιμότητα. Μεταξύ τους οι υπηρεσίες επικοινωνούν κυρίως μέσω REST API. Παρακάτω φαίνεται συνοπτικό διάγραμμα της δομής και του τρόπου συνδεσιμότητας.
Διάγραμμα Ροής
flowchart TD
subgraph Project Stack
subgraph Client
A[Vue.js Frontend]
end
subgraph Backend
B[Node.js Backend]
E[Rust Middleware]
end
F[Python Logger]
end
subgraph Notifications System
G[Ntfy]
end
subgraph Data server
D[(OracleDB)]
L[LDAP]
end
subgraph SSO
C[Keycloak Authenticator]
end
A -->|HTTP Requests| B
A -->|Auth Request| C
B <-->|SQL Queries| D
B -->|JSON Response| A
E -->|Token Validation| C
E -->|Roles and Access| B
B -->|Response logging| F
D -->|User info| E
L -->|User info| E
B -->|Notification trigger| G
G -->|Web Push| A
G -->|Email| Users
Backend
Το σύστημα λειτουργίας του backend οργανώνεται στους παρακάτω φακέλους:
├── __pycache__
│ └── htmltopdf.cpython-311.pyc
├── htmltopdf.py (script δημιουργίας pdf από html κώδικα)
├── LICENSE
├── package-lock.json
├── package.json
├── README.md
└── src
├── assets (συμπληρωματικά αρχεία εικόνων και γραμματοσειράς. Χρησιμεύουν κυρίως για τη δημιουργία pdf)
│ ├── fonts
│ │ └── DejaVuSans.ttf
│ └── images
│ └── hcmrlogo.png
├── controllers (χειριστές, εκτελούν ενέργειες για κάποιο συγκεκριμένο endpoint)
│ ├── attendance.js
│ ├── auth.js
│ ├── generic.js
│ ├── movements.js
│ ├── orderForms.js
│ ├── paymentrequests.js
│ ├── projects.js
│ └── services.js
├── data
│ ├── dailyAllowance.js
│ └── nightRate.js
├── htmlDocTemplates
│ ├── conflict-template.html
│ ├── conflict.js
│ ├── new-user-template.html
│ ├── prdoc.js
│ └── trippdf.js
├── middleware (διαμεσολαβητές αυθεντικοποίησης και logging)
│ ├── auth-service.js
│ └── logger.js
├── queries (περιέχονται οι κλήσεις στη βάση)
│ ├── auth_authorize.sql
│ ├── check_hr_db.sql
│ ├── generic_get_personnel_full.sql
│ ├── list_user_roles.sql
│ ├── of_details.sql
│ ├── of_get_invoice.sql
│ ├── of_get_moves.sql
│ ├── of_get_payreq.sql
│ ├── of_get_projects.sql
│ ├── ofdetails.sql
│ ├── pr_create_request.sql
│ .
│ .
│ .
├── routes
│ ├── debug.js
│ ├── private.js
│ └── public.js
├── server.js
├── services (κλάσεις επικοινωνίας με εξωτερικές μικροϋπηρεσίες)
│ ├── oracledb.js
│ ├── logger.js
│ ├── mariadb.js
│ ├── mounts.js
│ └── notify.js
└── utils (βοηθητικές συναρτήσεις)
├── compareObjects.js
├── conflict-pdf.js
├── filename.js
├── format.js
├── helpers.js
├── pdf.js
└── versioning.jsFrontend
Το σύστημα διεπαφής οργανώνεται στους παρακάτω φακέλους. Το frontend χρησιμοποιεί το θέμα OneUI Vue και για την αναβάθμιση του θέματος πρέπει να ακολουθηθούν οι σχετικές οδηγίες που αναγράφονται από το δημιουργό του.
├── CHANGELOG.md
├── components.d.ts
├── favicon.ico
├── index.html
├── node_modules (βιβλιοθήκες)
├── package.json
├── patches
│ └── vue-dataset+3.5.4.patch
├── public (λογότυπα, γραμματοσειρές, εικόνες)
│ ├── assets
│ │ ├── fonts
│ │ ├── logos
│ │ └── media
│ ├── favicon.ico
│ └── ntfy-sw.js
├── README.md
├── src (βασικός πηγαίος κώδικας)
│ ├── App.vue
│ ├── assets
│ │ └── scss
│ │ ├── custom
│ │ │ ├── _main.scss
│ │ │ └── _variables.scss
│ │ ├── main.scss
│ │ ├── oneui
│ │ .
│ │ .
│ │ .
│ ├── components (μεμονωμένα στοιχεία επαναχρησιμοποιήσιμα)
│ │ ├── Announcements.vue
│ │ ├── BaseBackground.vue
│ │ ├── BaseBlock.vue
│ │ ├── BaseNavigation.vue
│ │ ├── BasePageHeading.vue
│ │ ├── BlockAlert.vue
│ │ ├── Breadcrumbs.vue
│ │ ├── Changelog.vue
│ │ ├── ComingSoon.vue
│ │ ├── ComplexTable.vue
│ │ ├── ContextMenu.vue
│ │ .
│ │ .
│ │ .
│ ├── data (λεξικά, αντιστοιχίσεις κλπ)
│ │ ├── activity.js
│ │ ├── dicts
│ │ │ ├── contacts.json
│ │ │ ├── of-prequest.json
│ │ │ ├── orderform.json
│ │ │ ├── orderforms
│ │ │ │ ├── all.json
│ │ │ │ ├── new.json
│ │ │ │ └── one.json
│ │ │ ├── paymentrequest.json
│ │ │ ├── programs.json
│ │ │ ├── punchcard.json
│ │ │ .
│ │ │ .
│ │ │ .
│ │ ├── icons.js
│ │ ├── mappings
│ │ │ ├── orderform.js
│ │ │ └── trips.js
│ │ ├── menu.js
│ │ ├── notifications.js
│ │ ├── sales.js
│ │ ├── tabs
│ │ │ ├── documents
│ │ │ │ └── all.json
│ │ │ ├── orderforms
│ │ │ │ ├── new.json
│ │ │ │ └── one.json
│ │ │ ├── prequests
│ │ │ │ └── new.json
│ │ │ ├── programs
│ │ │ │ └── one.json
│ │ │ └── trips
│ │ │ └── new.json
│ │ ├── trips
│ │ │ └── helper-blocks.json
│ │ ├── users.js
│ │ └── usersDataset.json
│ ├── directives
│ │ ├── clickOutside.js
│ │ ├── clickRipple.js
│ │ ├── formatDistance.js
│ │ └── priceInput.js
│ ├── layouts (διατάξεις σελίδων)
│ │ ├── BaseLayout.vue
│ │ ├── partials
│ │ │ ├── Footer.vue
│ │ │ ├── Header.vue
│ │ │ ├── Sidebar.vue
│ │ │ └── SideOverlay.vue
│ │ └── variations
│ │ ├── AccessMain.vue
│ │ ├── Backend.vue
│ │ ├── BackendBoxed.vue
│ │ ├── BackendMegaMenu.vue
│ │ ├── BackendSidebarMiniNav.vue
│ │ ├── BackendStarter.vue
│ │ ├── Landing.vue
│ │ └── Simple.vue
│ ├── main.ts (βασική εκκίνηση)
│ ├── router (διαδρομές)
│ │ ├── index.ts
│ │ └── routes.js
│ ├── services (υπηρεσίες)
│ │ ├── admin-api.ts
│ │ ├── api.ts
│ │ └── ntfy.ts
│ ├── stores
│ │ ├── auth.ts
│ │ ├── notifications.ts
│ │ └── template.js
│ ├── types
│ │ ├── auth.ts
│ │ ├── notification.ts
│ │ ├── nums.ts
│ │ └── vue-shim.d.ts
│ ├── utils (βοηθητικές συναρτήσεις)
│ │ ├── fetcher.ts (μηχανισμός κλήσης backend)
│ │ ├── helpers.ts
│ │ ├── notifications.js
│ │ └── versioning.ts
│ ├── views (σελίδες/προβολές)
│ │ ├── admin
│ │ │ └── CreateUser.vue
│ │ ├── contacts
│ │ │ └── All.vue
│ │ ├── Dashboard.vue
│ │ ├── documents
│ │ │ └── All.vue
│ │ ├── errors
│ │ │ ├── 400View.vue
│ │ │ ├── 401View.vue
│ │ │ ├── 403View.vue
│ │ │ ├── 404View.vue
│ │ │ ├── 500View.vue
│ │ │ └── 503View.vue
│ │ ├── Landing.vue
│ │ ├── orderforms
│ │ │ ├── All.vue
│ │ │ ├── New.vue
│ │ │ ├── One.vue
│ │ │ └── tables
│ │ │ ├── Moves.vue
│ │ │ └── PaymentRequests.vue
│ │ ├── prequests
│ │ │ ├── All.vue
│ │ │ ├── New.bak
│ │ │ ├── New.vue
│ │ │ └── One.vue
│ │ ├── profile
│ │ │ └── ProfileDetails.vue
│ │ ├── programs
│ │ │ ├── All.vue
│ │ │ └── One.vue
│ │ ├── punchcard
│ │ │ └── PunchcardView.vue
│ │ ├── services
│ │ │ ├── All.vue
│ │ │ ├── Test.vue
│ │ │ └── users
│ │ │ └── New.vue
│ │ ├── specials
│ │ │ ├── MaintenanceView.vue
│ │ │ └── ServicesAll.vue
│ │ └── trips
│ │ ├── All.vue
│ │ ├── data.js
│ │ ├── forms
│ │ │ ├── TripClearance.vue
│ │ │ ├── TripRequest.vue
│ │ │ └── TripReview.vue
│ │ ├── Moves.vue
│ │ ├── New.vue
│ │ └── One.vue
│ └── vue.d.ts
├── tsconfig.json
├── tsconfig.node.json
├── vite.config.js
└── yarn.lock