Namen: Storitev Spring Boot 3 / Java 21 povezuje Eggos z odsotnostmi SIJ Špica. Po urniku preverja odsotnosti zaposlenih, jih poveže z zapisi v
PRODUCTION.SUBJECTin samodejno prekliče pripadajoča prihodnja oziroma prednaročena naročila prehrane vPRODUCTION.GASTROORDERTRANS.
Varnost: Gesel, API-ključev in drugih skrivnosti ne zapisujte v wiki ali distribucijski paket. Uporabite zaščitene konfiguracijske datoteke oziroma okoljske spremenljivke z omejenimi pravicami.
SIJ_DRY_RUN=true.SIJ_DRY_RUN=false in vključite urnik.Naslednje poti so vezane na uporabnika in interno okolje.
ssh://matevz@172.20.10.30:1022/dat/eggos/git/EggAbsenceSync.git
git clone ssh://matevz@172.20.10.30:1022/dat/eggos/git/EggAbsenceSync.git
mvn -version mora pri Java version prikazati različico 21.JAVA_HOME na JDK 21.systemd,https://eggosapi.sij.si:5588,EGGOS_T,sudo za namestitveni skript.Namestitveni skript ustvari sistemskega uporabnika, mapo aplikacije in enoto systemd.
export JAVA_HOME=/usr/lib/jvm/java-21-openjdk-amd64
export PATH="$JAVA_HOME/bin:$PATH"
git clone ssh://matevz@172.20.10.30:1022/dat/eggos/git/EggAbsenceSync.git
cd EggAbsenceSync
mvn clean package
Rezultat je samostojna datoteka target/EggAbsenceSync.jar, ki vključuje tudi potrebne odvisnosti, na primer gonilnik DB2.
Samo testi:
mvn test
V paket vključite izdelani JAR, vzorčne konfiguracije, enoto systemd in dokumentacijo. Struktura posamezne izdaje:
eggos-sij-absence-sync/
├── EggAbsenceSync.jar
├── README.md
├── DEPLOY.md
├── scripts/install-systemd.sh
├── systemd/EggAbsenceSync.service
├── systemd/EggAbsenceSync.env.example
├── runtime/hikari.properties.example
├── runtime/sij.properties.example
├── runtime/mail.properties.example
├── runtime/eggos-absence-sync.properties.example
└── docs/application-prod-example.yml
mkdir -p dist/eggos-sij-absence-sync/{systemd,scripts,runtime,docs}
cp target/EggAbsenceSync.jar dist/eggos-sij-absence-sync/
cp README.md DEPLOY.md dist/eggos-sij-absence-sync/
cp systemd/EggAbsenceSync.service systemd/EggAbsenceSync.env.example dist/eggos-sij-absence-sync/systemd/
cp scripts/install-systemd.sh dist/eggos-sij-absence-sync/scripts/
cp runtime/*.properties.example dist/eggos-sij-absence-sync/runtime/
cp docs/application-prod-example.yml dist/eggos-sij-absence-sync/docs/
chmod +x dist/eggos-sij-absence-sync/scripts/install-systemd.sh
cd dist
zip -r "eggos-sij-absence-sync-<RAZLIČICA>.zip" eggos-sij-absence-sync
Vrednost <RAZLIČICA> zamenjajte z različico iz pom.xml, na primer 0.1.0-SNAPSHOT, oziroma z oznako izdaje.
ftp://matevz@ftp.eggos.si/Software Version/eggos/EggAbsenceSync/
Dogovor za poimenovanje:
eggos-sij-absence-sync-<RAZLIČICA>.zip
Vsako novo različico naložite kot novo datoteko. Obstoječih paketov ne prepisujte, saj mora biti za vsak strežnik mogoče ugotoviti natančno uporabljeno izdajo.
Aplikacija, konfiguracija in dnevniki so v /opt/EggAbsenceSync/. Enota systemd je v /etc/systemd/system/.
unzip eggos-sij-absence-sync-<RAZLIČICA>.zip
cd eggos-sij-absence-sync
chmod +x scripts/install-systemd.sh
./scripts/install-systemd.sh EggAbsenceSync.jar
Skript ustvari:
eggos,/opt/EggAbsenceSync/,.properties in mapo logs/,/etc/systemd/system/EggAbsenceSync.service.Obstoječe konfiguracijske datoteke se ne prepišejo. Storitev je omogočena, vendar se še ne zažene.
sudo systemctl start EggAbsenceSync
journalctl -u EggAbsenceSync -f
systemctl status EggAbsenceSync
curl http://localhost:8095/actuator/health
sudo systemctl stop EggAbsenceSync
sudo cp EggAbsenceSync.jar /opt/EggAbsenceSync/EggAbsenceSync.jar
sudo systemctl start EggAbsenceSync
Obstoječe datoteke .properties in izbirna datoteka .env ostanejo nespremenjene; zamenja se samo JAR.
Konfiguracijo lahko nastavite:
.properties v /opt/EggAbsenceSync/,application.properties ali application.yml,/opt/EggAbsenceSync/EggAbsenceSync.env.| Spremenljivka | Privzeta vrednost | Pomen |
|---|---|---|
EGGOS_DB_URL |
jdbc:db2://172.20.10.51:50000/EGGOS_T |
Obvezno preverite – povezava JDBC do DB2 |
EGGOS_DB_USERNAME |
db2inst1 |
Obvezno nastavite – uporabnik DB2 |
EGGOS_DB_PASSWORD |
prazno | Obvezno nastavite – geslo DB2 |
EGGOS_DB_POOL_SIZE |
5 |
Največja velikost Hikari poola |
| Spremenljivka | Privzeta vrednost | Pomen |
|---|---|---|
SIJ_API_BASE_URL |
https://eggosapi.sij.si:5588 |
Naslov SIJ API |
SIJ_ALL_ABSENCES_PATH |
/v1/absences |
Pot za vse odsotnosti |
SIJ_EMPLOYEE_ABSENCES_PATH |
/v1/employees/{employeeNumber}/absences |
Pot za odsotnosti zaposlenega |
SIJ_AUTH_TYPE |
API_KEY |
NONE, BASIC, BEARER ali API_KEY |
SIJ_API_KEY_HEADER |
X-API-Key |
Ime glave za API-ključ |
SIJ_API_KEY |
prazno | Obvezno nastavite – vrednost API-ključa |
SIJ_USERNAME / SIJ_PASSWORD |
prazno | Uporabi se pri SIJ_AUTH_TYPE=BASIC |
SIJ_BEARER_TOKEN |
prazno | Uporabi se pri SIJ_AUTH_TYPE=BEARER |
SIJ_CONNECT_TIMEOUT |
PT5S |
Časovna omejitev povezovanja |
SIJ_REQUEST_TIMEOUT |
PT30S |
Časovna omejitev zahteve |
SIJ_RETRY_MAX_ATTEMPTS |
3 |
Število ponovnih poskusov |
SIJ_RETRY_BACKOFF |
PT2S |
Premor med poskusi |
| Spremenljivka | Privzeta vrednost | Pomen |
|---|---|---|
SIJ_SCHEDULER_ENABLED |
true |
Vklopi ali izklopi urnik |
SIJ_SCHEDULER_CRONS |
0 55 7 ? * *;0 40 8 ? * *;0 0 15 ? * *;0 50 16 ? * * |
Časi izvajanja: 07:55, 08:40, 15:00 in 16:50 |
SIJ_SCHEDULER_CRON |
0 55 7 ? * * |
Rezervni enojni izraz |
SIJ_SCHEDULER_ZONE |
Europe/Ljubljana |
Časovni pas |
SIJ_RUN_ON_STARTUP |
false |
Enkratni zagon ob zagonu aplikacije |
Ta pravila ustrezajo pravilom, potrjenim s SIJ 10. 7. 2026. Spreminjajte jih samo ob spremembi poslovnih pravil.
| Spremenljivka | Privzeta vrednost | Pomen |
|---|---|---|
SIJ_USE_EVENT_ID_MATCH |
true |
Ujemanje po številčnem eventId |
SIJ_CANCELABLE_EVENT_IDS |
20,35,36,101,102,104,105,106,109,125 |
Dogodki, ki sprožijo preklic prehrane |
SIJ_CANCELABLE_NAME_TOKENS |
10 potrjenih slovenskih nazivov | Rezervno ujemanje po nazivih |
SIJ_DRY_RUN |
true |
Samo branje in beleženje brez preklica |
SIJ_SYS_ZONES |
52 |
Obseg SYS_ZONE v DB2 |
SIJ_ALLOWED_EMPLOYEE_NUMBERS |
prazno | Izbirni seznam dovoljenih zaposlenih |
SIJ_ALLOWED_COMPANY_NAME_TOKENS |
prazno | Izbirni filter podjetij |
SIJ_MAX_FUTURE_DAYS |
31 |
Največje število dni v prihodnost |
SIJ_SKIP_PAST_DATES |
true |
Ne preklicuj za pretekle datume |
SIJ_REPORT_PAST_UNHANDLED |
true |
Poročaj o neobdelanih preteklih naročilih |
SIJ_PROCESS_CURRENT_DAY |
false |
Privzeto prezri trenutni dan |
SIJ_CANCEL_TODAY_UNTIL |
08:00 |
Rok za preklic današnje prehrane |
SIJ_CANCEL_NEXT_WORKING_DAY_UNTIL |
17:00 |
Rok za preklic naslednjega delovnega dne |
SIJ_ORDER_CHUNK_SIZE |
200 |
Velikost serije poizvedb |
SIJ_MAX_RESULT_MESSAGES |
250 |
Največ sporočil v e-poštnem poročilu |
| Spremenljivka | Privzeta vrednost | Pomen |
|---|---|---|
EGGOS_ORDER_CANCELLATION_ENABLED |
true |
Glavno stikalo za spremembe v GASTROORDERTRANS |
EGGOS_CANCELLATION_SYS_HANDLER |
SIJ_ABSENCE_SYNC |
Vrednost SYS_HANDLER ob preklicu |
EGGOS_CANCELLATION_SYS_USER |
EggAbsenceSync |
Vrednost SYS_USER za sledljivost |
Podvojeni preklic preprečujeta zastavici GOTR_FLAG_CANCELLED in GOTR_FLAG_TAKEN. Dodatna revizijska tabela ni potrebna.
| Spremenljivka | Privzeta vrednost | Pomen |
|---|---|---|
EGGOS_MAIL_REPORT_ENABLED |
false |
Vklop e-poštnih poročil |
MAIL_SMTP_HOST / MAIL_SMTP_PORT |
prazno / 465 |
Strežnik SMTP; za 587 nastavite tudi MAIL_SMTP_SSL_ENABLE=false |
EMAIL_USERNAME / EMAIL_PASSWORD |
prazno | Prijava SMTP |
EGGOS_MAIL_FROM |
import_errors@eggos.si |
Naslov pošiljatelja |
MAIL_RECIPIENTS_TO / _CC / _BCC |
prazno | Prejemniki poročila |
EGGOS_MAIL_API_FAILURE_TO / _CC / _BCC |
prazno | Prejemniki opozorila ob nedosegljivem API |
EGGOS_MAIL_SEND_EMPTY_SUCCESS |
false |
Pošlji poročilo tudi brez dogodkov |
EGGOS_MAIL_SEND_ON_ERRORS |
true |
Pošlji poročilo ob napakah |
EGGOS_MAIL_SUBJECT_PREFIX |
Eggos SIJ absence sync |
Predpona zadeve |
EGGOS_MAIL_SIGNATURE |
Lep pozdrav,\nEggos Team |
Podpis poročila |
| Spremenljivka | Privzeta vrednost | Pomen |
|---|---|---|
SERVER_PORT |
8095 |
Vrata HTTP |
SIJ_MANUAL_ENDPOINT_ENABLED |
false |
Omogoči POST /internal/sij/sync; samo za zaščiten notranji dostop |
LOG_PATH |
./logs |
Mapa dnevnikov, običajno /opt/EggAbsenceSync/logs |
EGGOS_DB_URL, EGGOS_DB_USERNAME, EGGOS_DB_PASSWORD in SIJ_API_KEY.SIJ_DRY_RUN=true.SIJ_SCHEDULER_ENABLED=false in SIJ_RUN_ON_STARTUP=true.journalctl -u EggAbsenceSync -f.SUBJECT.SUBJ_REGISTRATIONNUMBER in preslikavo v GASTROORDERTRANS.SIJ_DRY_RUN=false, SIJ_SCHEDULER_ENABLED=true in SIJ_RUN_ON_STARTUP=false.journalctl -u EggAbsenceSync -f
Datotečni dnevniki so v /opt/EggAbsenceSync/logs/.
curl http://localhost:8095/actuator/health
curl http://localhost:8095/actuator/scheduledtasks
Če SIJ API ni dosegljiv, preverite dnevnike za SijApiUnavailableException in prejemnike EGGOS_MAIL_API_FAILURE_TO, če je e-pošta omogočena.
Celotna arhitektura, tok zahtev in potrjena poslovna pravila SIJ so opisana v datoteki README.md, ki je vključena v vsak namestitveni paket in v repozitorij izvorne kode.
Po zagonu preverite stanje storitve in zadnje zapise dnevnika:
systemctl status egg-absence-sync
journalctl -u egg-absence-sync -n 100 --no-pager
Preverite še, ali se je izvedel načrtovani urnik in ali so zapisi obdelani v pričakovanem okolju.
Ob prijavi težave navedite okolje, čas izvedbe, različico JAR-datoteke, stanje SIJ_DRY_RUN in relevanten izsek dnevnika brez skrivnosti.