cry-search 2.1.1 → 2.3.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/CLAUDE.md +26 -0
- package/README.md +38 -0
- package/dist/vet/data/prevodi.d.ts +64 -0
- package/dist/vet/data/prevodi.d.ts.map +1 -0
- package/dist/vet/index.cjs +611 -54
- package/dist/vet/index.d.cts +3 -2
- package/dist/vet/index.d.ts +3 -2
- package/dist/vet/index.d.ts.map +1 -1
- package/dist/vet/index.js +611 -54
- package/dist/vet/normalizatorji.d.ts +45 -3
- package/dist/vet/normalizatorji.d.ts.map +1 -1
- package/dist/vet/ocena.d.ts +2 -0
- package/dist/vet/ocena.d.ts.map +1 -1
- package/dist/vet/spec.d.ts +28 -0
- package/dist/vet/spec.d.ts.map +1 -1
- package/package.json +3 -2
package/dist/vet/index.cjs
CHANGED
|
@@ -40,6 +40,13 @@ var __export = (target, all) => {
|
|
|
40
40
|
var exports_vet = {};
|
|
41
41
|
__export(exports_vet, {
|
|
42
42
|
ENOTE_SINONIMI: () => ENOTE_SINONIMI,
|
|
43
|
+
PREVODI: () => PREVODI,
|
|
44
|
+
PREVODI_VIR: () => PREVODI_VIR,
|
|
45
|
+
STAROSTI: () => STAROSTI,
|
|
46
|
+
STOP_BESEDE: () => STOP_BESEDE,
|
|
47
|
+
VELIKOSTI_EN: () => VELIKOSTI_EN,
|
|
48
|
+
VELIKOSTI_OKRAJSAVE: () => VELIKOSTI_OKRAJSAVE,
|
|
49
|
+
VET_ISKALNI_NORMALIZATORJI: () => VET_ISKALNI_NORMALIZATORJI,
|
|
43
50
|
VET_NORMALIZATORJI: () => VET_NORMALIZATORJI,
|
|
44
51
|
VET_TABELA: () => VET_TABELA,
|
|
45
52
|
VRSTE_SINONIMI: () => VRSTE_SINONIMI,
|
|
@@ -50,11 +57,17 @@ __export(exports_vet, {
|
|
|
50
57
|
normalizeQueryWithOpts: () => normalizeQueryWithOpts,
|
|
51
58
|
oceniPar: () => oceniPar,
|
|
52
59
|
oznakeNormalizator: () => oznakeNormalizator,
|
|
60
|
+
prevodiNormalizator: () => prevodiNormalizator,
|
|
53
61
|
pripraviVetIndeks: () => pripraviVetIndeks,
|
|
62
|
+
razdeljevalciNormalizator: () => razdeljevalciNormalizator,
|
|
63
|
+
starostNormalizator: () => starostNormalizator,
|
|
54
64
|
upariArtikle: () => upariArtikle,
|
|
55
65
|
upariVse: () => upariVse,
|
|
56
66
|
upariVseSync: () => upariVseSync,
|
|
67
|
+
velikostNormalizator: () => velikostNormalizator,
|
|
57
68
|
vetArtikelSpec: () => vetArtikelSpec,
|
|
69
|
+
vetIskalniQueryOpts: () => vetIskalniQueryOpts,
|
|
70
|
+
vetIskalniSpec: () => vetIskalniSpec,
|
|
58
71
|
vetQueryOpts: () => vetQueryOpts,
|
|
59
72
|
vrstaNormalizator: () => vrstaNormalizator,
|
|
60
73
|
znamkaNormalizator: () => znamkaNormalizator
|
|
@@ -240,6 +253,369 @@ dodajVrsto("jelen", ["jelena", "jeleni", "jelenov", "jelenjad"]);
|
|
|
240
253
|
dodajVrsto("srna", ["srne", "srni", "srn", "srnjak", "srnjaka", "srnjaki"]);
|
|
241
254
|
dodajVrsto("divjad", ["divjadi", "divjadjo"]);
|
|
242
255
|
|
|
256
|
+
// src/vet/data/prevodi.ts
|
|
257
|
+
var PREVODI = {
|
|
258
|
+
dog: "pes",
|
|
259
|
+
dogs: "pes",
|
|
260
|
+
pse: "pes",
|
|
261
|
+
puppy: "mladič",
|
|
262
|
+
puppies: "mladič",
|
|
263
|
+
cat: "mačka",
|
|
264
|
+
cats: "mačka",
|
|
265
|
+
kitten: "mladič",
|
|
266
|
+
kittens: "mladič",
|
|
267
|
+
rabbit: "zajec",
|
|
268
|
+
bunny: "zajec",
|
|
269
|
+
chicken: "piščanec",
|
|
270
|
+
chick: "piščanec",
|
|
271
|
+
hen: "kokoš",
|
|
272
|
+
turkey: "puran",
|
|
273
|
+
duck: "raca",
|
|
274
|
+
goose: "gos",
|
|
275
|
+
quail: "prepelica",
|
|
276
|
+
pheasant: "fazan",
|
|
277
|
+
beef: "govedina",
|
|
278
|
+
veal: "teletina",
|
|
279
|
+
pork: "svinjina",
|
|
280
|
+
lamb: "jagnjetina",
|
|
281
|
+
mutton: "jagnjetina",
|
|
282
|
+
sheep: "ovca",
|
|
283
|
+
goat: "koza",
|
|
284
|
+
horse: "konj",
|
|
285
|
+
buffalo: "bivol",
|
|
286
|
+
bison: "bizon",
|
|
287
|
+
venison: "divjačina",
|
|
288
|
+
boar: "divji prašič",
|
|
289
|
+
salmon: "losos",
|
|
290
|
+
trout: "postrv",
|
|
291
|
+
cod: "polenovka",
|
|
292
|
+
codfish: "polenovka",
|
|
293
|
+
hake: "oslič",
|
|
294
|
+
herring: "sled",
|
|
295
|
+
sardine: "sardela",
|
|
296
|
+
anchovy: "inčun",
|
|
297
|
+
mackerel: "skuša",
|
|
298
|
+
shrimp: "rakci",
|
|
299
|
+
prawn: "rakci",
|
|
300
|
+
krill: "kril",
|
|
301
|
+
crab: "rakovice",
|
|
302
|
+
lobster: "jastog",
|
|
303
|
+
squid: "lignji",
|
|
304
|
+
octopus: "hobotnica",
|
|
305
|
+
clam: "skoljke",
|
|
306
|
+
mussel: "skoljke",
|
|
307
|
+
egg: "jajce",
|
|
308
|
+
eggs: "jajce",
|
|
309
|
+
milk: "mleko",
|
|
310
|
+
cheese: "sir",
|
|
311
|
+
yogurt: "jogurt",
|
|
312
|
+
insect: "žuželke",
|
|
313
|
+
fish: "riba",
|
|
314
|
+
salmonoil: "ribje olje",
|
|
315
|
+
rice: "riž",
|
|
316
|
+
potato: "krompir",
|
|
317
|
+
potatoes: "krompir",
|
|
318
|
+
potatoe: "krompir",
|
|
319
|
+
grain: "žita",
|
|
320
|
+
grains: "žita",
|
|
321
|
+
wheat: "pšenica",
|
|
322
|
+
corn: "koruza",
|
|
323
|
+
maize: "koruza",
|
|
324
|
+
oat: "oves",
|
|
325
|
+
oats: "oves",
|
|
326
|
+
barley: "ječmen",
|
|
327
|
+
rye: "rž",
|
|
328
|
+
spelt: "pira",
|
|
329
|
+
spelled: "pira",
|
|
330
|
+
millet: "proso",
|
|
331
|
+
sorghum: "sirek",
|
|
332
|
+
quinoa: "kvinoja",
|
|
333
|
+
buckwheat: "ajda",
|
|
334
|
+
pea: "grah",
|
|
335
|
+
peas: "grah",
|
|
336
|
+
chickpea: "čiček",
|
|
337
|
+
lentil: "leča",
|
|
338
|
+
bean: "fižol",
|
|
339
|
+
beans: "fižol",
|
|
340
|
+
carrot: "korenje",
|
|
341
|
+
carrots: "korenje",
|
|
342
|
+
spinach: "špinača",
|
|
343
|
+
broccoli: "brokoli",
|
|
344
|
+
tomato: "paradižnik",
|
|
345
|
+
tomatoes: "paradižnik",
|
|
346
|
+
beet: "pesa",
|
|
347
|
+
beetroot: "pesa",
|
|
348
|
+
pumpkin: "buča",
|
|
349
|
+
courgette: "bučke",
|
|
350
|
+
zucchini: "bučke",
|
|
351
|
+
kale: "ohrovt",
|
|
352
|
+
cabbage: "zelje",
|
|
353
|
+
apple: "jabolko",
|
|
354
|
+
apples: "jabolko",
|
|
355
|
+
pomegranate: "granatno jabolko",
|
|
356
|
+
pomeg: "granatno jabolko",
|
|
357
|
+
orange: "pomaranča",
|
|
358
|
+
lemon: "limona",
|
|
359
|
+
pear: "hruška",
|
|
360
|
+
blueberry: "borovnica",
|
|
361
|
+
blueberries: "borovnica",
|
|
362
|
+
cranberry: "brusnica",
|
|
363
|
+
cranberries: "brusnica",
|
|
364
|
+
raspberry: "malina",
|
|
365
|
+
strawberry: "jagoda",
|
|
366
|
+
blackberry: "robida",
|
|
367
|
+
cherry: "češnja",
|
|
368
|
+
apricot: "marelica",
|
|
369
|
+
peach: "breskev",
|
|
370
|
+
pineapple: "ananas",
|
|
371
|
+
papaya: "papaja",
|
|
372
|
+
kiwi: "kivi",
|
|
373
|
+
melon: "melona",
|
|
374
|
+
melons: "melona",
|
|
375
|
+
watermelon: "lubenica",
|
|
376
|
+
cantaloupe: "melona",
|
|
377
|
+
coconut: "kokoš",
|
|
378
|
+
almond: "mandelj",
|
|
379
|
+
walnuts: "oreski",
|
|
380
|
+
peanut: "arašid",
|
|
381
|
+
seaweed: "alge",
|
|
382
|
+
kelp: "alge",
|
|
383
|
+
yucca: "juka",
|
|
384
|
+
alfalfa: "lucerna",
|
|
385
|
+
mint: "meta",
|
|
386
|
+
chamomile: "kamilica",
|
|
387
|
+
fennel: "komarček",
|
|
388
|
+
parsley: "peteršilj",
|
|
389
|
+
garlic: "česen",
|
|
390
|
+
flaxseed: "laneno seme",
|
|
391
|
+
flax: "lan",
|
|
392
|
+
sesame: "sezam",
|
|
393
|
+
sunflower: "sončnice",
|
|
394
|
+
herbal: "zeleni",
|
|
395
|
+
tablet: "tbl",
|
|
396
|
+
tablets: "tbl",
|
|
397
|
+
capsule: "kps",
|
|
398
|
+
capsules: "kps",
|
|
399
|
+
injection: "inj",
|
|
400
|
+
injections: "inj",
|
|
401
|
+
suspension: "suspenzija",
|
|
402
|
+
solution: "raztopina",
|
|
403
|
+
powder: "prašek",
|
|
404
|
+
granulate: "granulat",
|
|
405
|
+
granules: "granulat",
|
|
406
|
+
drops: "kapljice",
|
|
407
|
+
shampoo: "šampon",
|
|
408
|
+
conditioner: "balzam",
|
|
409
|
+
paste: "pasta",
|
|
410
|
+
pate: "pašteta",
|
|
411
|
+
syrup: "sirup",
|
|
412
|
+
spray: "sprej",
|
|
413
|
+
pipette: "pipeta",
|
|
414
|
+
ampoule: "ampula",
|
|
415
|
+
vial: "viala",
|
|
416
|
+
sachet: "vrecka",
|
|
417
|
+
pouch: "vrecka",
|
|
418
|
+
can: "konzerva",
|
|
419
|
+
cans: "konzerva",
|
|
420
|
+
tin: "konzerva",
|
|
421
|
+
bag: "vrecka",
|
|
422
|
+
tube: "tuba",
|
|
423
|
+
bottle: "steklenička",
|
|
424
|
+
jar: "kozarec",
|
|
425
|
+
collar: "ovratnica",
|
|
426
|
+
harness: "ovratnica",
|
|
427
|
+
leash: "povodec",
|
|
428
|
+
lead: "povodec",
|
|
429
|
+
muzzle: "nagobcnik",
|
|
430
|
+
toy: "igraca",
|
|
431
|
+
toys: "igraca",
|
|
432
|
+
brush: "krtača",
|
|
433
|
+
comb: "glavnik",
|
|
434
|
+
clipper: "škarje",
|
|
435
|
+
scissors: "škarje",
|
|
436
|
+
wipes: "brisače",
|
|
437
|
+
pads: "blazinice",
|
|
438
|
+
biscuit: "piškot",
|
|
439
|
+
biscuits: "piškot",
|
|
440
|
+
stick: "palčka",
|
|
441
|
+
sticks: "palčka",
|
|
442
|
+
bone: "kost",
|
|
443
|
+
jerky: "suseno",
|
|
444
|
+
chew: "žvečenje",
|
|
445
|
+
chewable: "žvečljiv",
|
|
446
|
+
jelly: "žele",
|
|
447
|
+
gravy: "omaka",
|
|
448
|
+
sauce: "omaka",
|
|
449
|
+
mousse: "pena",
|
|
450
|
+
loaf: "hlod",
|
|
451
|
+
cream: "krema",
|
|
452
|
+
oil: "olje",
|
|
453
|
+
balm: "balzam",
|
|
454
|
+
tonic: "tonik",
|
|
455
|
+
lotion: "losjon",
|
|
456
|
+
urinary: "urinarne",
|
|
457
|
+
renal: "ledvično",
|
|
458
|
+
kidney: "ledvica",
|
|
459
|
+
dental: "zobno",
|
|
460
|
+
hairball: "dlake",
|
|
461
|
+
joint: "sklepi",
|
|
462
|
+
joints: "sklepi",
|
|
463
|
+
skin: "koza",
|
|
464
|
+
coat: "dlaka",
|
|
465
|
+
stomach: "želodec",
|
|
466
|
+
gastric: "prebavno",
|
|
467
|
+
digestive: "prebavni",
|
|
468
|
+
digestion: "prebava",
|
|
469
|
+
intestinal: "črevesni",
|
|
470
|
+
hepatic: "jetrni",
|
|
471
|
+
liver: "jetra",
|
|
472
|
+
cardiac: "srčni",
|
|
473
|
+
heart: "srce",
|
|
474
|
+
respiratory: "dihala",
|
|
475
|
+
breath: "dihala",
|
|
476
|
+
ear: "ušesa",
|
|
477
|
+
eye: "oci",
|
|
478
|
+
eyes: "oci",
|
|
479
|
+
oral: "oralno",
|
|
480
|
+
hypoallergenic: "hipoalergen",
|
|
481
|
+
hypoall: "hipoalergen",
|
|
482
|
+
allergenic: "alergen",
|
|
483
|
+
allergy: "alergija",
|
|
484
|
+
sensitive: "občutljiv",
|
|
485
|
+
sterilised: "steriliziran",
|
|
486
|
+
sterilized: "steriliziran",
|
|
487
|
+
steril: "steriliziran",
|
|
488
|
+
neutered: "steriliziran",
|
|
489
|
+
neutred: "steriliziran",
|
|
490
|
+
neuter: "steriliziran",
|
|
491
|
+
castrated: "kastriran",
|
|
492
|
+
obesity: "debelost",
|
|
493
|
+
obese: "debel",
|
|
494
|
+
overweight: "predebel",
|
|
495
|
+
diabetic: "diabetik",
|
|
496
|
+
mobility: "mobilnost",
|
|
497
|
+
weight: "teža",
|
|
498
|
+
growth: "rast",
|
|
499
|
+
recovery: "okrevanje",
|
|
500
|
+
convalescence: "okrevanje",
|
|
501
|
+
calm: "pomiritev",
|
|
502
|
+
relaxing: "pomiritev",
|
|
503
|
+
vitality: "vitalnost",
|
|
504
|
+
immune: "imunski",
|
|
505
|
+
immunity: "imunost",
|
|
506
|
+
supplement: "dodatek",
|
|
507
|
+
supplements: "dodatek",
|
|
508
|
+
probiotic: "probiotik",
|
|
509
|
+
probiotics: "probiotik",
|
|
510
|
+
antioxidant: "antioksidant",
|
|
511
|
+
fibre: "vlaknine",
|
|
512
|
+
fiber: "vlaknine",
|
|
513
|
+
protein: "beljakovine",
|
|
514
|
+
fat: "maščobe",
|
|
515
|
+
ash: "pepel",
|
|
516
|
+
moisture: "vlaga",
|
|
517
|
+
veterinary: "veterinarski",
|
|
518
|
+
diet: "dieta",
|
|
519
|
+
dietary: "dietna",
|
|
520
|
+
adult: "odrasel",
|
|
521
|
+
wet: "mokra",
|
|
522
|
+
dry: "suha",
|
|
523
|
+
food: "hrana",
|
|
524
|
+
snack: "priboljsek",
|
|
525
|
+
snacks: "priboljsek",
|
|
526
|
+
treat: "priboljsek",
|
|
527
|
+
treats: "priboljsek",
|
|
528
|
+
complete: "popolna",
|
|
529
|
+
balanced: "uravnotežena",
|
|
530
|
+
daily: "dnevni",
|
|
531
|
+
special: "specialni",
|
|
532
|
+
intensive: "intenzivni",
|
|
533
|
+
support: "podpora",
|
|
534
|
+
protection: "zaščita",
|
|
535
|
+
control: "nadzor",
|
|
536
|
+
hygiene: "higiena",
|
|
537
|
+
fresh: "sveze",
|
|
538
|
+
grainfree: "brez zita",
|
|
539
|
+
bite: "grizljaj",
|
|
540
|
+
flavour: "okus",
|
|
541
|
+
flavor: "okus",
|
|
542
|
+
taste: "okus",
|
|
543
|
+
chickpomeg: "piscanec granatno jabolko",
|
|
544
|
+
chpom: "piscanec granatno jabolko",
|
|
545
|
+
cant: "melona",
|
|
546
|
+
cantmelon: "melona",
|
|
547
|
+
neut: "steriliziran",
|
|
548
|
+
vacc: "cepivo",
|
|
549
|
+
vaccin: "cepivo",
|
|
550
|
+
vaccine: "cepivo",
|
|
551
|
+
haem: "hem",
|
|
552
|
+
canine: "pasji",
|
|
553
|
+
feline: "mačji",
|
|
554
|
+
satiety: "sitost",
|
|
555
|
+
gastrointestinal: "prebavni",
|
|
556
|
+
pisc: "piščanec",
|
|
557
|
+
piscji: "piščanec",
|
|
558
|
+
krom: "krompir",
|
|
559
|
+
kromp: "krompir",
|
|
560
|
+
granat: "granatno",
|
|
561
|
+
ovck: "ovčka",
|
|
562
|
+
priboljski: "priboljšek"
|
|
563
|
+
};
|
|
564
|
+
var STOP_BESEDE = [
|
|
565
|
+
"and",
|
|
566
|
+
"with",
|
|
567
|
+
"for",
|
|
568
|
+
"the",
|
|
569
|
+
"of",
|
|
570
|
+
"in",
|
|
571
|
+
"on",
|
|
572
|
+
"to",
|
|
573
|
+
"from",
|
|
574
|
+
"per",
|
|
575
|
+
"care",
|
|
576
|
+
"health",
|
|
577
|
+
"healthy",
|
|
578
|
+
"premium",
|
|
579
|
+
"quality",
|
|
580
|
+
"test"
|
|
581
|
+
];
|
|
582
|
+
var STAROSTI = {
|
|
583
|
+
mladic: "mladič",
|
|
584
|
+
mladicek: "mladič",
|
|
585
|
+
puppy: "mladič",
|
|
586
|
+
puppies: "mladič",
|
|
587
|
+
kitten: "mladič",
|
|
588
|
+
kittens: "mladič",
|
|
589
|
+
junior: "mladič",
|
|
590
|
+
juniors: "mladič",
|
|
591
|
+
baby: "mladič",
|
|
592
|
+
weaning: "mladič",
|
|
593
|
+
odrasel: "odrasel",
|
|
594
|
+
odrasli: "odrasel",
|
|
595
|
+
adult: "odrasel",
|
|
596
|
+
adults: "odrasel",
|
|
597
|
+
mature: "odrasel",
|
|
598
|
+
senior: "senior",
|
|
599
|
+
seniors: "senior",
|
|
600
|
+
seniorji: "senior",
|
|
601
|
+
geriatric: "senior",
|
|
602
|
+
aged: "senior"
|
|
603
|
+
};
|
|
604
|
+
var VELIKOSTI_EN = {
|
|
605
|
+
small: "s",
|
|
606
|
+
medium: "m",
|
|
607
|
+
large: "l",
|
|
608
|
+
giant: "xl",
|
|
609
|
+
xlarge: "xl",
|
|
610
|
+
extralarge: "xl"
|
|
611
|
+
};
|
|
612
|
+
var VELIKOSTI_OKRAJSAVE = {
|
|
613
|
+
med: "medium",
|
|
614
|
+
max: "maxi",
|
|
615
|
+
min: "mini"
|
|
616
|
+
};
|
|
617
|
+
var PREVODI_VIR = "ročno kurirano 2026-10-04 (besedišče izmerjeno v tackakp + SI_TACKA)";
|
|
618
|
+
|
|
243
619
|
// src/vet/data/znamke.gen.ts
|
|
244
620
|
var ZNAMKE_GEN = {
|
|
245
621
|
vir: "/Users/primozk/devmt/panthenImport",
|
|
@@ -987,6 +1363,14 @@ function kljucBesede(beseda) {
|
|
|
987
1363
|
return beseda.toLowerCase().normalize("NFD").replace(/[\u0300-\u036f]/g, "").replace(/[^a-z0-9]+$/, "");
|
|
988
1364
|
}
|
|
989
1365
|
var BESEDA = /(?<![\p{L}\p{N}])([\p{L}\p{N}]+)(?![\p{L}\p{N}])/gu;
|
|
1366
|
+
var BESEDA_Z_VEZNIKOM = /(?<![\p{L}\p{N}])([\p{L}]+)\s*[&+]\s*([\p{L}]+)(?![\p{L}\p{N}])/gu;
|
|
1367
|
+
var VELIKOSTNE_BESEDE = new Set([
|
|
1368
|
+
...Object.keys(VELIKOSTI_OKRAJSAVE),
|
|
1369
|
+
...Object.keys(VELIKOSTI_EN),
|
|
1370
|
+
"mini",
|
|
1371
|
+
"maxi",
|
|
1372
|
+
...Object.keys(VELIKOSTI_SINONIMI)
|
|
1373
|
+
]);
|
|
990
1374
|
function kanonicaVelika(enota) {
|
|
991
1375
|
return enota.toUpperCase();
|
|
992
1376
|
}
|
|
@@ -1072,19 +1456,90 @@ var vrstaNormalizator = {
|
|
|
1072
1456
|
return najdene.length ? { text: ocisceno, classes: { vrsta: najdene } } : ocisceno;
|
|
1073
1457
|
}
|
|
1074
1458
|
};
|
|
1075
|
-
var TIPSKE_OZNAKE = new Set(ZNAMKE_GEN.tipskeOznake.map(kljucBesede).filter((t) => t.length >= 2));
|
|
1459
|
+
var TIPSKE_OZNAKE = new Set(ZNAMKE_GEN.tipskeOznake.map(kljucBesede).filter((t) => t.length >= 2 && !PREVODI[t]));
|
|
1460
|
+
var razdeljevalciNormalizator = {
|
|
1461
|
+
fn: (v) => {
|
|
1462
|
+
let spremenjeno = false;
|
|
1463
|
+
let besedilo = v.replace(BESEDA_Z_VEZNIKOM, (ujemanje, a, b) => {
|
|
1464
|
+
const ka = kljucBesede(a);
|
|
1465
|
+
const kb = kljucBesede(b);
|
|
1466
|
+
if (!VELIKOSTNE_BESEDE.has(ka) || !VELIKOSTNE_BESEDE.has(kb))
|
|
1467
|
+
return ujemanje;
|
|
1468
|
+
const razsiri = (k) => VELIKOSTI_OKRAJSAVE[k] ?? VELIKOSTI_EN[k] ?? k;
|
|
1469
|
+
spremenjeno = true;
|
|
1470
|
+
return `${razsiri(ka)} ${razsiri(kb)}`;
|
|
1471
|
+
});
|
|
1472
|
+
const zLocili = besedilo.replace(/\s*[&+,;|]\s*/g, " ").replace(/(?<=[\p{L}\p{N}]{2})\s*\/\s*(?=[\p{L}\p{N}]{2})/gu, " ").replace(/(?<![\d])([\p{L}]{2,})\.(?=\s|$)/gu, "$1").replace(/(?<=\p{L})\.(?=\p{L})/gu, " ");
|
|
1473
|
+
if (zLocili !== besedilo)
|
|
1474
|
+
spremenjeno = true;
|
|
1475
|
+
besedilo = zLocili;
|
|
1476
|
+
return spremenjeno ? besedilo.replace(/\s+/g, " ").trim() : undefined;
|
|
1477
|
+
}
|
|
1478
|
+
};
|
|
1479
|
+
var PREVODI_MAP = new Map(Object.entries(PREVODI));
|
|
1480
|
+
var STOP_MAP = new Set(STOP_BESEDE);
|
|
1481
|
+
var prevodiNormalizator = {
|
|
1482
|
+
fn: (v) => {
|
|
1483
|
+
let spremenjeno = false;
|
|
1484
|
+
const izhod = v.replace(BESEDA, (ujemanje) => {
|
|
1485
|
+
const kljuc = kljucBesede(ujemanje);
|
|
1486
|
+
if (STOP_MAP.has(kljuc)) {
|
|
1487
|
+
spremenjeno = true;
|
|
1488
|
+
return " ";
|
|
1489
|
+
}
|
|
1490
|
+
const prevod = PREVODI_MAP.get(kljuc);
|
|
1491
|
+
if (!prevod)
|
|
1492
|
+
return ujemanje;
|
|
1493
|
+
spremenjeno = true;
|
|
1494
|
+
return prevod.toUpperCase();
|
|
1495
|
+
});
|
|
1496
|
+
return spremenjeno ? izhod.replace(/\s+/g, " ").trim() : undefined;
|
|
1497
|
+
}
|
|
1498
|
+
};
|
|
1499
|
+
var starostNormalizator = {
|
|
1500
|
+
fn: (v) => {
|
|
1501
|
+
const najdene = [];
|
|
1502
|
+
const izhod = v.replace(BESEDA, (ujemanje) => {
|
|
1503
|
+
const starost = STAROSTI[kljucBesede(ujemanje)];
|
|
1504
|
+
if (!starost)
|
|
1505
|
+
return ujemanje;
|
|
1506
|
+
if (!najdene.includes(starost))
|
|
1507
|
+
najdene.push(starost);
|
|
1508
|
+
return " ";
|
|
1509
|
+
});
|
|
1510
|
+
if (!najdene.length)
|
|
1511
|
+
return;
|
|
1512
|
+
return { text: izhod.replace(/\s+/g, " ").trim(), classes: { starost: najdene } };
|
|
1513
|
+
}
|
|
1514
|
+
};
|
|
1076
1515
|
var VRSTE_ZA_RAZRED = new Set(["pes", "macka"]);
|
|
1077
1516
|
var OKRAJSAVE_ZNAMK = new Map;
|
|
1078
1517
|
var LINIJE_ZNAMK = new Map;
|
|
1518
|
+
var ZNANE_ZNAMKE = new Map([["n&d", "NATURAL DELICIOUS"]]);
|
|
1519
|
+
var OBIČAJNE_BESEDE = new Set([
|
|
1520
|
+
...Object.keys(PREVODI),
|
|
1521
|
+
...STOP_BESEDE,
|
|
1522
|
+
...Object.keys(STAROSTI),
|
|
1523
|
+
...Object.keys(VELIKOSTI_EN),
|
|
1524
|
+
...Object.keys(VELIKOSTI_SINONIMI),
|
|
1525
|
+
...Object.keys(VRSTE_SINONIMI)
|
|
1526
|
+
]);
|
|
1527
|
+
var BESEDE_ZNAMK = new Set(ZNAMKE_GEN.okrajsave.flatMap((o) => o.znamka.toLowerCase().split(/[^\p{L}\p{N}]+/u)).filter(Boolean));
|
|
1079
1528
|
for (const zapis of ZNAMKE_GEN.okrajsave) {
|
|
1080
1529
|
const kljuc = zapis.okrajsava.toLowerCase();
|
|
1081
1530
|
if (zapis.zaupanje === "splet")
|
|
1082
1531
|
continue;
|
|
1532
|
+
if (kljuc.length <= 4 && OBIČAJNE_BESEDE.has(kljuc))
|
|
1533
|
+
continue;
|
|
1534
|
+
if (BESEDE_ZNAMK.has(kljuc))
|
|
1535
|
+
continue;
|
|
1083
1536
|
if (!OKRAJSAVE_ZNAMK.has(kljuc))
|
|
1084
1537
|
OKRAJSAVE_ZNAMK.set(kljuc, zapis.znamka);
|
|
1085
1538
|
}
|
|
1086
1539
|
for (const linija of ZNAMKE_GEN.linije) {
|
|
1087
1540
|
const kljuc = linija.linija.toLowerCase();
|
|
1541
|
+
if (OBIČAJNE_BESEDE.has(kljuc))
|
|
1542
|
+
continue;
|
|
1088
1543
|
if (!LINIJE_ZNAMK.has(kljuc))
|
|
1089
1544
|
LINIJE_ZNAMK.set(kljuc, linija.znamka);
|
|
1090
1545
|
}
|
|
@@ -1093,7 +1548,7 @@ var znamkaNormalizator = {
|
|
|
1093
1548
|
let spremenjeno = false;
|
|
1094
1549
|
const izhod = v.replace(/(?<![\p{L}\p{N}])([\p{L}\p{N}&]+)(?![\p{L}\p{N}])/gu, (ujemanje) => {
|
|
1095
1550
|
const kljuc = kljucBesede(ujemanje);
|
|
1096
|
-
const znamka = OKRAJSAVE_ZNAMK.get(kljuc);
|
|
1551
|
+
const znamka = ZNANE_ZNAMKE.get(kljuc) ?? OKRAJSAVE_ZNAMK.get(kljuc);
|
|
1097
1552
|
if (znamka) {
|
|
1098
1553
|
const besedeCilja = znamka.toLowerCase().split(/[^\p{L}\p{N}]+/u).filter(Boolean);
|
|
1099
1554
|
if (besedeCilja.includes(kljuc))
|
|
@@ -1104,7 +1559,8 @@ var znamkaNormalizator = {
|
|
|
1104
1559
|
const linija = LINIJE_ZNAMK.get(kljuc);
|
|
1105
1560
|
if (linija) {
|
|
1106
1561
|
spremenjeno = true;
|
|
1107
|
-
|
|
1562
|
+
const ze = v.toLowerCase().includes(linija.toLowerCase());
|
|
1563
|
+
return ze ? ujemanje.toUpperCase() : `${linija.toUpperCase()} ${ujemanje.toUpperCase()}`;
|
|
1108
1564
|
}
|
|
1109
1565
|
return ujemanje;
|
|
1110
1566
|
});
|
|
@@ -1138,7 +1594,7 @@ var velikostNormalizator = {
|
|
|
1138
1594
|
const najdene = [];
|
|
1139
1595
|
const izhod = v.replace(BESEDA, (ujemanje, ...args) => {
|
|
1140
1596
|
const kljuc = kljucBesede(ujemanje);
|
|
1141
|
-
const velikost = VELIKOSTI_SINONIMI[kljuc];
|
|
1597
|
+
const velikost = VELIKOSTI_SINONIMI[kljuc] ?? VELIKOSTI_EN[kljuc];
|
|
1142
1598
|
if (!velikost)
|
|
1143
1599
|
return ujemanje;
|
|
1144
1600
|
const mesto = args[args.length - 2];
|
|
@@ -1192,11 +1648,14 @@ var VET_NORMALIZATORJI = [
|
|
|
1192
1648
|
kodiranjeNormalizator,
|
|
1193
1649
|
decimalkeNormalizator,
|
|
1194
1650
|
pantheonOznakaNormalizator,
|
|
1195
|
-
tipskeOznakeNormalizator,
|
|
1196
1651
|
enoteNormalizator,
|
|
1197
1652
|
znamkaNormalizator,
|
|
1653
|
+
razdeljevalciNormalizator,
|
|
1654
|
+
prevodiNormalizator,
|
|
1655
|
+
tipskeOznakeNormalizator,
|
|
1198
1656
|
kolicinaNormalizator,
|
|
1199
1657
|
velikostNormalizator,
|
|
1658
|
+
starostNormalizator,
|
|
1200
1659
|
vrstaNormalizator,
|
|
1201
1660
|
oznakeNormalizator
|
|
1202
1661
|
];
|
|
@@ -1205,6 +1664,10 @@ var VET_TABELA = {
|
|
|
1205
1664
|
linije: LINIJE_ZNAMK,
|
|
1206
1665
|
dobavitelji: DOBAVITELJI,
|
|
1207
1666
|
oznake: OZNAKE,
|
|
1667
|
+
prevodi: PREVODI_MAP,
|
|
1668
|
+
stopBesede: STOP_MAP,
|
|
1669
|
+
starosti: STAROSTI,
|
|
1670
|
+
velikostiEn: VELIKOSTI_EN,
|
|
1208
1671
|
vir: ZNAMKE_GEN.vir
|
|
1209
1672
|
};
|
|
1210
1673
|
// src/vet/spec.ts
|
|
@@ -1220,6 +1683,29 @@ function vetArtikelSpec(nastavitve = {}) {
|
|
|
1220
1683
|
function vetQueryOpts(dodatni = {}) {
|
|
1221
1684
|
return { ...dodatni, queryNormalizers: [...VET_NORMALIZATORJI, ...dodatni.queryNormalizers ?? []] };
|
|
1222
1685
|
}
|
|
1686
|
+
var VET_ISKALNI_NORMALIZATORJI = [
|
|
1687
|
+
kodiranjeNormalizator,
|
|
1688
|
+
decimalkeNormalizator,
|
|
1689
|
+
enoteNormalizator,
|
|
1690
|
+
znamkaNormalizator,
|
|
1691
|
+
razdeljevalciNormalizator,
|
|
1692
|
+
prevodiNormalizator
|
|
1693
|
+
];
|
|
1694
|
+
function vetIskalniSpec(nastavitve = {}) {
|
|
1695
|
+
const polja = nastavitve.polja ?? ["naziv"];
|
|
1696
|
+
return {
|
|
1697
|
+
searchInFields: [...polja],
|
|
1698
|
+
keyFields: [...nastavitve.keyFields ?? polja],
|
|
1699
|
+
...nastavitve.prviTokeni !== undefined ? { firstTokensN: nastavitve.prviTokeni } : {},
|
|
1700
|
+
valueNormalizers: [...VET_ISKALNI_NORMALIZATORJI, ...nastavitve.dodatniNormalizatorji ?? []]
|
|
1701
|
+
};
|
|
1702
|
+
}
|
|
1703
|
+
function vetIskalniQueryOpts(dodatni = {}) {
|
|
1704
|
+
return {
|
|
1705
|
+
...dodatni,
|
|
1706
|
+
queryNormalizers: [...VET_ISKALNI_NORMALIZATORJI, ...dodatni.queryNormalizers ?? []]
|
|
1707
|
+
};
|
|
1708
|
+
}
|
|
1223
1709
|
// src/types/index.ts
|
|
1224
1710
|
var DEFAULT_PHONE_FIELDS = ["telefon", "phone", "gsm", "msisdn"];
|
|
1225
1711
|
var DEFAULT_FIRST_TOKENS_N = 8;
|
|
@@ -2006,14 +2492,17 @@ var KAZEN = {
|
|
|
2006
2492
|
kolicina: 150,
|
|
2007
2493
|
pakiranje: 150,
|
|
2008
2494
|
velikost: 300,
|
|
2009
|
-
pantheon: 100
|
|
2495
|
+
pantheon: 100,
|
|
2496
|
+
starost: 400
|
|
2010
2497
|
};
|
|
2498
|
+
var VETO_RAZREDI = new Set(["vrsta"]);
|
|
2011
2499
|
var BONUS = {
|
|
2012
2500
|
razpon: 150,
|
|
2013
2501
|
vrsta: 200,
|
|
2014
2502
|
kolicina: 100,
|
|
2015
2503
|
pakiranje: 100,
|
|
2016
|
-
velikost: 150
|
|
2504
|
+
velikost: 150,
|
|
2505
|
+
starost: 200
|
|
2017
2506
|
};
|
|
2018
2507
|
function kotSeznam(v) {
|
|
2019
2508
|
if (v === undefined)
|
|
@@ -2025,6 +2514,32 @@ function staVNasprotju(a, b) {
|
|
|
2025
2514
|
return false;
|
|
2026
2515
|
return !a.some((x) => b.includes(x));
|
|
2027
2516
|
}
|
|
2517
|
+
var NORMALIZIRANO = new Map;
|
|
2518
|
+
function normalizirajNaziv(naziv) {
|
|
2519
|
+
const shranjeno = NORMALIZIRANO.get(naziv);
|
|
2520
|
+
if (shranjeno)
|
|
2521
|
+
return shranjeno;
|
|
2522
|
+
let text = naziv;
|
|
2523
|
+
const classes = {};
|
|
2524
|
+
for (const n of VET_NORMALIZATORJI) {
|
|
2525
|
+
const r = n.fn(text, "naziv");
|
|
2526
|
+
if (r === undefined)
|
|
2527
|
+
continue;
|
|
2528
|
+
if (typeof r === "string") {
|
|
2529
|
+
text = r;
|
|
2530
|
+
continue;
|
|
2531
|
+
}
|
|
2532
|
+
text = r.text;
|
|
2533
|
+
for (const [kljuc, vrednost] of Object.entries(r.classes ?? {})) {
|
|
2534
|
+
classes[kljuc] = Array.isArray(vrednost) ? vrednost.map(String) : [String(vrednost)];
|
|
2535
|
+
}
|
|
2536
|
+
}
|
|
2537
|
+
const rezultat = { text: text.replace(/\s+/g, " ").trim(), classes };
|
|
2538
|
+
if (NORMALIZIRANO.size > 60000)
|
|
2539
|
+
NORMALIZIRANO.clear();
|
|
2540
|
+
NORMALIZIRANO.set(naziv, rezultat);
|
|
2541
|
+
return rezultat;
|
|
2542
|
+
}
|
|
2028
2543
|
function kljuc(beseda) {
|
|
2029
2544
|
return beseda.toLowerCase().normalize("NFD").replace(/[\u0300-\u036f]/g, "").replace(/[^a-z0-9]/g, "");
|
|
2030
2545
|
}
|
|
@@ -2054,8 +2569,16 @@ function prestaneVratar(besedePoizvedbe, besedeKandidata) {
|
|
|
2054
2569
|
}
|
|
2055
2570
|
function oceniPar(poizvedba, kandidat, nastavitve = {}, razredi) {
|
|
2056
2571
|
const n = { ...PRIVZETO, ...nastavitve };
|
|
2057
|
-
const
|
|
2058
|
-
const
|
|
2572
|
+
const qNorm = normalizirajNaziv(poizvedba);
|
|
2573
|
+
const cNorm = normalizirajNaziv(kandidat);
|
|
2574
|
+
const q = import_cry_vetzdravila.razcleniNaziv(qNorm.text);
|
|
2575
|
+
const c = import_cry_vetzdravila.razcleniNaziv(cNorm.text);
|
|
2576
|
+
const qSurov = import_cry_vetzdravila.razcleniNaziv(poizvedba);
|
|
2577
|
+
const cSurov = import_cry_vetzdravila.razcleniNaziv(kandidat);
|
|
2578
|
+
const razrediSkupni = {
|
|
2579
|
+
poizvedba: { ...qNorm.classes, ...razredi?.poizvedba ?? {} },
|
|
2580
|
+
kandidat: { ...cNorm.classes, ...razredi?.kandidat ?? {} }
|
|
2581
|
+
};
|
|
2059
2582
|
const prazna = {
|
|
2060
2583
|
ocena: 0,
|
|
2061
2584
|
sprejeto: false,
|
|
@@ -2067,52 +2590,85 @@ function oceniPar(poizvedba, kandidat, nastavitve = {}, razredi) {
|
|
|
2067
2590
|
};
|
|
2068
2591
|
if (!prestaneVratar(q.besede, c.besede))
|
|
2069
2592
|
return prazna;
|
|
2070
|
-
const
|
|
2071
|
-
const
|
|
2072
|
-
|
|
2073
|
-
|
|
2074
|
-
|
|
2075
|
-
|
|
2076
|
-
|
|
2077
|
-
|
|
2078
|
-
|
|
2079
|
-
|
|
2080
|
-
|
|
2081
|
-
|
|
2082
|
-
|
|
2083
|
-
|
|
2084
|
-
|
|
2085
|
-
|
|
2086
|
-
|
|
2087
|
-
|
|
2088
|
-
|
|
2089
|
-
|
|
2090
|
-
|
|
2091
|
-
|
|
2092
|
-
|
|
2093
|
-
|
|
2094
|
-
|
|
2095
|
-
|
|
2096
|
-
|
|
2097
|
-
|
|
2098
|
-
|
|
2099
|
-
|
|
2100
|
-
|
|
2101
|
-
|
|
2102
|
-
|
|
2593
|
+
const vrednostiRazredov = (m) => Object.values(m).flat().map((v) => String(v).toLowerCase()).filter((v) => v.length > 0);
|
|
2594
|
+
const qSurovTok = [
|
|
2595
|
+
...new Set([
|
|
2596
|
+
...[...qSurov.besede, ...qSurov.zivalskeVrste, ...qSurov.dozirneOblike].map((t) => t.toLowerCase()),
|
|
2597
|
+
...vrednostiRazredov(razrediSkupni["poizvedba"] ?? {})
|
|
2598
|
+
])
|
|
2599
|
+
];
|
|
2600
|
+
const cSurovTok = [
|
|
2601
|
+
...new Set([
|
|
2602
|
+
...[...cSurov.besede, ...cSurov.zivalskeVrste, ...cSurov.dozirneOblike].map((t) => t.toLowerCase()),
|
|
2603
|
+
...vrednostiRazredov(razrediSkupni["kandidat"] ?? {})
|
|
2604
|
+
])
|
|
2605
|
+
];
|
|
2606
|
+
const qTok = [
|
|
2607
|
+
...new Set([
|
|
2608
|
+
...[...q.besede, ...q.zivalskeVrste, ...q.dozirneOblike].map((t) => t.toLowerCase()),
|
|
2609
|
+
...vrednostiRazredov(razrediSkupni["poizvedba"] ?? {})
|
|
2610
|
+
])
|
|
2611
|
+
];
|
|
2612
|
+
const cTok = [
|
|
2613
|
+
...new Set([
|
|
2614
|
+
...[...c.besede, ...c.zivalskeVrste, ...c.dozirneOblike].map((t) => t.toLowerCase()),
|
|
2615
|
+
...vrednostiRazredov(razrediSkupni["kandidat"] ?? {})
|
|
2616
|
+
])
|
|
2617
|
+
];
|
|
2618
|
+
const izracunajPokritost = (qZetoni, cZetoni) => {
|
|
2619
|
+
const qStevci = new Map;
|
|
2620
|
+
for (const t of qZetoni)
|
|
2621
|
+
qStevci.set(t, (qStevci.get(t) ?? 0) + 1);
|
|
2622
|
+
const cStevci = new Map;
|
|
2623
|
+
for (const t of cZetoni)
|
|
2624
|
+
cStevci.set(t, (cStevci.get(t) ?? 0) + 1);
|
|
2625
|
+
const porabljeno = new Map;
|
|
2626
|
+
let ujemajoce = 0;
|
|
2627
|
+
let ujemajoceCele = 0;
|
|
2628
|
+
const skupne2 = [];
|
|
2629
|
+
for (const [qZeton, kolikoQ] of qStevci) {
|
|
2630
|
+
let potrebnih = kolikoQ;
|
|
2631
|
+
for (const [cZeton, kolikoC] of cStevci) {
|
|
2632
|
+
if (potrebnih === 0)
|
|
2633
|
+
break;
|
|
2634
|
+
const prostih = kolikoC - (porabljeno.get(cZeton) ?? 0);
|
|
2635
|
+
if (prostih <= 0)
|
|
2636
|
+
continue;
|
|
2637
|
+
const qKljuc = kljuc(qZeton);
|
|
2638
|
+
const cKljuc = kljuc(cZeton);
|
|
2639
|
+
const cela = qKljuc === cKljuc;
|
|
2640
|
+
const predpona = !cela && (cKljuc.startsWith(qKljuc) || qKljuc.startsWith(cKljuc));
|
|
2641
|
+
const razmerje = Math.min(qKljuc.length, cKljuc.length) / Math.max(qKljuc.length, cKljuc.length);
|
|
2642
|
+
if (!cela && !(predpona && razmerje >= n.predponaDelez))
|
|
2643
|
+
continue;
|
|
2644
|
+
const vzem = Math.min(potrebnih, prostih);
|
|
2645
|
+
porabljeno.set(cZeton, (porabljeno.get(cZeton) ?? 0) + vzem);
|
|
2646
|
+
ujemajoce += vzem;
|
|
2647
|
+
if (cela)
|
|
2648
|
+
ujemajoceCele += vzem;
|
|
2649
|
+
if (!skupne2.includes(qZeton))
|
|
2650
|
+
skupne2.push(qZeton);
|
|
2651
|
+
potrebnih -= vzem;
|
|
2652
|
+
}
|
|
2103
2653
|
}
|
|
2104
|
-
|
|
2105
|
-
|
|
2106
|
-
|
|
2107
|
-
|
|
2108
|
-
|
|
2109
|
-
|
|
2110
|
-
|
|
2654
|
+
const pokritostKandidata2 = cZetoni.length ? ujemajoce / cZetoni.length : 0;
|
|
2655
|
+
const pokritostPoizvedbe2 = qZetoni.length ? ujemajoce / qZetoni.length : 0;
|
|
2656
|
+
const dovoljDolg = [...porabljeno.keys()].some((t) => kljuc(t).length >= 5);
|
|
2657
|
+
const popolno = pokritostKandidata2 === 1 && pokritostPoizvedbe2 === 1;
|
|
2658
|
+
const ok = ujemajoce >= 1 && pokritostKandidata2 >= n.pokritostKandidata && pokritostPoizvedbe2 >= n.pokritostPoizvedbe && (popolno || ujemajoceCele >= 2 || dovoljDolg);
|
|
2659
|
+
return { ok, pokritostKandidata: pokritostKandidata2, pokritostPoizvedbe: pokritostPoizvedbe2, skupne: skupne2, nasprotja: [] };
|
|
2660
|
+
};
|
|
2661
|
+
const kanonicno = izracunajPokritost(qTok, cTok);
|
|
2662
|
+
const surovo = izracunajPokritost(qSurovTok, cSurovTok);
|
|
2663
|
+
const izbrano = kanonicno.ok || kanonicno.pokritostKandidata >= surovo.pokritostKandidata ? kanonicno : surovo;
|
|
2664
|
+
const { pokritostKandidata, pokritostPoizvedbe, skupne } = izbrano;
|
|
2665
|
+
const pokritostOk = kanonicno.ok || surovo.ok;
|
|
2666
|
+
let ocena = Math.max(import_cry_vetzdravila.oceniPodobnost(q, c).ocena, import_cry_vetzdravila.oceniPodobnost(qSurov, cSurov).ocena);
|
|
2111
2667
|
const nasprotja = [];
|
|
2112
|
-
const kljuci = ["razpon", "vrsta", "kolicina", "pakiranje", "velikost", "pantheon"];
|
|
2668
|
+
const kljuci = ["razpon", "vrsta", "kolicina", "pakiranje", "velikost", "starost", "pantheon"];
|
|
2113
2669
|
for (const kljuc2 of kljuci) {
|
|
2114
|
-
const a = kotSeznam(
|
|
2115
|
-
const b = kotSeznam(
|
|
2670
|
+
const a = kotSeznam(razrediSkupni["poizvedba"]?.[kljuc2]);
|
|
2671
|
+
const b = kotSeznam(razrediSkupni["kandidat"]?.[kljuc2]);
|
|
2116
2672
|
if (staVNasprotju(a, b)) {
|
|
2117
2673
|
ocena -= KAZEN[kljuc2] ?? 0;
|
|
2118
2674
|
nasprotja.push(`${kljuc2}: ${a.join("/")} ≠ ${b.join("/")}`);
|
|
@@ -2120,8 +2676,9 @@ function oceniPar(poizvedba, kandidat, nastavitve = {}, razredi) {
|
|
|
2120
2676
|
ocena += BONUS[kljuc2] ?? 0;
|
|
2121
2677
|
}
|
|
2122
2678
|
}
|
|
2123
|
-
const
|
|
2124
|
-
const
|
|
2679
|
+
const veto = nasprotja.some((n2) => VETO_RAZREDI.has(n2.split(":")[0] ?? ""));
|
|
2680
|
+
const sprejeto = pokritostOk && !veto && ocena >= n.minOcena;
|
|
2681
|
+
const razlog = sprejeto ? `pokritost kandidata ${Math.round(pokritostKandidata * 100)} %, poizvedbe ${Math.round(pokritostPoizvedbe * 100)} %` + (skupne.length ? `; skupne besede: ${skupne.slice(0, 5).join(", ")}` : "") + (nasprotja.length ? `; nasprotja: ${nasprotja.join("; ")}` : "") : veto ? `nasprotje v razredu (${nasprotja.join("; ")})` : `pokritost prenizka (kandidat ${Math.round(pokritostKandidata * 100)} %, poizvedba ${Math.round(pokritostPoizvedbe * 100)} %)`;
|
|
2125
2682
|
return { ocena, sprejeto, razlog, pokritostKandidata, pokritostPoizvedbe, skupneBesede: skupne.slice(0, 5), nasprotja };
|
|
2126
2683
|
}
|
|
2127
2684
|
// src/common/numeric/scoring.ts
|