Skip to content

Soupis konfiguračních parametrů

smallcubes edited this page Jan 29, 2024 · 35 revisions

Konfigurace

Pro aplikaci existuje jeden konfigurační soubor umístěný v adresáři ~.sdnnt/config.json. Struktura souboru je následující.

  1. Blok pro klienta - řídí chování klientské aplikace
  2. Blok určený pro stranu serveru - řídí chování serverovské části aplikace
{
  "client": {}
  "server": {} 
}

Klientská část

Řídí zobrazení / nezobrazení částí aplikace. Jednotlivé položky jsou následující:

{
  "client": {
     // Řídí zobrazení přihlašovacího menu. Buď pouze jednoduché přihlášení nebo možnost výběru (jednoduché nebo EduID) 
     "simplelogin": true | false
     // Počet položek v žádosti, po tomto limitu se objeví uživateli hláška 
     "maximumItemInRequest":60,
     // Konfigurace záložek
     "homeTabs": ["about", "news", "readers", "authors",  "libraries", "api"],
     // Zobrazení odkazu do báze DNT
     "dntSetAlpehLinks": true |  false,
     // Maximální počet záznamů v rule notifikaci 
     "numberOfItemsInRulenotification": 11000,
     // Maximální počet rule notifikací
     "numberOfRuleBasedNotifications": 10,
     // application logo - url to application logo
     "logo": "assets/img/logo-sdnnt-blue.png",

     // zobrazované identifikátory v tabulce indentifikátorů 
     "identifiers": ["015a", "020a", "022a"],
     // povolené třídění 
     "sorts":{
       // výsledky hledání  
       "sort": [
         {"field": "score", "dir": "desc"},
         {"field": "title_sort", "dir": "asc"},
         {"field": "title_sort", "dir": "desc"},
         {"field": "date1_int", "dir": "asc"},
         {"field": "date1_int", "dir": "desc"},
         {"field": "datestamp", "dir": "asc"},
         {"field": "datestamp", "dir": "desc"}
       ],
       // možnosti tříděni u kurátora a hlavního kurátora
      "sort_account": [
         {"field": "deadline", "dir": "asc"},
         {"field": "deadline", "dir": "desc"},
         {"field": "priority", "dir": "asc"},
         {"field": "priority", "dir": "desc"},
         {"field": "datum_zadani", "dir": "asc"},
         {"field": "datum_zadani", "dir": "desc"},
         {"field": "datum_vyrizeni", "dir": "asc"},
         {"field": "datum_vyrizeni", "dir": "desc"}
      ],
      // možnosti třídění u běžného uživatele
      "user_sort_account": [
         {"field": "datum_zadani", "dir": "asc"},
         {"field": "datum_zadani", "dir": "desc"},
         {"field": "datum_vyrizeni", "dir": "asc"},
         {"field": "datum_vyrizeni", "dir": "desc"}
      ]
    },
    // Nastavení karet na úvodní obrazovce
    "homeCards": [
       {"field": "A", "type": "stav", "visible": true},
       {"field": "N", "type": "stav", "visible": true},
       {"field": "PA", "type": "stav", "visible": true},
       {"field": "NL", "type": "stav", "visible": false},
       {"field": "dnnto", "type": "licence", "visible": true},
       {"field": "dnntt", "type": "licence", "visible": true}
    ]
  }
}

Serverová část

{
  // Adresa na solr
  "solr.host": "solr.host.address",
  // Externí konfigurace pro řízení pro cookies - Použitá komponenta https://github.com/orestbida/cookieconsent
  "cookieconsent-init_cs": "/<path_to_config>/cookie.js",
  "cookieconsent-init_en": "/<path_to_config>/cookie.js",

	"server": {
	  // Maximální položek v žádosti přes API
          "api":{
	      "maximumItemInRequest":2000		
         },


  // Řízení harvestovacích procedur
  "OAIHavest": {
       // Adresa OAI  
       "url": "http://aleph.nkp.cz/OAI",
        // Pocet opakovani
	"numrepeat": 15,
	// Cekani mezi opakováními
        "seconds" : 10,
         "results":{
           "SKC_1": "request" | "state",  // konfigurace toho jak maji koncit pripady následníků "request" = žádost, "state" - rovnou změna stavu
           "SKC_2": "request" | "state",
           "SKC_3": "request" | "state",
           "SKC_4a": "request" | "state",
           "SKC_4b": "request" | "state"
                        }
   },
   // Přihlašovací link na shibboleth nebo wayf
   "shibiplink":"shib_login_callback?shib=default",
   // Logout link  
   "shiblogoutlink":"shiblogoutlink":"https://sp./Shibboleth.sso/Logout?return=https://sdnnt.nkp.cz",
   // Konfigurace institucí
   "institutions":[
	{ 
          // Akronym instituce
	  "acronym":"MZK",
          // Plne jmeno
	  "name":"Moravska zemska knihovna"
	}
    ],
    // Konfigurace pro mailový server
     "mail": {
	  "from.user": "[email protected]",
	  "from.name": "SDNNT Admin user",
	  "smtp.user": "smtp@user",
	  "smtp.pass": "smtp@pass",
	  "smtp.host" : "smtp.adddress",
	  "smtp.auth": true,
	  "smtp.starttls.enable": true,
	  "smtp.port":587
     },
     // Konfigurace mailů pro registraci uživatelů 
     "registration": {
	  // Předmět
          "subject": "Registrace uzivatele " ,
	  // Zda se posílá čistý plain text či html 
          "content.html": true
      },
      // Mail při resetu hesla, admin akce
      "passwordreset": {
	 "subject": "Reset hesla" ,
	  "content.html": true
       },
       // Mail při resetu hesla - uživatelská akce
       "resetlink": {
	  "subject": "Zadost o resetovani hesla" ,
	   "content.html": true
        },
        // Notifikace 
        "notificationemail": {
	   "subject": "Notifikace o zmene stavu" ,
	   "content.html": true
        },
        
        // Dodatecna konfigurace pro granularitu  
        "granularity":{
	   "public_license": 1912            // od verejneho roku jsou pridelovany licence
	   "se":{                            // aktuálně se rozdělení děl na p/np řídí dle pole: 310 (MARC) 
		"p": {                       // pravá periodika = vychází 1x ročně nebo nepravidelně
			"dnnto_dnnto":2012   // rozhodny rok pro pridelovani licence dnnto - pouze prava periodika, pro záznam s licencí DNNTO 
		},
		"np":{                       // nepravá periodika = vychází 2x ročně nebo víc
			"dnnto_dnnto":2002,  // rozhodny rok pro pridelovani licence dnnto - pouze neprava periodika, pro záznam s licencí DNNTO 
			"dnnto_dnntt":2007,  // rozhodny rok pro pridelovani licence dnntt - pouze neprava periodik, pro záznam s licencí DNNTO 
			"dnnto_dnntt_enabled":true,  // priznak, ktery rozhoduje zda ma pridelovat dnntt licence, pro záznam s licencí DNNTO 
					
			"dnntt_dnntt": 2007  // rozhodny rok pro pridelovani licence dnntt pokud titul ma licenci dnttt, pro záznam s licencí DNNTT
		}
	   },
	   "bk":{
		"dnnto_dnnto":2002,          // rozhodny rok pro pridelovani licence dnnto, pro záznam s licencí DNNTO
		"dnnto_dnntt":2007,          // rozhodny rok pro pridelovani licence dnntt, pro záznam s licencí DNNTO
		"dnnto_dnntt_enabled":true,  // priznak, zda se ma pridelovat licence dnntt, pro záznam s licencí DNNTO

		"dnntt_dnntt":2002           // rozhodny rok pro pridelovani licence dnntt, pro záznam s licencí DNNTT
	   },
	   "x_state":{                       // prebirani priznaku public/private (v K5) pro jednotlive knihovny
		"nkp":true,
		"mzk":true,
		"svkhk":true,
		"knav":false
	   } 
        },



        // Konfigurace pouzivana v procesech, ktere se dotazuji na krameria
        //  1 - Proces ziskani granularity  
        //  2-  Proces generovani PXN zadosti - kontrola volnych del 
        "check_kramerius":{
               "buffersize": 98, //maximalni pocet soubezne kontrolovanych del, kontrola probiha oproti Kramerius endpoint ~/search 

                 urls":{
                        // regularni vyrazy reprezentuji prefix digitalni knihovny 
			"https?://ndk.cz/.*":{
				"description":"Narodni digitalni knihovna NKP",  // popis digitalni knihovny 
				"api":"https://kramerius5.nkp.cz/search",  //api endpoint 
				"client":"https://ndk.cz/uuid/{0}", // sablona pro vyrendrovani linky do ui
				"acronym":"nkp", // akronym pro digitalni knihovnu - odpovida zkratce uvedene v registru krameriu 
				"sigla":"ABA000", // SIGLA svazana s digitalni knihovnou - odpovida zkratce uvedene v registru krameriu
				"skip": false // true - pokud se ma link pri zpracovavani preskocit 
			},"https?://kramerius.*.nkp.cz.*":{ // alternativni linky pro nkp
				"description":"Narodni knihovna praha NKP",
				"api":"https://kramerius5.nkp.cz/search",
				"client":"https://ndk.cz/uuid/{0}",
				"acronym":"nkp",
				"sigla":"ABA000",
				"skip": false
			},
                       ....
               }

          },
          // Konfigurace workflow 
          "workflow" :{
             // eskalace      
	     "escalation" :{
	           // Eskalace pro žádosti typu VNZ
                   "VNZ" : {
			"value": 1,
			"unit": "day"
		    },
                    // Eskalace pro žádosti typu VNL
	            "VNL" : {
				"value": 1,
				"unit": "day"
		     },
                     // Eskalace pro žádosti typu NZN  
		     "NZN" : {
			 "value": 1,
			 "unit": "day"
			 }
		       },
                       // Periody 
		       "periods": {
                                // Zda se má přepnout do debug modu a umožnit konfigurovat periody mezi přepnutím žádostí  
				"debug": true | false
                                 // konfigurace nzn žádosti a lhůty pro vyřízení, konfigurují se pracovní dny 
                                "period_nzn_0_5wd": {
                                    // 5 pracovních dnů 
                                    "value": 5
                                 },
                                 // konfigurace nzn žádosti a přenutí po 6 měsících
                                 "period_nzn_2_6m" : {
                                    // 6 kalendářních měsíců 
                                    "value": 6
                                 },
                                 // definuje hranici pro překlopení děl NZN 
                                 "period_nzn_1_12_18" : {
					// Definuje seznam měsíců které spadnou do zimního období. 
                                        // Prní den následujícího měsíce dojde k překlopení t.j.  - 1.3 
                                        "winter": "9,10,11,12,1,2",
                                        // Definuje seznam měsíců pro které platí letní odbdobí 
                                        // První den následujícího měsíce dojde k překlopení t.j - 1.9.
					"summer":"3,4,5,6,7,8"

                                 },
                                 // Konfigurace pro žádost typu VN, 28 kalendářních dnů
                                 "period_vn_0_28d": {
                                    // 28 kalendářních dnů
                                    "value":28
                                 },
                                 // Konfigurace pro žádost typu VNL, 5 pracovních dnů
                                 "period_vln_0_5wd": {
                                    // 5 pracovních dnů
                                    "value":5
                                  },

                                 // Konfigurace pro žádost typu VNL, 10 kalendářních dnů
                                 "period_vnl_1_10d": {
                                    // 10 kalendářních dnů
                                    "value":10
                                  },

                                 // Konfigurace pro žádost typu VNL, 18 měsíců
                                 "period_vln_2_18m": {
                                    // 18 měsíců
                                    "value":18
                                  },
                                  // Konfigurace pro žádost typu VNL, 5 pracovních dnů
                                  "period_vln_3_5wd": {
                                    "value":5
                                  },

                                  // Konfigurace pro žádosti typu PXN 
                                  "period_px_0_5wd" : {
                                    // 5 pracovních dnů
                                    "value":5
                                   } 
                                  // Konfigurace pro žádosti typu DXN 
                                  "period_dx_0_5wd" : {
                                    // 5 pracovních dnů
                                    "value":5
                                   },
                                   // konfigurace svátků pro správný výpočet pracovních dnů  (každý den mimo sobotu, neděli a svétek definovaný v konfiguraci) 
                                   "holidays":[
                                       {
                                           "day": 1
                                           "month":1  
                                       }, 
                                       {
                                           "day": 1
                                           "month":5  
                                       } 
                                      .......
                                    ]
 
  
			}
		  }
            },
            // Nastavení jobů
            "jobs": {
                 // Načtení granularity z kramériů

                  
                 // Nastavení pro spouštění workflow      
		 "worklow": {
                         "logger":"logger_name",  // Jméno loggeru 
			 "type": "workflow",
                          // Qartz pattern - http://www.quartz-scheduler.org/documentation/quartz-2.3.0/tutorials/crontrigger.html#format
			 "cron": "quartz_pattern"
		  },


                  // kontrola typu a mista vydani
                  "parovaní_kontrola_typu": {
                                "type": "skc_type_check",
                                "cron": "quartz_pattern",
                                "logger": "update_kontrola",
                                "results":{
                                        "SKC_1": "request" | "state",
                                        "SKC_2": "request" | "state",
                                        "SKC_3": "request" | "state",
                                        "SKC_4a": "request" | "state",
                                        "SKC_4b": "request | "state""
                                }
                   },

                  // Doplneni granularity   
		 "kontrola_granularity": {
			type": "refresh_granularities",
			"logger":"refresh_granularities",
			"cron": "quartz_pattern"
		 },
                  // Nastavenení stavů, dplňuje pouze ty části granularity u kterých není vyplněný stav 
		 "kontrola_granularity": {
			type": "setstates_granularities",
			"logger":"setstates_granularities",
			"cron": "quartz_pattern"
		 },

		  // Prochazeni pripadu SKC_4 a nachazeni nasledniku
	          SKC_4:{
                         "logger":"logger_name",  // Jméno loggeru 
                         "type": "skc_4",
                         "cron": "quartz_pattern",
                         "results":{
                                        "SKC_1": "request"  | "state",
                                        "SKC_2": "request"  | "state",
                                        "SKC_3": "request"  | "state",
                                        "SKC_4a": "request" | "state",
                                        "SKC_4b": "request" | "state"
                         }
                  },

                  // Kontextová informace z krameria
		  "krameriove_kontextova_informace": {
                         "logger":"logger_name",  // Jméno loggeru 
                         "type":"kramerius_px_check",
                          "cron": "quartz_pattern",
                           // Blok iterace, umožňuje definovat přes co se bude iterovat při kontrole  
                           "iteration": {
                                 // Rozsah let pres ktery se ma iterovat
                                 "date_range": "[* TO 2020]",
                                 // stavy pres ktere se ma iterovat
                                 "states":["A","PA"],
 
                            },
                           // Blok pro výstup - umožňuje definovat výstupní akci  
                           "results": {
                                 "ctx": true,  // doplni kontextovou informaci
                                 "state":"A"   // zmeni stav
                           }
                    },
                 
                    // Importni proces - nové záznamy 
                    "euipo_iocp": {
                            "type": "euipo_iocp",
                            "cron": "quartzpattern",
                            "iteration":{
                                    "maxbkyear":2023,  // maximalni rok pokud se ho podarilo naparsovat - jedna se o cislo 
                                    "nonparsabledates":[ "1.*", "200.*"] // regularni vyrazy pokud datum neni definovany cislem
                            },
                            "results": {
                                    "folder": "/data/euipo" // kde se mají data uložit
                            }
                    },
                    // Update proces - změny, které je nutné provést v EUIPO OoC
                    "euipo_uocp": {
                            "type": "euipo_uocp",
                            "cron": "quartzpattern"
                    },

                   // Příklad hromadných posunů stavu a licencí
	           // Dokumenty pro vyrazeni - formát BK 		
 	           // Vytvoření výběru (výber se objeví na webu aplikace pro kontrolu)
                   "OznaceniPosunStavu2023_BK_N": {
	                    "type": "curator_action",
	                    "cron": "quartz_pattern",
	                    "iteration":{
			            "filters":[  "fmt:BK",  "date1_int:[2004 TO *]",  "kuratorstav:(A OR PA)", "license:dnntt"]
                             },
	                    "results":{
			            "action":"set",
			            "name":"PosunStavu2023/N"
		            }
	            },
                    // Posun stavů pro vytvořený výběr
                    "PosunutiStavu2023_N":{
	                    "type": "setstate_curator_action",
	                    "cron": "quartzpattern",
	                    "iteration":{
			            "name":"PosunStavu2023/N"
	                    },
	                    "results":{
			            "curatorstate":"N"
			            // nebo "license": "dnnto"
	                    }
	             },



                   // Notifikace pro den   
	           "notifikace_den": {
                         "logger":"logger_name",  // Jméno loggeru 
			"type": "notifications",
			"interval": "den",
			"cron": "quartz_pattern"
		   },
                   // Notifikace pro tyden   
		   "notifikace_tyden": {
                         "logger":"logger_name",  // Jméno loggeru 
			"type": "notifications",
			 "interval": "tyden",
			  "cron": "quartz_pattern"
		   },
                   // Notifikace mesic
		   "notifikace_mesic": {
                         "logger":"logger_name",  // Jméno loggeru 
			  "type": "notifications",
			  "interval": "mesic",
			  "cron": "quartz_pattern"
			}
		  }

          },
          
          // Při dotahování granularity a rozhodování o licencích ročníků periodik se bere v potaz frekvence vydávání
          // řízeno polem marc_008 pozice 18 a 19. 
          "granularity.se.00818":"r",
          "granularity.se.00819":"b,c,d,e,f,j,q,t,s,m,w,z",

          // konfigurace dohledatelnosti záznamů, řídí se markovým polem 008. Pokud je uvedeno rozmezí, rozhodující je horní mez
          "search": {
              "fromYear": 1910 // Spodní mez od které se mají  
              "yearsBK": 12 // Počet roků od aktuálního roku - Knihy
              "yearsSE": 12  // Počet roků od aktuálního roku - Periodika
          }  

}