@lsi-ci-prs/wyliczenia v0.1.13
@lsi/wyliczenia
Rozwiązywany problem
Poszczególne mikroserwisy czasami odwołują się do tej samej logiki, w tym przypadku aplikacja backendowa weryfikuje wyliczenia przesłane przez frontend, co wiąże się z wykorzystaniem tych samych algorytmów i argumentów. Powstają problemy związane z zapewnieniem pełnej synchroniazacji funkcji i w konsekwencji zapewniania prawidłowych (przynajmniej tożsamych) wyników w każdym momencie. Problem jest poważniejszy, gdy obie aplikacje zaprogramowano w różnych językach, np frontend w javascript i backend w php. Rozwiązaniem może być dostarcznie odpowiednich metod wyliczeń w bibliotece instalowanej w aplikacjach wykorzystujących taką logoikę (niekoniecznie bezpośrednio - np. backend może wykorzystać dedykowane API).
Działanie
Biblioteka zwraca instancje klasy odpowiadające wzorom dla instytucji IOK (np. RR_PT01
) zawierające metody. Metoda stanowi taką funkcję klasy, która zwraca wynik wyliczenia w oparciu o swoisty algorytm i odpowiednio dostarczone argumenty. Taką metodę będziemy nazywać dalej wyliczeniem
. Wyliczenie znane jest po stronie aplikacji WEB i aplikacji dostarczającej API, tzn. znane jest przeznaczenie i argmenty.
Przykładowa instancja: rr_pt01
Przykład zastosowania
ES6:
import { rr_pt01 } from '@lsi-ci-prs/wyliczenia'
console.log(rr_pt01.addTwoNumbers(1, 5)) // output: 6
Dostępne klasy i metody
RR_PT01
Metoda (resolver) | Argumenty wymagane | Argumenty | Opis | Przykład | Endpoint |
---|---|---|---|---|---|
dofinansowanie | tak | kwota (number) | wylicza dofinansowanie | rr_pt01.dofinansowanie(100) | |
wkladWlasny | tak | kwota (number) | wylicza wkład własny | rr_pt01.wkladWlasny(100) | |
zadania | tak | json dla strony 'zadania' | wylicza dofin.i wkład własny dla każdego zadania | rr_pt01.zadania(params) | api/wyliczenia/pt01/zadania |
FS_EFS01 - fs_efs01
Metoda (resolver) | Argumenty wymagane | Argumenty | Opis | Przykład |
---|---|---|---|---|
zadania | tak | json dla strony 'zadania' | podsumowuje wydatki kwalifikowalne i dofinansowanie | fs_efs01.zadania(params) |
gdzie params =
{
"zadania": [
{
"opis": "opis zadania 1",
"nazwa": "Zadanie1",
"data_rozpoczecia": "2022-01-05",
"data_zakonczenia": "2022-02-05",
"wartosc_zadanie_razem": 13,
"dofinansowanie_zadanie_razem": "11"
},
{
"opis": "opis zadania 2",
"nazwa": "Zadanie2",
"data_rozpoczecia": "2021-04-04",
"data_zakkonczenia": "2021-01-08",
"wartosc_zadanie_razem": 2,
"dofinansowanie_zadanie_razem": "8"
},
{
"opis": "opis zadania 3",
"nazwa": "Zadanie3",
"data_rozpoczecia": "2021-01-02",
"data_zakonczenia": "2021-01-08",
"wartosc_zadanie_razem": 4,
"dofinansowanie_zadanie_razem": "3"
}
],
"podsumowanie_zadan_kwal": 18,
"podsumowanie_zadan_dof": 21
}
zwócony wynik (zwróć uwagę na podsumowania, są różne, ponieważ metoda dokonała własnych, prawidłowych wyliczeń):
{
"status": "success",
"msg": "udało się uzyskać wynik",
"result": {
"zadania": [
{
"opis": "opis zadania 1",
"nazwa": "Zadanie1",
"data_rozpoczecia": "2022-01-05",
"data_zakonczenia": "2022-02-05",
"wartosc_zadanie_razem": 13,
"dofinansowanie_zadanie_razem": "11"
},
{
"opis": "opis zadania 2",
"nazwa": "Zadanie2",
"data_rozpoczecia": "2021-04-04",
"data_zakkonczenia": "2021-01-08",
"wartosc_zadanie_razem": 2,
"dofinansowanie_zadanie_razem": "8"
},
{
"opis": "opis zadania 3",
"nazwa": "Zadanie3",
"data_rozpoczecia": "2021-01-02",
"data_zakonczenia": "2021-01-08",
"wartosc_zadanie_razem": 4,
"dofinansowanie_zadanie_razem": "3"
}
],
"podsumowanie_zadan_kwal": 19,
"podsumowanie_zadan_dof": 22
}
}
Publikacja (wymagany deploy token)
Następuje wyłacznie z tego projektu. Paczki rezydują w repozytorium własnej instancji Gitlab, powiązane są (scope) z grupą LSI
. W celu publickacji wykorzystano konfigurację poprzez plik .npmrc
(root projektu):
@lsi:registry=https://gitlab-ci-prs.slaskie.pl/api/v4/packages/npm/
//gitlab-ci-prs.slaskie.pl/api/v4/packages/npm/:_authToken=${NPM registry LSI group token}
//gitlab-ci-prs.slaskie.pl/api/v4/projects/22/packages/npm/:_authToken=${NPM registry LSI group token}
Niezbędny jest również wpis w package.json:
{
"publishConfig": {
"@lsi:registry": "https://gitlab-ci-prs.slaskie.pl/api/v4/projects/22/packages/npm/"
}
}
Każda publikacja wymaga podniesienia wersji (package.json)
npm publish
Instalacja (wymagany deploy token)
Projekt, w którym chcemy zainstalować paczkę z repozytorium własnej instancji Gitlab powinien także zostać skonfigurowany, np poprzez plik .npmrc
:
@lsi:registry=https://gitlab-ci-prs.slaskie.pl/api/v4/packages/npm/
//gitlab-ci-prs.slaskie.pl/api/v4/packages/npm/:_authToken=${NPM registry LSI group token}
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago