Skip to content

Commit 533723d

Browse files
committed
Fix jaksoherate that is synced to heratepalvelu
1 parent af33b48 commit 533723d

File tree

7 files changed

+261
-18
lines changed

7 files changed

+261
-18
lines changed
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
DROP VIEW palaute_for_tep_heratepalvelu;
2+
3+
CREATE VIEW palaute_for_tep_heratepalvelu AS
4+
SELECT
5+
jakson_yksiloiva_tunniste,
6+
kyselytyyppi AS internal_kyselytyyppi,
7+
hankkimistapa_id,
8+
osaamisen_hankkimistapa_koodi_uri AS hankkimistapa_tyyppi,
9+
hoks_id,
10+
alkupvm::text AS jakso_alkupvm,
11+
loppupvm::text AS jakso_loppupvm,
12+
vastuullinen_tyopaikka_ohjaaja_sahkoposti AS ohjaaja_email,
13+
vastuullinen_tyopaikka_ohjaaja_nimi AS ohjaaja_nimi,
14+
vastuullinen_tyopaikka_ohjaaja_puhelinnumero AS ohjaaja_puhelinnumero,
15+
opiskeluoikeus_oid,
16+
oppija_oid,
17+
oppisopimuksen_perusta_koodi_uri AS oppisopimuksen_perusta,
18+
osa_aikaisuustieto AS osa_aikaisuus,
19+
CASE tila
20+
WHEN 'odottaa_kasittelya' THEN 'ei_niputettu'
21+
WHEN 'vastaajatunnus_muodostettu' THEN 'ei_niputettu'
22+
ELSE tila::text END AS kasittelytila,
23+
CASE WHEN EXTRACT(MONTH FROM heratepvm) <= 6
24+
THEN CONCAT(EXTRACT(YEAR FROM heratepvm) - 1, '-',
25+
EXTRACT(YEAR FROM heratepvm))
26+
ELSE CONCAT(EXTRACT(YEAR FROM heratepvm), '-',
27+
EXTRACT(YEAR FROM heratepvm) + 1) END AS rahoituskausi,
28+
tutkinnonosa_id,
29+
tutkinnon_osa_koodi_uri AS tutkinnonosa_koodi,
30+
tutkinnonosa_nimi,
31+
tyyppi AS tutkinnonosa_tyyppi,
32+
tyopaikan_nimi,
33+
tyopaikan_y_tunnus AS tyopaikan_ytunnus
34+
FROM tep_palaute;

src/oph/ehoks/external/arvo.clj

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
[oph.ehoks.config :refer [config]]
55
[oph.ehoks.external.connection :as c]
66
[oph.ehoks.opiskeluoikeus.suoritus :as suoritus]
7-
[oph.ehoks.utils :as utils])
7+
[oph.ehoks.utils.string :as u-str])
88
(:import (clojure.lang ExceptionInfo)))
99

1010
(defn call!
@@ -61,7 +61,7 @@
6161
{:koulutustoimija_oid koulutustoimija
6262
:tyonantaja (:tyopaikan-y-tunnus existing-palaute)
6363
:tyopaikka (:tyopaikan-nimi existing-palaute)
64-
:tyopaikka_normalisoitu (utils/normalize-string
64+
:tyopaikka_normalisoitu (u-str/normalize
6565
(:tyopaikan-nimi existing-palaute))
6666
:tutkintotunnus (get-in
6767
suoritus

src/oph/ehoks/heratepalvelu.clj

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,8 @@
1414
[oph.ehoks.palaute.opiskelija.kyselylinkki :as kyselylinkki]
1515
[oph.ehoks.palaute.tyoelama.nippu :as nippu]
1616
[oph.ehoks.utils :as utils]
17-
[oph.ehoks.utils.date :as date])
17+
[oph.ehoks.utils.date :as date]
18+
[oph.ehoks.utils.string :as u-str])
1819
(:import (java.time LocalDate)))
1920

2021
(defn send-workplace-periods!
@@ -111,7 +112,7 @@
111112
:tutkinto tutkinto
112113
:tutkintonimike (str (seq (map :koodiarvo
113114
(:tutkintonimike oo-suoritus))))
114-
:tyopaikan-normalisoitu-nimi (utils/normalize-string
115+
:tyopaikan-normalisoitu-nimi (u-str/normalize
115116
(:tyopaikan-nimi palaute))
116117
:viimeinen-vastauspvm
117118
(str (.plusDays ^LocalDate vastaamisajan-alkupvm 60)))))
@@ -142,11 +143,15 @@
142143
(not-empty)
143144
(or (throw (ex-info "palaute not found" query)))
144145
(add-keys ctx request-id tunnus)
145-
(dissoc :internal-kyselytyyppi :jakson-yksiloiva-tunniste)
146+
(dissoc :internal-kyselytyyppi)
147+
(update :hankkimistapa-tyyppi #(last (string/split % #"_")))
148+
(update :oppisopimuksen-perusta #(when %
149+
(last (string/split % #"_"))))
146150
(utils/remove-nils)
147151
utils/to-underscore-keys
148152
;; the only field that has dashes in its name is tpk-niputuspvm
149-
(rename-keys {:tpk_niputuspvm :tpk-niputuspvm})
153+
(rename-keys {:jakson_yksiloiva_tunniste :yksiloiva_tunniste
154+
:tpk_niputuspvm :tpk-niputuspvm})
150155
(sync-jakso!*))
151156
(catch Exception e
152157
(throw (ex-info (format (str "Failed to sync jakso `%s` of HOKS "

src/oph/ehoks/utils.clj

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -17,18 +17,6 @@
1717
(assert (pred v))
1818
v)
1919

20-
(defn- deaccent-string
21-
"Poistaa diakriittiset merkit stringistä ja palauttaa muokatun stringin."
22-
[utf8-string]
23-
(string/replace (Normalizer/normalize utf8-string Normalizer$Form/NFD)
24-
#"\p{InCombiningDiacriticalMarks}+"
25-
""))
26-
27-
(defn normalize-string
28-
"Muuttaa muut merkit kuin kirjaimet ja numerot alaviivaksi."
29-
[string]
30-
(string/lower-case (string/replace (deaccent-string string) #"\W+" "_")))
31-
3220
(defn to-underscore-str
3321
[kw]
3422
(.replace (name kw) \- \_))

src/oph/ehoks/utils/string.clj

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
(ns oph.ehoks.utils.string
2+
(:require [clojure.string :as str])
3+
(:import (java.text Normalizer Normalizer$Form)))
4+
5+
(defn- deaccent
6+
"Poistaa diakriittiset merkit merkkijonosta ja palauttaa muokatun
7+
merkkijonon."
8+
[utf8-string]
9+
(str/replace (Normalizer/normalize utf8-string Normalizer$Form/NFD)
10+
#"\p{InCombiningDiacriticalMarks}+"
11+
""))
12+
13+
(defn normalize
14+
"Convert non-alphanumeric characters to underscore characters (`_`) and
15+
make letters lower case. If the resulting string has an underscore character
16+
as a prefix or postfix, those underscore characters are removed."
17+
[string]
18+
(-> (deaccent string)
19+
(str/replace #"\W+" "_")
20+
(str/replace #"(^_|_$)" "")
21+
(str/lower-case)))

test/oph/ehoks/palaute/tyoelama_test.clj

Lines changed: 173 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,175 @@
5555
:hankkimistapa-id 2
5656
:hankkimistapa-tyyppi "koulutussopimus_01"})
5757

58+
(def expected-ddb-jaksot
59+
[{:osa_aikaisuus 100
60+
:ohjaaja_nimi "Olli Ohjaaja"
61+
:opiskeluoikeus_oid "1.2.246.562.15.10000000009"
62+
:hankkimistapa_tyyppi "oppisopimus"
63+
:hoks_id 1
64+
:oppisopimuksen_perusta "01"
65+
:tyopaikan_nimi "Ohjaus Oy"
66+
:tyopaikan_ytunnus "5523718-7"
67+
:jakso_loppupvm "2023-12-05"
68+
:ohjaaja_puhelinnumero "0401111111"
69+
:osaamisala "(\"test-osaamisala\")"
70+
:tutkinnonosa_tyyppi "hato"
71+
:yksiloiva_tunniste "1"
72+
:tutkinnonosa_koodi "tutkinnonosat_300268"
73+
:tpk-niputuspvm "ei_maaritelty"
74+
:tallennuspvm "2024-06-30"
75+
:oppilaitos "1.2.246.562.10.12944436166"
76+
:ohjaaja_ytunnus_kj_tutkinto
77+
"Olli Ohjaaja/5523718-7/1.2.246.562.10.346830761110/123456"
78+
:tutkinnonosa_id 1
79+
:niputuspvm "2024-07-01"
80+
:tyopaikan_normalisoitu_nimi "ohjaus_oy"
81+
:toimipiste_oid "1.2.246.562.10.12345678903"
82+
:tutkinto "123456"
83+
:alkupvm "2023-12-16"
84+
:koulutustoimija "1.2.246.562.10.346830761110"
85+
:jakso_alkupvm "2023-12-01"
86+
:ohjaaja_email "[email protected]"
87+
:hankkimistapa_id 12
88+
:oppija_oid "1.2.246.562.24.12312312319"
89+
:rahoituskausi "2023-2024"
90+
:tutkintonimike "(\"12345\" \"23456\")"
91+
:viimeinen_vastauspvm "2024-02-14"
92+
:kasittelytila "ei_niputettu"}
93+
{:osa_aikaisuus 100
94+
:ohjaaja_nimi "Olli Ohjaaja"
95+
:tutkinnonosa_nimi "Testiosa"
96+
:opiskeluoikeus_oid "1.2.246.562.15.10000000009"
97+
:hankkimistapa_tyyppi "koulutussopimus"
98+
:hoks_id 1
99+
:tyopaikan_nimi "Ohjaus Oy"
100+
:tyopaikan_ytunnus "5523718-7"
101+
:jakso_loppupvm "2024-01-06"
102+
:ohjaaja_puhelinnumero "0401111111"
103+
:osaamisala "(\"test-osaamisala\")"
104+
:tutkinnonosa_tyyppi "hpto"
105+
:yksiloiva_tunniste "4"
106+
:tpk-niputuspvm "ei_maaritelty"
107+
:tallennuspvm "2024-06-30"
108+
:oppilaitos "1.2.246.562.10.12944436166"
109+
:ohjaaja_ytunnus_kj_tutkinto
110+
"Olli Ohjaaja/5523718-7/1.2.246.562.10.346830761110/123456"
111+
:tutkinnonosa_id 1
112+
:niputuspvm "2024-07-01"
113+
:tyopaikan_normalisoitu_nimi "ohjaus_oy"
114+
:toimipiste_oid "1.2.246.562.10.12345678903"
115+
:tutkinto "123456"
116+
:alkupvm "2024-01-16"
117+
:koulutustoimija "1.2.246.562.10.346830761110"
118+
:jakso_alkupvm "2024-01-01"
119+
:ohjaaja_email "[email protected]"
120+
:hankkimistapa_id 10
121+
:oppija_oid "1.2.246.562.24.12312312319"
122+
:rahoituskausi "2023-2024"
123+
:tutkintonimike "(\"12345\" \"23456\")"
124+
:viimeinen_vastauspvm "2024-03-16"
125+
:kasittelytila "ei_niputettu"}
126+
{:osa_aikaisuus 80
127+
:ohjaaja_nimi "Matti Meikäläinen"
128+
:opiskeluoikeus_oid "1.2.246.562.15.10000000009"
129+
:hankkimistapa_tyyppi "koulutussopimus"
130+
:hoks_id 1
131+
:tyopaikan_nimi "Ohjaus Oy"
132+
:tyopaikan_ytunnus "5523718-7"
133+
:jakso_loppupvm "2023-11-25"
134+
:ohjaaja_puhelinnumero "0402222222"
135+
:osaamisala "(\"test-osaamisala\")"
136+
:tutkinnonosa_tyyppi "hato"
137+
:yksiloiva_tunniste "3"
138+
:tutkinnonosa_koodi "tutkinnonosat_300269"
139+
:tpk-niputuspvm "ei_maaritelty"
140+
:tallennuspvm "2024-06-30"
141+
:oppilaitos "1.2.246.562.10.12944436166"
142+
:ohjaaja_ytunnus_kj_tutkinto
143+
"Matti Meikäläinen/5523718-7/1.2.246.562.10.346830761110/123456"
144+
:tutkinnonosa_id 2
145+
:niputuspvm "2024-07-01"
146+
:tyopaikan_normalisoitu_nimi "ohjaus_oy"
147+
:toimipiste_oid "1.2.246.562.10.12345678903"
148+
:tutkinto "123456"
149+
:alkupvm "2023-12-01"
150+
:koulutustoimija "1.2.246.562.10.346830761110"
151+
:jakso_alkupvm "2023-11-01"
152+
:ohjaaja_email "[email protected]"
153+
:hankkimistapa_id 14
154+
:oppija_oid "1.2.246.562.24.12312312319"
155+
:rahoituskausi "2023-2024"
156+
:tutkintonimike "(\"12345\" \"23456\")"
157+
:viimeinen_vastauspvm "2024-01-30"
158+
:kasittelytila "ei_niputettu"}
159+
{:osa_aikaisuus 60
160+
:ohjaaja_nimi "Matti Meikäläinen"
161+
:opiskeluoikeus_oid "1.2.246.562.15.10000000009"
162+
:hankkimistapa_tyyppi "koulutussopimus"
163+
:hoks_id 1
164+
:tyopaikan_nimi "Ohjaus Oy"
165+
:tyopaikan_ytunnus "5523718-7"
166+
:jakso_loppupvm "2024-01-25"
167+
:ohjaaja_puhelinnumero "0402222222"
168+
:osaamisala "(\"test-osaamisala\")"
169+
:tutkinnonosa_tyyppi "hyto"
170+
:yksiloiva_tunniste "7"
171+
:tutkinnonosa_koodi "tutkinnonosat_300270"
172+
:tpk-niputuspvm "ei_maaritelty"
173+
:tallennuspvm "2024-06-30"
174+
:oppilaitos "1.2.246.562.10.12944436166"
175+
:ohjaaja_ytunnus_kj_tutkinto
176+
"Matti Meikäläinen/5523718-7/1.2.246.562.10.346830761110/123456"
177+
:tutkinnonosa_id 4
178+
:niputuspvm "2024-07-01"
179+
:tyopaikan_normalisoitu_nimi "ohjaus_oy"
180+
:toimipiste_oid "1.2.246.562.10.12345678903"
181+
:tutkinto "123456"
182+
:alkupvm "2024-02-01"
183+
:koulutustoimija "1.2.246.562.10.346830761110"
184+
:jakso_alkupvm "2024-01-01"
185+
:ohjaaja_email "[email protected]"
186+
:hankkimistapa_id 16
187+
:oppija_oid "1.2.246.562.24.12312312319"
188+
:rahoituskausi "2023-2024"
189+
:tutkintonimike "(\"12345\" \"23456\")"
190+
:viimeinen_vastauspvm "2024-04-01"
191+
:kasittelytila "ei_niputettu"}
192+
{:osa_aikaisuus 80
193+
:ohjaaja_nimi "Olli Ohjaaja"
194+
:opiskeluoikeus_oid "1.2.246.562.15.10000000009"
195+
:hankkimistapa_tyyppi "oppisopimus"
196+
:hoks_id 1
197+
:oppisopimuksen_perusta "01"
198+
:tyopaikan_nimi "Ohjaus Oy"
199+
:tyopaikan_ytunnus "5523718-7"
200+
:jakso_loppupvm "2024-04-05"
201+
:ohjaaja_puhelinnumero "0401111111"
202+
:osaamisala "(\"test-osaamisala\")"
203+
:tutkinnonosa_tyyppi "hyto"
204+
:yksiloiva_tunniste "9"
205+
:tutkinnonosa_koodi "tutkinnonosat_300271"
206+
:tpk-niputuspvm "ei_maaritelty"
207+
:tallennuspvm "2024-06-30"
208+
:oppilaitos "1.2.246.562.10.12944436166"
209+
:ohjaaja_ytunnus_kj_tutkinto
210+
"Olli Ohjaaja/5523718-7/1.2.246.562.10.346830761110/123456"
211+
:tutkinnonosa_id 6
212+
:niputuspvm "2024-07-01"
213+
:tyopaikan_normalisoitu_nimi "ohjaus_oy"
214+
:toimipiste_oid "1.2.246.562.10.12345678903"
215+
:tutkinto "123456"
216+
:alkupvm "2024-04-16"
217+
:koulutustoimija "1.2.246.562.10.346830761110"
218+
:jakso_alkupvm "2024-04-01"
219+
:ohjaaja_email "[email protected]"
220+
:hankkimistapa_id 18
221+
:oppija_oid "1.2.246.562.24.12312312319"
222+
:rahoituskausi "2023-2024"
223+
:tutkintonimike "(\"12345\" \"23456\")"
224+
:viimeinen_vastauspvm "2024-06-15"
225+
:kasittelytila "ei_niputettu"}])
226+
58227
(def expected-ddb-niput
59228
[{:tyopaikka "Ohjaus Oy"
60229
:ytunnus "5523718-7"
@@ -314,7 +483,9 @@
314483
(def required-jakso-keys
315484
#{:ohjaaja_nimi
316485
:opiskeluoikeus_oid
486+
:oppija_oid
317487
:hoks_id
488+
:yksiloiva_tunniste
318489
:hankkimistapa_tyyppi
319490
:tyopaikan_nimi
320491
:tyopaikan_ytunnus
@@ -373,6 +544,8 @@
373544
"'vastaajatunnus_muodostettu'")])]
374545
(is (= (count palautteet) 5))
375546
(is (= (count ddb-jaksot) 5))
547+
(is (= (map #(dissoc % :tunnus :request_id) ddb-jaksot)
548+
expected-ddb-jaksot))
376549
(is (= ddb-niput expected-ddb-niput))
377550
(is (= (count tapahtumat) 5))
378551
(is (= (set (map :arvo_tunniste palautteet))

test/oph/ehoks/utils/string_test.clj

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
(ns oph.ehoks.utils.string-test
2+
(:require [clojure.test :refer [are deftest is testing]]
3+
[oph.ehoks.utils.string :refer [normalize]]))
4+
5+
(deftest test-normalize
6+
(testing "Characters with diacritics are converted to ASCII characters."
7+
(is (= (normalize "äåéëúíóöáïñ") "aaeeuiooain")))
8+
(testing "Whitespace characters are replaced with underscore (`_`)."
9+
(are [string expected] (= (normalize string) expected)
10+
"a b" "a_b" "a\nb" "a_b" "a\tb" "a_b" "a\r\nb" "a_b"))
11+
(testing "Uppercase characters will be converted to lower case."
12+
(is (= (normalize "ABCDEF") "abcdef")))
13+
(testing "There won't be consecutive underscore characters."
14+
(are [string expected] (= (normalize string) expected)
15+
"a!#$b" "a_b" "!#$ab^&*" "ab"))
16+
(testing "Non-alphanumeric characters are converted to underscores (`_`)."
17+
(is (= (normalize "a!b@c#d$e%f^g&h*i(j)k_l+m-n=o\"p'q]r[s{t}u\\v|w/x.y,z")
18+
"a_b_c_d_e_f_g_h_i_j_k_l_m_n_o_p_q_r_s_t_u_v_w_x_y_z")))
19+
(testing (str "The function strips underscore characters (`_`) from the "
20+
"beginning and the end of the string.")
21+
(are [string expected] (= (normalize string) expected)
22+
"Severi (testaaja)" "severi_testaaja" "#testi" "testi")))

0 commit comments

Comments
 (0)